Debian をインストールする(2)

Debian LS410D

LS410D の initrd は cpio で作らないといけないのだが、
標準ファームの cpio は Busybox なので、 作成のための -o オプションがなかった。

LinkStation への Debian のインストールは、 最初にログインするようにできるところを除き、 すべてセルフでできるようにしていて、 他に Linux マシンを用意しなくていいように考慮していた。

標準ファームにない telnetd や mkimage は 仕方なくバイナリとしてハックキットに添付して、 すべてセルフでできるようにしていた。

今回も「cpio をバイナリとして用意しないといけないかなぁ、、、」と 考えていたのだが、ふと思いついた。

インストールする Debian には cpio が入っている(だろう)から、 そのバイナリ使ったらいいのでは?

まずは手作業でやってみる。

Debian をインストールする HDD を USB で接続

cpio に -o オプションがないので、initrd はできていないが、 それ以外はできているはず。

マウント

[root@LS410D06E ~]# mount /dev/sdb2 /mnt/disk1/debinst
[root@LS410D06E ~]# mount /dev/sdb1 /mnt/disk1/debinst/boot
[root@LS410D06E ~]#

cpio は動く?

標準ファームで Debian の cpio は動く??
[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 とかはしないようだ。

進む!

initrd の展開

[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]#

/init の修正

[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]#

initrd を作る

[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 /]#
さぁ、これで動くのでは??
甘いか、、、

起動

HDD を入れ替えて電源 SW を ON

POWER LED が点滅、しばらくして消灯、
POWER LED が点滅、しばらくして消灯、
POWER LED が点滅、しばらくして消灯、
POWER LED が点滅、しばらくして消灯、

たのしい!



LS410D

楽天市場
Amazon


Debian をインストールする
ハックの記録
LinkStation/玄箱 をハックしよう

Debian をインストールする(3)再現

ツイート Tweet to @yasunari_y @yasunari_yをフォロー

Copyright (C) 2003-2013 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市