先日 は initrd の中身を見る操作を HD-HGLAN で実行したが、
今度は LS-WSGL セルフで作業する。
できるだけ LS-WSGL だけで何でもできるように。
root@LS-WSGL678:/boot# dd if=initrd.buffalo of=initrd.gz bs=64 skip=1 87853+1 records in 87853+1 records out root@LS-WSGL678:/boot# ls -l initrd* -rw-r--r-- 1 root root 5622690 Jul 22 2008 initrd.buffalo -rw-r--r-- 1 root root 5622626 Mar 2 08:29 initrd.gz root@LS-WSGL678:/boot#
root@LS-WSGL678:/boot# gunzip initrd.gz root@LS-WSGL678:/boot# ls -l initrd* -rw-r--r-- 1 root root 16777216 Mar 2 08:30 initrd -rw-r--r-- 1 root root 5622690 Jul 22 2008 initrd.buffalo root@LS-WSGL678:/boot# file initrd initrd: Linux rev 1.0 ext2 filesystem data root@LS-WSGL678:/boot#
root@LS-WSGL678:/boot# mount -o loop initrd /tmp/root mount: could not find any device /dev/loop# root@LS-WSGL678:/boot#がー。
root@LS-WSGL678:/boot# ls /dev/M* ls: /dev/M*: No such file or directory root@LS-WSGL678:/boot#/dev/MAKEDEV がないので、手で作る。
loop デバイスは、ブロック型、メジャーは 7、マイナは loop0 なら 0
root@LS-WSGL678:/boot# mknod /dev/loop0 b 7 0 root@LS-WSGL678:/boot#
root@LS-WSGL678:/boot# !mount mount -o loop ./initrd /tmp/root /sbin/hotplug [block] root@LS-WSGL678:/boot# ls /tmp/root bin lib lost+found root sys var dev libexec mnt rootfs tmp etc linuxrc proc sbin usr root@LS-WSGL678:/boot#
root@LS-WSGL678:/boot# vi /tmp/root/etc/shadow : : root@LS-WSGL678:/boot# grep root !$ grep root /tmp/root/etc/shadow root::11009:0:99999:7::: root@LS-WSGL678:/boot#
root@LS-WSGL678:/boot# umount /tmp/root /sbin/hotplug [block] root@LS-WSGL678:/boot#
root@LS-WSGL678:/boot# ls -l initrd -rw-r--r-- 1 root root 16777216 Mar 2 08:30 initrd root@LS-WSGL678:/boot# gzip initrd長い...
root@LS-WSGL678:/boot# ls -l initrd.* -rw-r--r-- 1 root root 5622690 Jul 22 2008 initrd.buffalo -rw-r--r-- 1 root root 5596070 Mar 2 08:43 initrd.gz root@LS-WSGL678:/boot#
root@LS-WSGL678:/boot# mkimage sh: mkimage: command not found root@LS-WSGL678:/boot#当たり前のことながら LS-WSGL 標準ファームに mkimage はない。
仕方がないので、LS-HGL ハックキットから持ってきた。
root@LS-WSGL678:/boot# cd / root@LS-WSGL678:/# tar zxvf /mnt/disk1/share/LS-HGL_hackkit_1.00.tar.gz ./usr/local/sbin/mkimage ./usr/local/sbin/mkimage root@LS-WSGL678:/# mkimage -l /boot/initrd.buffalo sh: /usr/local/sbin/mkimage: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory root@LS-WSGL678:/#うごかんかぁ。
root@LS-WSGL678:/# ls -l /lib/ld-linux.so* lrwxrwxrwx 1 root root 11 Nov 1 02:03 /lib/ld-linux.so.3 -> ld-2.3.6.so root@LS-WSGL678:/# cd /lib root@LS-WSGL678:/lib# ln -s ld-2.3.6.so ld-linux.so.2 root@LS-WSGL678:/lib# ls -l /lib/ld-linux.so.* lrwxrwxrwx 1 root root 11 Mar 2 09:08 /lib/ld-linux.so.2 -> ld-2.3.6.so lrwxrwxrwx 1 root root 11 Nov 1 02:03 /lib/ld-linux.so.3 -> ld-2.3.6.so root@LS-WSGL678:/lib# !mkimage mkimage -l /boot/initrd.buffalo mkimage: /lib/libc.so.6: version `GLIBC_2.0' not found (required by mkimage) root@LS-WSGL678:/lib#くそー。OABI で作った mkimage はうごかんか。
仕方がないので、LS-HGL ハックキットをまるごと展開する。
root@LS-WSGL678:~# cd /mnt/disk1/share/ root@LS-WSGL678:/mnt/disk1/share# ls LS-HGL_hackkit_1.00.sh LS-HGL_hackkit_1.00.tar.gz root@LS-WSGL678:/mnt/disk1/share# mkdir root root@LS-WSGL678:/mnt/disk1/share# cd root root@LS-WSGL678:/mnt/disk1/share# tar zxvf ../LS-HGL_hackkit_1.00.tar.gz : : root@LS-WSGL678:/mnt/disk1/share/root# root@LS-WSGL678:/mnt/disk1/share/root# chroot . sh-3.1# mkimage Usage: mkimage -l image -l ==> list image header information mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image -A ==> set architecture to 'arch' -O ==> set operating system to 'os' -T ==> set image type to 'type' -C ==> set compression type 'comp' -a ==> set load address to 'addr' (hex) -e ==> set entry point to 'ep' (hex) -n ==> set image name to 'name' -d ==> use image data from 'datafile' -x ==> set XIP (execute in place) sh-3.1# exit exit root@LS-WSGL678:/mnt/disk1/share/root#ジェイルの中ならいけそう。
root@LS-WSGL678:/mnt/disk1/share/root# rm /usr/local/sbin/mkimage /lib/ld-linux.so.2 root@LS-WSGL678:/mnt/disk1/share/root#initrd.gz をジェイル内にコピーする。
root@LS-WSGL678:/mnt/disk1/share/root# cp /boot/initrd.gz boot root@LS-WSGL678:/mnt/disk1/share/root# ls boot initrd.gz root@LS-WSGL678:/mnt/disk1/share/root#mkimage で initrd.buffalo を作る
root@LS-WSGL678:/mnt/disk1/share/root# chroot . sh-3.1# /usr/local/sbin/mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d /boot/initrd.gz /boot/initrd.buffalo Image Name: initrd Created: Sun Mar 2 09:27:59 2008 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 5596070 Bytes = 5464.91 kB = 5.34 MB Load Address: 0x00000000 Entry Point: 0x00000000 sh-3.1#行けたっぽい。
ジェイルを抜ける
sh-3.1# exit exit root@LS-WSGL678:/mnt/disk1/share/root#
root@LS-WSGL678:/mnt/disk1/share/root# cd /boot root@LS-WSGL678:/boot# mv initrd.buffalo initrd.buffalo.orig root@LS-WSGL678:/boot# cp /mnt/disk1/share/root/boot/initrd.buffalo . root@LS-WSGL678:/boot# ls -l initrd.buffalo* -rw-r--r-- 1 root root 5596134 Mar 2 09:30 initrd.buffalo -rw-r--r-- 1 root root 5622690 Jul 22 2008 initrd.buffalo.orig root@LS-WSGL678:/boot#
: : Using device ide0, partition 1 Loading from block device ide device 0, partition 1: Name: hda1 Type: U-Boot File:/uImage.buffalo 1757556 bytes read Image Name: Linux-2.6.16.16-arm1 Created: 2008-07-22 7:22:37 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1757492 Bytes = 1.7 MB Load Address: 00008000 Entry Point: 00008000 Using device ide0, partition 1 Loading from block device ide device 0, partition 1: Name: hda1 Type: U-Boot File:/initrd.buffalo 5596134 bytes read Image Name: initrd Created: 2008-03-02 0:27:59 UTC Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 5596070 Bytes = 5.3 MB Load Address: 00000000 Entry Point: 00000000 Using device ide1, partition 1 : :ちゃんと 2008-03-02 になっている。
BUFFALO INC. LinkStation series LS-WSGL678 login:普通に立ち上がってきた。
次は、RamRoot
: : linuxrc:choose operation (timeout 4[s]) 1:RamRoot other:HddRoot ? 1 -RamdiskRoot- : : BUFFALO INC. LinkStation series LS-WSGL-EM678 login:こちらも無事立ち上がってきた。
BUFFALO INC. LinkStation series LS-WSGL-EM678 login: root login[1229]: root login on `ttyS0' BusyBox v1.1.1 (2008.07.15-06:14+0000) Built-in shell (ash) Enter 'help' for a list of built-in commands. #でけた。
|
← スーパーブロック |
ハックの記録 LinkStation/玄箱 をハックしよう |
→ EM モードに root でログイン |