LFS(Linux From Scratch)に挑戦してみます。目的は、Linuxの起動シーケンスの理解です。
母艦環境は先にインストールしたDebian7.1(Wheezy)です。
基本的にLFS Bookに沿って進めて、実際の作業のみメモを残します。
まずは第4章の準備段階の完了までです。
<追伸>
入力するコマンドのコピペをする場合には、HTML版で行う。PDF版では行の終わりにゴミがついてしまうようで、複数行に渡る場合に正しく入力されません。
- パーティションの作成(2.2)
ディスクユーティリティでルートパーティションを作成。後でパーティションまるごと16GBのUSBメモリにいれることを考えて、とりあえず12GB。ファイルタイプはext4。パーティションは /dev/sda3
スワップはとりあえず作らない。 - ファイルシステムの生成(2.3)
$ sudo mke2fs -jv /dev/sda3 - ファイルシステムのマウント(2.4)
$ export LFS=/mnt/lfs
$ sudo mkdir -pv $LFS
$ sudo mount -v -t ext4 /dev/sda3 $LFS - ソースおよびパッチの保存場所を作成(3.1)
$ sudo mkdir -v $LFS/sources
$ sudo chmod -v a+wt $LFS/sources
ブラウザでSOURCEFORGE.JPのLFSブック日本語版のプロジェクトからwget-listを取得する。
以下の方法で wget-list を書き換えて、理研のサイトから引っ張ってくるよう書き換える。
$ mv wget-list{,.orig}
$ cat > wget-list-ja.sed << “EOF”
s|ftp\.gnu\.org/gnu/|ftp.riken.jp/GNU/gnu/|g
s|www\.kernel\.org/pub/linux/|ftp.riken.jp/Linux/kernel.org/linux/|g
s|www\.cpan\.org|ftp.riken.jp/lang/CPAN|g
s|ftp\.vim\.org|ftp.jp.vim.org|g
EOF
$ sed -f wget-list-ja.sed wget-list.orig > wget-list
$ rm wget-list-ja.sed - パッケージをダウンロードする(3.2)
$ wget -N -i wget-list -P $LFS/sources
$ wget -N -i wget-list.orig -P $LFS/sourcesパッケージをチェックする。$LFS/sourcesに以下のファイルを作成。
pushd $LFS/sources
md5sum -c md5sums
popdSOURCEFORGE.JPからmd5sumsファイルを持ってきて、$LFS/sources に置いて上記ファイルをスクリプトとして実行する。
実行するとzlib-1.2.7.tar.bz2 が存在しないと表示された。 - zlibをダウンロード
最新版のバージョンを調べると1.2.8となっていたので、wget-list、wget-list.orig、md5sums の zlib のファイル名を zlib-1.2.8.tar.xz に書き換えて再度ダウンロード&チェックを実施。 - パッチをダウンロード(3.3)
パッチのリストからwget用のファイルを作って、
$ wget -N -i wget-patch -P $LFS/sources
として取得・・・・と思ったら、wget-listには初めから入ってた・・・・orz - $LFS/toolsディレクトリの生成(4.2)
$ su
# mkdir -v $LFS/tools
# ln -sv $LFS/tools / - LFSユーザーの追加(4.3)
$ sudo groupadd lfs
$ sudo useradd -s /bin/bash -g lfs -m -k /dev/null lfs
$ sudo passwd lfs
$ sudo chown -v lfs $LFS/tools
$ sudo chown -v lfs $LFS/sources
$ su – lfs - LFSユーザーの環境設定
LFSユーザーでログイン
$ ssh lfs@localhost
$ cat > ~/.bash_profile << “EOF”
exec env -i HOME=$HOME TERM=$TERM PS1=’\u:\w\$ ‘ /bin/bash
EOF
$ 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
ユーザープロファイルの取り込み
source ~/.bash_profile