さて isolinux の initrd.gz を 展開して出来た initrd の 中の init に 取り掛かります。/sbin/init ではありません
# pwd /root/work/pmt # ls bin/ dev/ init* loop/ proc/ sbin/ sys/ cdrom/ etc/ lib/ lost+found/ put_old/ shutdown* # file init init: POSIX shell script, ASCII text executable # ls sbin/ init* # file sbin/init sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), \ statically linked, for GNU/Linux 2.0.0, stripped
簡単に いえば (重複するのですが)
init の 改悪の履歴 で 見て来ました。
この方法でも良いのですが 今回は 別の方法で 試みます。
つまり
... for i in sda sdb sdc sdd sde sdf sdg sdh ; do if [ -d /sys/block/$i ] && [ `cat /sys/block/$i/removable` -eq 1 ] ; then ...
の 部分で 何処に 本体の root ファイルシステムが 有るのかを探しているようです。
それならば 今回 fstab を UUID に 書き換えたので その探す部分も UUID に 書き換えましょう というのが 今回試みる事です。
すなわち 以下の部分を 改悪します。
# pwd ;ls /root/work/pmt bin/ dev/ init* loop/ proc/ sbin/ sys/ cdrom/ etc/ lib/ lost+found/ put_old/ shutdown* # vi init # cat init ... mount UUID=cd4b4e85-b0f7-4652-a787-7594c06c727d /cdrom 2> /dev/null CD_DEV=UUID=cd4b4e85-b0f7-4652-a787-7594c06c727d echo "CD_DEV=UUID=cd4b4e85-b0f7-4652-a787-7594c06c727d " sleep 10 echo "`df`" echo "mount dev Where ? " sleep 10 ...
今回使用する USB は sdb で 認識されているので
# blkid | grep sdb
/dev/sdb1: LABEL="sqBoot" UUID="3c6d2a7b-83b0-4c1b-95e2-93548920849f" SEC_TYPE="ext2" TYPE="ext3"
/dev/sdb2: LABEL="SQRooT" UUID="cd4b4e85-b0f7-4652-a787-7594c06c727d" SEC_TYPE="ext2" TYPE="ext3"
/dev/sdb3: LABEL="swapsq" UUID="d82fede1-abb3-494f-a990-e44b9501ccee" TYPE="swap"
後は
# cd ../ # umount pmt/ # gzip initrd
にゃんたろう 拝!
2014年 3月 23日 日曜日 21:26:43 JST 作成