連載
» 2003年04月22日 00時00分 公開

LFSで作って学ぶLinuxの仕組み(4):LFS-3.3編完結! 設定ファイルの準備とLFSの起動 (1/3)

今回は最後の仕上げを行ってLFSを単独で起動させよう。必要最小限の設定ファイルを準備し、カーネルをコンパイルしてブートローダを設定すれば完成だ。(編集局)

[一志達也,@IT]

 これまで3回にわたって紹介してきたLFS(Linux From Scratch)の環境構築も、いよいよ大詰めを迎える。今回は、LFSを単独で起動するために必要な設定ファイル類を作成し、カーネルのコンパイルやLILO/GRUBの設定変更を行ってLFSが起動できるようにする。

 これがうまくいけば、ベースとなるディストリビューション環境から独立して、LFS-3.3が起動できるようになるというわけだ。

前回のおさらい

 第3回でも述べたが、LFS環境の構築作業を一気に行う必要はない。chrootしたとしても、ベース・ディストリビューションを起動してLFS用の/procファイルシステムをマウントし、chrootでルートディレクトリを切り替えれば作業を続けられる。前回の内容までで作業が中断している方のために、/procファイルシステムをマウントしてchrootするまでのコマンドを再度掲載しておこう。

# mount proc /mnt/lfs/proc -t proc
# cd /mnt/lfs ←/mnt/lfsにLFS用のパーティションをマウントしている場合
# chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM=$TERM /bin/bash 
--login

LFSのインストールのやり直し

 作業の途中で間違いに気付いたなど、何らかの理由で作業を始めからやり直したくなっても、それほど心配する必要はない。心配するべきなのは、やり直す作業が簡単になるよう、自分の足跡(ログ)を残してきたかどうかである。

 ここでいう「足跡(ログ)」は、何らかのプロセスが残してくれる、通常のログとは違う。作業をやり直すときに、その大半を自動で行えるように、あるいは間違いを発見しやすくするように、自分が行った作業(発行したコマンド)をテキストファイルに記録しておくことが重要だ。こうすれば、今回筆者が提供しているように、シェルスクリプトにして自動実行させることもできる。また、作業をやり直す際にタイプミスなどを回避することもできる。

 実は、筆者も本稿の執筆に際してLFSの再インストールを繰り返している。その過程で、前回紹介したスクリプトにミスを発見してしまった。それは、shadowのインストールの部分である。shadowに含まれるpwconvを用いた作業(後述)が、どうにもうまくいかない。その原因は簡単で、pwconvがあるべき場所になかったからである。この原因を追究すると、shadowのインストール作業に問題があった。

 LFS-BOOKの記述どおりに作業を行い、エラーが出ないのでOKとしてしまったが、甘かったようだ。深くおわびするとともに、訂正したスクリプトを再掲載させていただく。これに伴い、以前に公開したスクリプトも多少バージョンアップした(編注)。

スクリプト:script.txt
スクリプト:lfs-compile.sh
スクリプト:lfs-compile2.sh
スクリプト:root.sh

編注:これに伴い、第1〜3回の各ページからダウンロードできるスクリプトも最新版に差し替えてある。


 インストールをやり直すには、作業途中のLFSを破棄しなければならない。ベースとなるディストリビューションのrootユーザーになり、LFS用のボリュームのマウントポイント以下を削除する。

# rm -Rf /mnt/lfs/

 もし、/procをマウントしたままなのであれば、

# umount /mnt/lfs/proc

として、先にアンマウントしておこう(そうでないと、OS再起同時にエラーが起こる)。

 LFS用のマウントポイント以下を削除したら、また1から作業を始めればよい。

パスワードの暗号化とrootパスワードの設定

 前回までの作業が終わったら、LFS用のマウントポイントを(仮の)ルート・ディレクトリとし、ライブラリを動的に組み込むようにして必要なソフトウェアがインストールできていることになる。今回は、そのソフトウェアを使った作業と、OSとして独立するために必要な設定ファイルの作成を行う。

 ここからの作業は、今回新たに提供するスクリプト(lfs-compile3.sh)で行う。ただし、今回のスクリプトにはホスト名やデバイス(ハードディスク上のパーティション)などを指定する個所がある。これらは自分の環境に合わせて適宜変更してほしい。

スクリプト:lfs-compile3.sh

 lfs-compile3.shでまず行う作業が、パスワードの暗号化である。パスワードを暗号化しない場合は、/etc/passwdファイルにパスワードが格納される。当然そのまま格納されるわけではなく、暗号化(というよりは変換)される。しかし、このファイルは誰でも閲覧できるため、単純にエンコード(文字列変換)しただけでは危険だ。そこで、shadowに含まれるpwconvを用いて暗号化し、rootユーザー以外が閲覧できないファイルへと変換する(/etc/passwdのパスワード部分には「x」と記述される)。

 変換を行う場合は、以下のコマンドを発行する。

/usr/sbin/pwconv

 ただし、この作業を行ってパスワードを暗号化すると、パスワードの確認を必要とするプログラム(FTPやPOP3など)も暗号化パスワードに対応したものが必要となる。一般的に利用されているもので困ることはないと思うが、一般的でないプログラムを用いる場合は、少々注意が必要になるだろう。こうした事情もあるため、パスワードの暗号化は必須ではなく、あくまでも任意で行う作業と位置付けられている。

 パスワードを暗号化した場合もそうでない場合も、rootユーザーのパスワードを設定しよう。パスワードの設定は、通常のLinux/UNIXと同様、「passwd ユーザー名」としてpasswdコマンドを実行し、設定するパスワードを2回入力する。

passwd root
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。