LFS 7.7を構築する [Part 2 一時環境の構築準備編]

こんにちは。今回のテーマは『LFS 7.7を構築する [Part 2 一時環境の構築準備編]』です。本記事はLFS 7.7を構築する [Part 1 LFS概略とホストシステム選択編]の続きです。今回はパーティショニングから一時環境の構築一歩手前までを扱っています。公式のLFSbookでは2章から4章に相当すると思います。基本的にはLFSbookに沿って作業を進めていますが、一部前後している部分もあります。詳細は公式LFSbookをご覧ください


【目次】
パーティショニング
ファイルシステムの作成
ホストシステムのインストールと準備
LFS用パーティションのマウント
パッケージ群のダウンロード
準備作業の仕上げ
おまけ:作業再開用のスクリプト

パーティショニング

パーティショニングはシステムの外枠を作る重要な作業です。どんな環境を構築したいのかイメージして作業すると良いと思います。筆者の場合はホストシステムとLFSのデュアルブートとしてホストシステムのブートローダーでLFSを起動する設計としました。よって、/bootとswap用のパーティションをホストシステムとLFSで共有することになります。以下に筆者のパーティショニング例を示します。

sda        8:0    0    13G  0 disk 
├─sda1   8:1    0     1k  0 part
├─sda5   8:5    0   500K  0 part /boot    #/bootは共用
├─sda6   8:4    0     3G  0 part /        #Slackwareのルート
├─sda7   8:5    0  11.5G  0 part /mnt/lfs #LFSのルート
└─sda8   8:8    0     1G  0 part [SWAP]

この辺りはかなり好みが別れる部分だと思います。もしLFS構築後はホストシステムは削除する場合はLFSシステム側のブートローダーで起動することになりますので、LFS用のbootパーティションを用意したいと思う方も居るかも知れません。

ファイルシステムの作成

ホストとLFSのルートパーティションをはext4、/bootパーティションはext2としました。以下のコマンドでファイルシステムを作成していきます。

host# mkfs.ext2 /dev/sda5
host# mkfs.ext4 /dev/sda6
host# mkfs.ext4 /dev/sda7

スワップ領域も作成します。

host# mkswap /dev/sda8
host# swapon /dev/sda8

ホストシステムのインストールと準備

ホストシステムのインストール

今回はホストシステムとしてSlackwre14.1をインストールしました。Xorg等は入れずに、必要最低限のビルドが出来るCLI環境をインストールしました。Slackwareのインストールについてはコチラの記事を参考にしていただければと思います。

開発環境をインストールすることを忘れないで下さい。ビルドできなくなります。

ホストシステムの準備

インストールしたての状態ではGCC等のビルドの際にパッケージが足りずにエラーが出たので、以下に揚げたパッケージを追加でインストールしておきます。Slackpkgを使ってもWebからパッケージをダウンロードしてきてもOKです。

  1. glibc
  2. gmp
  3. libcroco
  4. libmpc
  5. libxml
  6. mpfr

LFS用パーティションのマウント

環境変数$LFSの設定

LFSbookでは頻繁に$LFSという環境変数を使用して設定を行います。以下のコマンドで設定をします。ホストシステムを起動する度に設定するのが面倒な場合は/root/.bashrcや/root/.bash_profileなどで設定してしまうと便利かも知れません。

host# export LFS=/mnt/lfs

パーティションのマウント

LFSのルートパーティションをマウントします。

host# mkdir -pv $LFS
host# mount -v -t ext4 /dev/sda7 $LFS

もし、/usr/を別パーティションとするなどの場合は以下のようにします。

host# $ mkdir -pv $LFS
host# $ mount -v -t ext4 /dev/sda7 $LFS
host# $ mkdir -pv $LFS/usr
host# $ mount -v -t ext4 /dev/<xxx> $LFS/usr

パッケージ群のダウンロード

ここではLFSで構築するためのパッケージのソースやパッチをダウンロードします。ソースは$LFS/sourceに置くことにします。

$LFS/sourceディレクトリの作成

まずはパッケージを保管するディレクトリを作成します。以下のコマンドを実行します。

host# mkdir -v $LFS/source
host# chmod -v a+wt $LFS/sources 

wget-listの入手

LFSではソースの一覧と入手先のURLが記されたwget-listファイルを提供しています。まずはこのファイルを入手します。(URLは2015年9月現在のものです)

host# cd $LFS/source
host# wget http://www.linuxfromscratch.org/lfs/downloads/stable/wget-list
host# wget http://www.linuxfromscratch.org/lfs/downloads/stable/md5sum

パッケージのダウンロード

LFSbook7.7日本語版には日本国内のサーバーからダウンロードできるようにwget-listに手を加える手法も記してありますが、今回はオリジナルのwget-listを用いて海外からダウンロードします。

root# cd $LFS/source
root# wget --input-file=wget-list --continue --directory-prefix=$LFS/sources 

ダウンロードしたパッケージのチェック

先ほどダウンロードしたパッケージのチェックを行います。

host# pushd $LFS/sources
host# md5sum -c md5sums
host# popd

準備作業の仕上げ

$LFS/toolsの作成

以下コマンドでディレクトリを作成します。

mkdir -v $LFS/tools
ln -sv $LFS/tools /

lFSユーザーの追加

host# groupadd lfs
host# useradd -s /bin/bash -g lfs -m -k /dev/null lfs
host# passwd lfs

ディレクトリの所有権を付与します。

host# chown -v lfs $LFS/tools
host# chown -v lfs $LFS/sources

lfsユーザーでログインします

host# su - lfs

.bash_profileと.bashrcファイルの作成

ホストシステムの影響を与えないように環境変数を設定します。

以下のコマンドで.bash_profileを作成します。

lfs# cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

以下のコマンドで.bashrcを作成します。

lfs# cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF

作成した.bash_profileを読み込みます。

lfs# source ~/.bash_profile

おまけ:作業再開用のスクリプト

LFS構築の作業は一日で終わらない場合も多く、数日に分けて行っていくことが多いと思います。作業を中断するとパーティションのマウントや環境変数の設定等、同じことを繰り返すこともあり、面倒に感じることもあります。自分なりにスクリプトにまとめておくとホストシステムからスクリプトを走らせるだけで作業が始められます。

作業再開用のスクリプトは特にLiveCDで作業をしている方に有効だと思います。今回はホストシステムをインストールしているのでスクリプトは短くて済んでいます。

参考までに筆者はLFSbook第5章までのスクリプトを載せておきます。ドライブ名等は適宜読み替えて下さい。

restart.sh

#!/bin/sh

export LFS=/mnt/lfs
mount /dev/sda7 $LFS
su - lfs

最後に

さて、LFSの作業はようやくスタートしました。ここから先は第五章に入りダウンロードしたパッケージをビルドしていく作業に入っていきます。GUIが使用できるシステムからホストシステムにSSH接続しておくと作業がスムーズに進むと思います。
【関連記事】
LFS 7.7を構築する [Part 1 LFS概略とホストシステム選択編]

Sponsored Link


4件のコメント

  • いつかはLFSに手に出すんだろうなーと思いながら、いつも拝見しておりました。まあ、ぼくには高度すぎて参考にもならないんですが、読み物として期待しております

    • go! kuro go!さん
      こんにちは。コメントと応援ありがとうございます。

      これからもシステムを構築したりカスタムする時の
      ワクワク感を伝えられるよう努力していきたいと思います。

      今後とも当ブログをよろしくお願いします。

  • 名前をgo! kuro go!ではなくgo kuro! にしておけばダブルミーニングになったのになあ、と後になって気づきましたorz

    ところで、LFSが一段落したら、いよいよlinuxディストリビューターデビューかなと睨んでるんですが、ご予定は?

    • go! kuro go!さん

      こんにちは。
      確かにダブルミーニングですね。労いのお言葉ありがとうございます。

      今はLiveCD作成などに興味を持ち遊んでおりまして
      「LFSベースの1CDディストロ出してしまおうか・・・」
      などと妄想していたので、鋭いコメントを頂いたと思います。

      ただ、今の所あくまで妄想止まりです。
      まだまだ知識も不足しており、
      メンテナンスに割ける時間も限られていますので・・・

      ディストリビューターデビュー、まだ道のりは遠そうです(笑)

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です