LinkStation への Debian のインストールは、 最初にログインするようにできるところを除き、 すべてセルフでできるようにしていて、 他に Linux マシンを用意しなくていいように考慮していた。
標準ファームにない telnetd や mkimage は 仕方なくバイナリとしてハックキットに添付して、 すべてセルフでできるようにしていた。
今回も「cpio をバイナリとして用意しないといけないかなぁ、、、」と 考えていたのだが、ふと思いついた。
インストールする Debian には cpio が入っている(だろう)から、 そのバイナリ使ったらいいのでは?
まずは手作業でやってみる。
[root@LS410D06E ~]# mount /dev/sdb2 /mnt/disk1/debinst [root@LS410D06E ~]# mount /dev/sdb1 /mnt/disk1/debinst/boot [root@LS410D06E ~]#
[root@LS410D06E ~]# /mnt/disk1/debinst/bin/cpio /mnt/disk1/debinst/bin/cpio: You must specify one of -oipt options. Try `/mnt/disk1/debinst/bin/cpio --help' or `/mnt/disk1/debinst/bin/cpio --usage' for more information. [root@LS410D06E ~]# /mnt/disk1/debinst/bin/cpio --help Usage: cpio [OPTION...] [destination-directory] GNU `cpio' copies files to and from archives Examples: : : [root@LS410D06E ~]#core dump とかはしないようだ。
進む!
[root@LS410D06E ~]# dd if=/boot/initrd.buffalo of=/mnt/disk1/debinst/boot/initrd.gz bs=64 skip=1 185731+1 records in 185731+1 records out [root@LS410D06E ~]# ls -l /mnt/disk1/debinst/boot/initrd.gz -rw-r--r-- 1 root root 11886820 Aug 24 20:08 /mnt/disk1/debinst/boot/initrd.gz [root@LS410D06E ~]# gunzip !$ gunzip /mnt/disk1/debinst/boot/initrd.gz gunzip: can't open '/mnt/disk1/debinst/boot/initrd': File exists [root@LS410D06E ~]# rm /mnt/disk1/debinst/boot/initrd [root@LS410D06E ~]# !ls ls -l /mnt/disk1/debinst/boot/initrd.gz -rw-r--r-- 1 root root 11886820 Aug 24 20:08 /mnt/disk1/debinst/boot/initrd.gz [root@LS410D06E ~]# gunzip !$ gunzip /mnt/disk1/debinst/boot/initrd.gz [root@LS410D06E ~]# mkdir /tmp/root mkdir: can't create directory '/tmp/root': File exists [root@LS410D06E ~]# cd /tmp/root [root@LS410D06E root]# ls [root@LS410D06E root]# cat /mnt/disk1/debinst/boot/initrd | cpio -idv . usr usr/lib 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 usr/lib/libpopt.so.0 usr/lib/libparted.so.2.0.0 usr/lib/libreadline.so usr/lib/libz.so.1 usr/lib/libpcap.so.1 : : www www/cgi-bin www/cgi-bin/resume.cgi www/cgi-bin/query.cgi 52829 blocks [root@LS410D06E root]#
[root@LS410D06E root]# cat > /tmp/root/init #!/bin/sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin echo "---- in hackkit init ---" exit 0 [root@LS410D06E root]# cat init #!/bin/sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin echo "---- in hackkit init ---" exit 0 chmod 755 init [root@LS410D06E root]#
[root@LS410D06E root]# find . -depth -print | /mnt/disk1/debinst/bin/cpio -ov > /mnt/disk1/debinst/boot/initrd ./www/cgi-bin/query.cgi ./www/cgi-bin/resume.cgi ./www/cgi-bin ./www : : ./usr/lib ./usr . 52586 blocks [root@LS410D06E root]# ls -l !$ ls -l /mnt/disk1/debinst/boot/initrd -rw-r--r-- 1 root root 26924032 Aug 24 20:19 /mnt/disk1/debinst/boot/initrd [root@LS410D06E root]# gzip !$ gzip /mnt/disk1/debinst/boot/initrd [root@LS410D06E root]#さて、ここでハックキットに添付している mkimage を使うのだが、 これも Debian のが使えないか??
[root@LS410D06E root]# find /mnt/disk1/debinst -name mkimage -print [root@LS410D06E root]#がー。なかった。
仕方なく、ハックキットに添付している mkimage を使う。
[root@LS410D06E root]# chmod 755 /mnt/disk1/share/hackkit/mkimage [root@LS410D06E root]# /mnt/disk1/share/hackkit/mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /mnt/disk1/debinst/boot/initrd.gz /mnt/disk1/debinst/boot/initrd.buffalo Image Name: initramfs Created: Sat Aug 24 20:23:59 2013 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 11814297 Bytes = 11537.40 kB = 11.27 MB Load Address: 0x00000000 Entry Point: 0x00000000 [root@LS410D06E root]#
[root@LS410D06E root]# rm /mnt/disk1/debinst/boot/initrd.gz [root@LS410D06E root]#
[root@LS410D06E root]# sync [root@LS410D06E root]# cd / [root@LS410D06E /]# umount /mnt/disk1/debinst/boot/ [root@LS410D06E /]# umount /mnt/disk1/debinst [root@LS410D06E /]#さぁ、これで動くのでは??
POWER LED が点滅、しばらくして消灯、
POWER LED が点滅、しばらくして消灯、
POWER LED が点滅、しばらくして消灯、
POWER LED が点滅、しばらくして消灯、
たのしい!
|
← Debian をインストールする |
ハックの記録 LinkStation/玄箱 をハックしよう |
→ Debian をインストールする(3)再現 |
Copyright (C) 2003-2013 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市