2013年8月12日月曜日

LFSに挑戦1(準備段階)

LFS(Linux From Scratch)に挑戦してみます。目的は、Linuxの起動シーケンスの理解です。
母艦環境は先にインストールしたDebian7.1(Wheezy)です。
基本的にLFS Bookに沿って進めて、実際の作業のみメモを残します。
まずは第4章の準備段階の完了までです。
<追伸>
入力するコマンドのコピペをする場合には、HTML版で行う。PDF版では行の終わりにゴミがついてしまうようで、複数行に渡る場合に正しく入力されません。
  1. パーティションの作成(2.2)
    ディスクユーティリティでルートパーティションを作成。後でパーティションまるごと16GBのUSBメモリにいれることを考えて、とりあえず12GB。ファイルタイプはext4。パーティションは /dev/sda3
    スワップはとりあえず作らない。
  2. ファイルシステムの生成(2.3)
    $ sudo mke2fs -jv /dev/sda3
  3. ファイルシステムのマウント(2.4)
    $ export LFS=/mnt/lfs
    $ sudo mkdir -pv $LFS
    $ sudo mount -v -t ext4 /dev/sda3 $LFS
  4. ソースおよびパッチの保存場所を作成(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
  5. パッケージをダウンロードする(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 が存在しないと表示された。
  6. zlibをダウンロード
    最新版のバージョンを調べると1.2.8となっていたので、wget-list、wget-list.orig、md5sums の zlib のファイル名を zlib-1.2.8.tar.xz に書き換えて再度ダウンロード&チェックを実施。
  7. パッチをダウンロード(3.3)
    パッチのリストからwget用のファイルを作って、
    $ wget -N -i wget-patch -P $LFS/sources
    として取得・・・・と思ったら、wget-listには初めから入ってた・・・・orz
  8. $LFS/toolsディレクトリの生成(4.2)
    $ su
    # mkdir -v $LFS/tools
    # ln -sv $LFS/tools /
  9. 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
  10. 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

0 件のコメント: