一番調べたいのは、ブートしない条件。
initrd.buffalo の
・タイムスタンプを変えても
・サイズを変えても
・image を作りなおしても
・initrd.gz を gzip し直しても
起動してくることはわかった。
次は、initrd の中身を書き換えて
どこまでなら起動するのかを見て行きたいところであるのだが、
LinkStation の標準ファームでは initrd を書き換える事ができず
別の Linux マシンで書き換える必要がある。
別の Linux マシンで書き換えて、
LinkStation の HDD を USB で接続して、
initrd.buffalo をコピーして
起動してみる
ということを繰り返すのはすごく面倒。
なので、tftp boot して標準ファームが起動できるかを確かめた。
これなら、
別の Linux マシンで書き換えて、
tftp ブートしてみる
と簡単に繰り返せるので。
gzip のし直しは、LinkStation セルフで確認したが、 念のため、クロス+tftp Boot でここまでは同じく問題ないことを確認する。
yasunari@qube:~$ cd /srv/tftp/ls400-111/ yasunari@qube:/srv/tftp/ls400-111$ ls initrd.buffalo uImage.buffalo yasunari@qube:/srv/tftp/ls400-111$ mv initrd.buffalo{,.orig} yasunari@qube:/srv/tftp/ls400-111$
yasunari@qube:/srv/tftp/ls400-111$ vi remakeinitrd.sh : : yasunari@qube:/srv/tftp/ls400-111$ cat remakeinitrd.sh set -x cp initrd.buffalo{.orig,} dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 gunzip /tmp/initrd.gz gzip /tmp/initrd mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initrd.gz initrd.buffalo yasunari@qube:/srv/tftp/ls400-111$
yasunari@qube:/srv/tftp/ls400-111$ sh remakeinitrd.sh + cp initrd.buffalo{.orig,} cp: missing destination file operand after `initrd.buffalo{.orig,}' 詳しくは `cp --help' を実行して下さい. + dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 dd: opening `initrd.buffalo': そのようなファイルやディレクトリはありません + gunzip /tmp/initrd.gz gzip: /tmp/initrd.gz: No such file or directory + gzip /tmp/initrd gzip: /tmp/initrd: No such file or directory + mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initrd.gz initrd.buffalo mkimage: Can't open /tmp/initrd.gz: No such file or directory yasunari@qube:/srv/tftp/ls400-111$ which sh /bin/sh yasunari@qube:/srv/tftp/ls400-111$がー。なんで、{} が使えない?
yasunari@qube:/srv/tftp/ls400-111$ ls -l /bin/sh lrwxrwxrwx 1 root root 4 2011-01-11 23:51 /bin/sh -> dash yasunari@qube:/srv/tftp/ls400-111$dash!
やり直し。
yasunari@qube:/srv/tftp/ls400-111$ bash remakeinitrd.sh + cp initrd.buffalo.orig initrd.buffalo + dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 185731+1 records in 185731+1 records out 11886820 bytes (12 MB) copied, 7.51946 s, 1.6 MB/s + gunzip /tmp/initrd.gz + gzip /tmp/initrd + mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initrd.gz initrd.buffalo Image Name: initramfs Created: Mon Sep 16 12:17:50 2013 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 11929799 Bytes = 11650.19 kB = 11.38 MB Load Address: 0x00000000 Entry Point: 0x00000000 yasunari@qube:/srv/tftp/ls400-111$ ls -l 合計 26096 -rw-r--r-- 1 yasunari yamasita 11929863 2013-09-16 12:17 initrd.buffalo -rwxr-xr-x 2 yasunari yamasita 11886884 2013-07-04 22:18 initrd.buffalo.orig -rw-r--r-- 1 yasunari yamasita 243 2013-09-16 12:09 remakeinitrd.sh -rwxr-xr-x 2 yasunari yamasita 2894416 2013-07-04 22:18 uImage.buffalo yasunari@qube:/srv/tftp/ls400-111$gzip の性能が良いのか、サイズが小さくなった。
Sep 16 12:20:46 qube in.tftpd[1415]: connect from 192.168.11.150 (192.168.11.150) Sep 16 12:20:46 qube tftpd[1416]: tftpd: trying to get file: uImage.buffalo Sep 16 12:20:46 qube tftpd[1416]: tftpd: serving file from /srv/tftp Sep 16 12:20:48 qube in.tftpd[1417]: connect from 192.168.11.150 (192.168.11.150) Sep 16 12:20:48 qube tftpd[1418]: tftpd: trying to get file: initrd.buffalo Sep 16 12:20:48 qube tftpd[1418]: tftpd: serving file from /srv/tftptftp サーバに取りに来た。
しばらくして白点灯。
yasunari@qube:/srv/tftp/ls400-111$ ssh root@ls410d [root@LS410D06E ~]# hostname LS410D06E [root@LS410D06E ~]# exit logout Connection to ls410d closed. yasunari@qube:/srv/tftp/ls400-111$動いているようだ。
yasunari@qube:/srv/tftp/ls400-111$ vi remakeinitrd.sh : : yasunari@qube:/srv/tftp/ls400-111$ cat remakeinitrd.sh set -x cp initrd.buffalo{.orig,} dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 gunzip /tmp/initrd.gz mkdir root cd root cat /tmp/initrd | cpio -id find . -depth -print | cpio -ov > /tmp/initrd cd .. rm -fr root gzip /tmp/initrd mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initrd.gz initrd.buffalo rm -f /tmp/initrd.gz yasunari@qube:/srv/tftp/ls400-111$
yasunari@qube:/srv/tftp/ls400-111$ bash remakeinitrd.sh + cp initrd.buffalo.orig initrd.buffalo + dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 185731+1 records in 185731+1 records out 11886820 bytes (12 MB) copied, 7.73635 s, 1.5 MB/s + gunzip /tmp/initrd.gz gzip: /tmp/initrd already exists; do you wish to overwrite (y or n)? y + mkdir root + cd root + cat /tmp/initrd + cpio -id cpio: dev/sdb7: Cannot mknod: 許可されていない操作です cpio: dev/mtd0: Cannot mknod: 許可されていない操作です cpio: dev/mtd3: Cannot mknod: 許可されていない操作です cpio: dev/ptmx: Cannot mknod: 許可されていない操作です cpio: dev/hda15: Cannot mknod: 許可されていない操作です cpio: dev/sdb4: Cannot mknod: 許可されていない操作です cpio: dev/hdb11: Cannot mknod: 許可されていない操作です cpio: dev/ttymxc2: Cannot mknod: 許可されていない操作です cpio: dev/sda: Cannot mknod: 許可されていない操作です cpio: dev/uba5: Cannot mknod: 許可されていない操作です cpio: dev/kmem: Cannot mknod: 許可されていない操作です cpio: dev/ttyp9: Cannot mknod: 許可されていない操作です cpio: dev/hda13: Cannot mknod: 許可されていない操作です cpio: dev/ttyAM1: Cannot mknod: 許可されていない操作です : :一般ユーザでは mknod できないか。
root で再実行
root@qube:/srv/tftp/ls400-111# bash remakeinitrd.sh + cp initrd.buffalo.orig initrd.buffalo + dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 185731+1 records in 185731+1 records out 11886820 bytes (12 MB) copied, 8.38006 s, 1.4 MB/s + gunzip /tmp/initrd.gz + mkdir root + cd root + cat /tmp/initrd + cpio -id 52829 blocks + find . -depth -print + cpio -ov ./usr/lib/libreadline.so.6.2 ./usr/lib/libstdc++.so. : : ./www/cgi-bin/resume.cgi ./www/cgi-bin/query.cgi ./www/cgi-bin ./www . 52612 blocks + cd .. + rm -fr root + gzip /tmp/initrd + mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initrd.gz initrd.buffalo Image Name: initramfs Created: Mon Sep 16 12:44:11 2013 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 11913516 Bytes = 11634.29 kB = 11.36 MB Load Address: 0x00000000 Entry Point: 0x00000000 + rm -f /tmp/initrd.gz root@qube:/srv/tftp/ls400-111# ls -l total 26080 -rw-r--r-- 1 yasunari yamasita 11913580 Sep 16 12:44 initrd.buffalo -rwxr-xr-x 2 yasunari yamasita 11886884 Jul 4 22:18 initrd.buffalo.orig -rw-r--r-- 1 yasunari yamasita 376 Sep 16 12:36 remakeinitrd.sh -rwxr-xr-x 2 yasunari yamasita 2894416 Jul 4 22:18 uImage.buffalo root@qube:/srv/tftp/ls400-111#今度はオリジナルより大きくなった。
root@qube:/srv/tftp/ls400-111# ssh root@ls410d The authenticity of host 'ls410d (192.168.2.57)' can't be established. RSA key fingerprint is 1d:79:3f:1a:29:f6:42:39:32:05:f8:9b:24:8f:fc:32. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ls410d,192.168.2.57' (RSA) to the list of known hosts. [root@LS410D06E ~]#起動している。
root@qube:/srv/tftp/ls400-111# vi remakeinitrd.sh : : root@qube:/srv/tftp/ls400-111# cat remakeinitrd.sh set -x cp initrd.buffalo{.orig,} dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 gunzip /tmp/initrd.gz mkdir root cd root cat /tmp/initrd | cpio -id touch init find . -depth -print | cpio -ov > /tmp/initrd cd .. rm -fr root gzip /tmp/initrd mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initrd.gz initrd.buffalo rm -f /tmp/initrd.gz root@qube:/srv/tftp/ls400-111#
root@qube:/srv/tftp/ls400-111# bash remakeinitrd.sh + cp initrd.buffalo.orig initrd.buffalo + dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 185731+1 records in 185731+1 records out 11886820 bytes (12 MB) copied, 7.88083 s, 1.5 MB/s + gunzip /tmp/initrd.gz + mkdir root + cd root + cat /tmp/initrd + cpio -id 52829 blocks + touch init + find . -depth -print + cpio -ov ./usr/lib/libreadline.so.6.2 ./usr/lib/libstdc++.so.6.0.16-gdb.py : : ./www/cgi-bin ./www . 52612 blocks + cd .. + rm -fr root + gzip /tmp/initrd + mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initrd.gz initrd.buffalo Image Name: initramfs Created: Tue Sep 17 00:43:48 2013 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 11913523 Bytes = 11634.30 kB = 11.36 MB Load Address: 0x00000000 Entry Point: 0x00000000 + rm -f /tmp/initrd.gz root@qube:/srv/tftp/ls400-111# ls -l total 26080 -rw-r--r-- 1 yasunari yamasita 11913587 Sep 17 00:43 initrd.buffalo -rwxr-xr-x 2 yasunari yamasita 11886884 Jul 4 22:18 initrd.buffalo.orig -rw-r--r-- 1 yasunari yamasita 388 Sep 17 00:40 remakeinitrd.sh -rwxr-xr-x 2 yasunari yamasita 2894416 Jul 4 22:18 uImage.buffalo root@qube:/srv/tftp/ls400-111#
root@qube:/srv/tftp/ls400-111# ssh root@ls410d [root@LS410D06E ~]#起動している。
root@qube:/srv/tftp/ls400-111# vi remakeinitrd.sh : : root@qube:/srv/tftp/ls400-111# cat !$ cat remakeinitrd.sh set -x cp initrd.buffalo{.orig,} dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 gunzip /tmp/initrd.gz mkdir root cd root cat /tmp/initrd | cpio -id echo >> init find . -depth -print | cpio -ov > /tmp/initrd cd .. rm -fr root gzip /tmp/initrd mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initrd.gz initrd.buffalo rm -f /tmp/initrd.gz root@qube:/srv/tftp/ls400-111#
root@qube:/srv/tftp/ls400-111# bash remakeinitrd.sh + cp initrd.buffalo.orig initrd.buffalo + dd if=initrd.buffalo of=/tmp/initrd.gz bs=64 skip=1 185731+1 records in 185731+1 records out 11886820 bytes (12 MB) copied, 7.57186 s, 1.6 MB/s + gunzip /tmp/initrd.gz + mkdir root + cd root + cat /tmp/initrd + cpio -id 52829 blocks + echo + cpio -ov + find . -depth -print ./usr/lib/libreadline.so.6.2 ./usr/lib/libstdc++.so.6.0.16-gdb.py ./usr/lib/libkmod.so.2 ./usr/lib/libe2p.so.2 : : ./www/cgi-bin/resume.cgi ./www/cgi-bin/query.cgi ./www/cgi-bin ./www . 52612 blocks + cd .. + rm -fr root + gzip /tmp/initrd + mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initrd.gz initrd.buffalo Image Name: initramfs Created: Tue Sep 17 00:51:50 2013 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 11913477 Bytes = 11634.25 kB = 11.36 MB Load Address: 0x00000000 Entry Point: 0x00000000 + rm -f /tmp/initrd.gz root@qube:/srv/tftp/ls400-111# ls -l total 26080 -rw-r--r-- 1 yasunari yamasita 11913541 Sep 17 00:51 initrd.buffalo -rwxr-xr-x 2 yasunari yamasita 11886884 Jul 4 22:18 initrd.buffalo.orig -rw-r--r-- 1 yasunari yamasita 402 Sep 17 00:49 remakeinitrd.sh -rwxr-xr-x 2 yasunari yamasita 2894416 Jul 4 22:18 uImage.buffalo root@qube:/srv/tftp/ls400-111#なんか、どんどん大きくなる
root@qube:/srv/tftp/ls400-111# ssh root@ls410d [root@LS410D06E ~]#起動している。
というわけで、いろいろ変えてみたが、特に問題なし。
initrd.buffalo を変えてもブートしないことは無いのでは??
|
← tftp Boot で標準ファームを起動 |
ハックの記録 LinkStation/玄箱 をハックしよう |
→ initrd の /init を見る(2) |
Copyright (C) 2003-2013 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市