diary/Kojima/2006-01-05
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[diary/Kojima]]
・initramfs
年明けくらいから initramfs 回りをあれこれいじって,何とか...
で SCSI や RAID 用のモジュールを組み込んで起動できるよう...
- initramfs は 2.4 カーネルまでの initrd に置き代わる機能...
ようにファイルシステムイメージを作らなくとも,必要なディ...
イルを cpio(cnew 形式 = -c or -H cnew オプションで指定) +...
今までインストーラを作る時は,
あらかじめ適当なサイズのファイルを用意→ファイル上にファイ...
作成→loopback でマウントしてファイルやスクリプトの操作→um...
イルシステムを圧縮
みたいな手順が必要だったが,これを一つのディレクトリに必...
# find . | cpio -c -o | gzip > newinitrd.gz
みたいに作れるのはかなり便利.
- カーネルパラメータの initrd オプションで指定して渡すこ...
カーネルに組み込んでしまうことも可能らしい.まだこの機能...
どういう風に使うことを想定しているのだろう?
- カーネルは起動後,initramfs があればそれを自動的にメモ...
rootfs としてマウントし init コマンドを実行する.init は ...
ンボリックリンクにすれば対話モードで起動するし,シェルス...
組み込みたいモジュールや実際のルートパーティションをマウ...
要な処理を行うことも可能
- 必要な処理を終えて実際のルートパーティションをマウント...
では pivot_root でルートファイルシステムを切り替えていた...
で switch_root という機能を使うことになる.
- initramfs 上では busybox(1.1 以降) + uClibc, nash(RH製...
行用 minimum shell),klibc(initramfs 用の glibc2 の最小サ...
3 つのツールが使えるらしい.busybox は switch_root が入っ...
1.1.0-pre1 としばらく格闘したが,このバージョンの busybox...
switch_root が機能しない模様.nash なら動くことを確認.kl...
ていない.
- 手元で試した init スクリプトはこんな感じ.fc4 の initrd...
ものを適当に切り貼り.fc4 の場合はコメントアウトしている...
を使って動的にデバイスファイルを作るが,Plamo の場合は in...
/dev 以下に必要なデバイスファイル(ディスク回り用中心でい...
用意しておく必要あり.あちこちに sleep が入っているのは動...
#!/bin/nash
mount -t proc /proc /proc
setquiet
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs /sys /sys
# echo Creating /dev
# mount -o mode=0755 -t tmpfs /dev /dev
# mknod /dev/console c 5 1
# mknod /dev/null c 1 3
# mknod /dev/zero c 1 5
# mkdir /dev/pts
# mkdir /dev/shm
# echo Starting udev
# /sbin/udevstart
# echo -n "/sbin/hotplug" > /proc/sys/kernel/hotplug
echo "Loading SCSI modules"
insmod /lib/scsi_mod.ko
insmod /lib/sd_mod.ko
insmod /lib/mptbase.ko
insmod /lib/mptscsih.ko
sleep 5
echo "Loading md modules"
insmod /lib/md.ko
insmod /lib/raid1.ko
mdadm -A /dev/md0
sleep 10
echo "Loading LVM modules"
insmod /lib/dm-mod.ko
mkdmnod
sleep 30
lvm vgscan --ignorelockingfailure
lvchange -ay --ignorelockingfailure /dev/MyLV/lvol0
sleep 30
echo Creating root device
mkrootdev /dev/root
echo Mounting root filesystem
mount -o defaults --ro -t reiserfs /dev/root /sysroot
sleep 10
echo Switching to new root
switchroot --movedev /sysroot
mkdmnod とか mkrootdev,switchroot は nash が提供している...
イチ何をどう操作しているのか分らない.man ページくらいし...
のでソースを見るしかないかな.
initramfs の正式な解説文書も 2.6.15 になって
ようやく Documents/filesytem に入った(これがあったのでイ...
ところだから,ある意味 black magic な世界なのかも知れん..
終了行:
[[diary/Kojima]]
・initramfs
年明けくらいから initramfs 回りをあれこれいじって,何とか...
で SCSI や RAID 用のモジュールを組み込んで起動できるよう...
- initramfs は 2.4 カーネルまでの initrd に置き代わる機能...
ようにファイルシステムイメージを作らなくとも,必要なディ...
イルを cpio(cnew 形式 = -c or -H cnew オプションで指定) +...
今までインストーラを作る時は,
あらかじめ適当なサイズのファイルを用意→ファイル上にファイ...
作成→loopback でマウントしてファイルやスクリプトの操作→um...
イルシステムを圧縮
みたいな手順が必要だったが,これを一つのディレクトリに必...
# find . | cpio -c -o | gzip > newinitrd.gz
みたいに作れるのはかなり便利.
- カーネルパラメータの initrd オプションで指定して渡すこ...
カーネルに組み込んでしまうことも可能らしい.まだこの機能...
どういう風に使うことを想定しているのだろう?
- カーネルは起動後,initramfs があればそれを自動的にメモ...
rootfs としてマウントし init コマンドを実行する.init は ...
ンボリックリンクにすれば対話モードで起動するし,シェルス...
組み込みたいモジュールや実際のルートパーティションをマウ...
要な処理を行うことも可能
- 必要な処理を終えて実際のルートパーティションをマウント...
では pivot_root でルートファイルシステムを切り替えていた...
で switch_root という機能を使うことになる.
- initramfs 上では busybox(1.1 以降) + uClibc, nash(RH製...
行用 minimum shell),klibc(initramfs 用の glibc2 の最小サ...
3 つのツールが使えるらしい.busybox は switch_root が入っ...
1.1.0-pre1 としばらく格闘したが,このバージョンの busybox...
switch_root が機能しない模様.nash なら動くことを確認.kl...
ていない.
- 手元で試した init スクリプトはこんな感じ.fc4 の initrd...
ものを適当に切り貼り.fc4 の場合はコメントアウトしている...
を使って動的にデバイスファイルを作るが,Plamo の場合は in...
/dev 以下に必要なデバイスファイル(ディスク回り用中心でい...
用意しておく必要あり.あちこちに sleep が入っているのは動...
#!/bin/nash
mount -t proc /proc /proc
setquiet
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs /sys /sys
# echo Creating /dev
# mount -o mode=0755 -t tmpfs /dev /dev
# mknod /dev/console c 5 1
# mknod /dev/null c 1 3
# mknod /dev/zero c 1 5
# mkdir /dev/pts
# mkdir /dev/shm
# echo Starting udev
# /sbin/udevstart
# echo -n "/sbin/hotplug" > /proc/sys/kernel/hotplug
echo "Loading SCSI modules"
insmod /lib/scsi_mod.ko
insmod /lib/sd_mod.ko
insmod /lib/mptbase.ko
insmod /lib/mptscsih.ko
sleep 5
echo "Loading md modules"
insmod /lib/md.ko
insmod /lib/raid1.ko
mdadm -A /dev/md0
sleep 10
echo "Loading LVM modules"
insmod /lib/dm-mod.ko
mkdmnod
sleep 30
lvm vgscan --ignorelockingfailure
lvchange -ay --ignorelockingfailure /dev/MyLV/lvol0
sleep 30
echo Creating root device
mkrootdev /dev/root
echo Mounting root filesystem
mount -o defaults --ro -t reiserfs /dev/root /sysroot
sleep 10
echo Switching to new root
switchroot --movedev /sysroot
mkdmnod とか mkrootdev,switchroot は nash が提供している...
イチ何をどう操作しているのか分らない.man ページくらいし...
のでソースを見るしかないかな.
initramfs の正式な解説文書も 2.6.15 になって
ようやく Documents/filesytem に入った(これがあったのでイ...
ところだから,ある意味 black magic な世界なのかも知れん..
ページ名: