CD-ROMだけで動作するオリジナルLinuxを作ろう |
||
YAMAMORI Takenori ●yamamori |
Linuxのkernel 2.4系にはpivot_rootという仕組みがあり, これによってrootファイルシステムそのものを取り替えてしまうことができます. これは,rootディレクトリを変更するという点ではchrootにも似ていますが, chrootとは違って一部のプロセスだけでなく,OS全体のrootファイルシステムが 根本的に変更されます.
pivot_rootを実行すると,以前のrootファイルシステムはpivot_rootコマンドの 第2引数で指定したディレクトリにマウントされた状態になります.これは, 本文の実行例では,旧rootであるCD-ROMが/mnt/tmpにマウントされた状態になります. この旧rootをumountするのには少しコツがいり,新rootにカレントディレクトリを 移動した状態で
exec /bin/sh < /dev/console > /dev/console 2>&1
のように実行し,旧root上にあった/dev/consoleを捨てて,新root上の/dev/consoleを 開きなおす必要があります.
なお,本システムでは,initrdのlinuxrcの中と,そのあと/pre-initスクリプトの 中の,計2回pivot_rootを行なっています.ちなみに1回目のlinuxrcの中の pivot_rootは,nashの組み込みコマンドとして実行されています.