HD-120LAN ハックキット化やり直し


まだあきらめはついていないが、、、
仮想ルートでのハックキット化は問題ありとして、 後頭部のソケットを抜いてザイオンに戻ることにする(意味不明 :-)

次なる手

chroot でルートディレクトリを入れ換えられないとすると、 実ルートディレクトリを入れ換えるしかない。
/ にあるディレクトリ
/bin
/etc
/home
/lib
/root
/sbin
/usr
/var
/www
をハックキットへのシンボリックリンクにしてみることにする。
ただし、マウントポイントや特殊ディレクトリ
/dev
/lost+found
/mnt
/proc
/tmp
はオリジナルのまま使う。

動いているシステムの入れ換え

通常なら、
# rm -fr /bin
# ln -s /mnt/Hackkit/bin /bin
と、
  • すべてのディレクトリを消し
  • シンボリックリンクで置き換え
    を実行すればよいのだが、 /sbin/init は動いているし、、、、

    心配してても仕方ないので、とりあえず手操作でやってみる。
    まずは、不要なプロセスの終了から

    root@SECO:~# cd /
    root@SECO:/# /etc/rc.d/init.d/atalk stop
    Stop servecies: atalkd afpd
    Can't unregister SECO:Workstation@*
    Can't unregister SECO:netatalk@*
    /etc/rc.d/rc2.d/S90atalk: line 7:   150 Terminated              /usr/sbin/atalkd -f /etc/atalk/atalkd.conf
    root@SECO:/# /etc/rc.d/init.d/smb stop
    Stop services: smbd nmbd
    root@SECO:/# /etc/rc.d/init.d/cron stop
    Stopping periodic command scheduler: cron.
    root@SECO:/# /etc/rc.d/init.d/thttpd stop
    Stop services: thttpd
    root@SECO:/# /etc/rc.d/init.d/inetd stop
    Stopping internet superserver: inetd.
    root@SECO:/# /etc/rc.d/init.d/syslog stop
    Stopping system log daemon: klogd syslogd.
    root@SECO:/# kill `cat /var/run/apservd-eth0.pid `
    root@SECO:/# /etc/rc.d/init.d/networking stop
    Deconfiguration network interface: lo eth0
    dhcpcd[73]: terminating on signal 1
    
    root@SECO:/# /etc/rc.d/init.d/atalk stop
    Stop servecies: atalkd afpd
    Can't unregister SECO:Workstation@*
    Can't unregister SECO:netatalk@*
    root@SECO:/# ps aux
    USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
    root         1  5.4  1.0  1448  644 ?        S    01:05   0:05 init
    root         2  0.0  0.0     0    0 ?        SW   01:05   0:00 [keventd]
    root         3  0.0  0.0     0    0 ?        SWN  01:05   0:00 [ksoftirqd_CPU0]
    root         4  0.0  0.0     0    0 ?        SW   01:05   0:00 [kswapd]
    root         5  0.0  0.0     0    0 ?        SW   01:05   0:00 [bdflush]
    root         6  0.0  0.0     0    0 ?        SW   01:05   0:00 [kupdated]
    root        35  0.0  0.0     0    0 ?        SW   01:05   0:00 [kreiserfsd]
    root       157  0.0  0.7  1408  480 ?        S    01:05   0:00 /usr/sbin/ppc_uar
    root       160  0.1  2.5  2756 1604 ttyS0    S    01:05   0:00 -bash
    root       243  0.0  1.4  2800  920 ttyS0    R    01:07   0:00 ps aux
    
    続いてシステムの置き換え
    root@SECO:/# rm -fr /bin
    root@SECO:/# ln -s /mnt/HackKit/bin /
    bash: ln: command not found
    
    /bin を mv してしまったので、/bin/ln がない。 ハックキット内の ln を使う
    root@SECO:/# /mnt/HackKit/bin/ln -s /mnt/HackKit/bin /
    root@SECO:/# rm -fr etc
    root@SECO:/# ln -s /mnt/HackKit/etc /
    root@SECO:/# rm -fr home
    root@SECO:/# ln -s /mnt/HackKit/home /
    root@SECO:/# rm -fr lib
    root@SECO:/# ln -s /mnt/HackKit/lib /
    bash: /bin/ln: No such file or directory
    root@SECO:/# ls
    bash: /bin/ls: No such file or directory
    
    /lib を消してしてしまったので、共有ライブラリがない。
    LD_LIBRARY_PATH を設定してやればいいやと試してみたが、
    root@SECO:~# export LD_LIBRARY_PATH=/mnt/HackKit/lib
    root@SECO:~# /mnt/HackKit/usr/bin/ldd /bin/ln
            libc.so.6 => /mnt/HackKit/lib/libc.so.6 (0x0fe9e000)
            /lib/ld.so.1 => /lib/ld.so.1 (0x30000000)
    root@SECO:~#
    
    /lib/ld.so.1 を要求している。これではだめ。
    Vine の /sbin には static link してある ln があるんじゃないかと、 見てみたが
    [root@SECO root]# file /mnt/HackKit/sbin/ln
    /mnt/HackKit/sbin/ln: can't stat `/mnt/HackKit/sbin/ln' (No such file or directory).
    
    だった、、、、、でも、/sbin/sln というのを見つけた。
    [root@SECO root]# file /mnt/HackKit/sbin/sln
    /mnt/HackKit/sbin/sln: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1, for GNU/Linux 2.2.5, statically linked,stripped
    
    これは使えそう
    root@SECO:/# /mnt/HackKit/sbin/sln /mnt/HackKit/lib /lib
    root@SECO:/# rm -fr root
    root@SECO:/# /mnt/HackKit/sbin/sln /mnt/HackKit/root /root
    root@SECO:/# rm -fr sbin
    root@SECO:/# /mnt/HackKit/sbin/sln /mnt/HackKit/sbin /sbin
    root@SECO:/# rm -fr usr
    root@SECO:/# /mnt/HackKit/sbin/sln /mnt/HackKit/usr /usr
    root@SECO:/# rm -fr var
    root@SECO:/# /mnt/HackKit/sbin/sln /mnt/HackKit/var /var
    root@SECO:/# rm -fr www
    root@SECO:/# /mnt/HackKit/sbin/sln /mnt/HackKit/www /www
    root@SECO:/# touch /fastboot
    root@SECO:/# ls -l /
    total 6
    lrwxrwxrwx    1 root     root           16 Jun 18 02:52 bin -> /mnt/HackKit/bin
    drwxrwxr-x    3 root     root         3072 Jun 18 02:52 dev
    lrwxrwxrwx    1 root     root           16 Jun 18 02:52 etc -> /mnt/HackKit/etc
    -rw-r--r--    1 root     root            0 Jun 18 02:52 fastboot
    lrwxrwxrwx    1 root     root           17 Jun 18 02:52 home -> /mnt/HackKit/home
    lrwxrwxrwx    1 root     root           16 Jun 18 02:52 lib -> /mnt/HackKit/lib
    drwxr-xr-x    2 root     root         1024 Feb 20  2002 lost+found
    drwxr-xr-x    6 root     root          200 Jun 18 02:39 mnt
    dr-xr-xr-x   23 root     root            0 Jun 18 02:52 proc
    lrwxrwxrwx    1 root     root           17 Jun 18 02:52 root -> /mnt/HackKit/root
    lrwxrwxrwx    1 root     root           17 Jun 18 02:52 sbin -> /mnt/HackKit/sbin
    drwxrwxrwx    2 root     root         1024 Jun 18 02:52 tmp
    lrwxrwxrwx    1 root     root           16 Jun 18 02:52 usr -> /mnt/HackKit/usr
    lrwxrwxrwx    1 root     root           16 Jun 18 02:52 var -> /mnt/HackKit/var
    lrwxrwxrwx    1 root     root           16 Jun 18 02:52 www -> /mnt/HackKit/www
    oot@SECO:/# /etc/rc.d/rc.sysinit
                            Welcome to Vine Linux
                    Press 'I' to enter interactive startup.
    Mounting proc filesystem:  mount: proc already mounted
    [FAILED]
    Configuring kernel parameters:  [  OK  ]
    hwclock: ioctl() to /dev/rtc to turn on update interrupts failed unexpectedly, errno=515: Unknown error 515.
    Setting clock  (localtime): Fri Jun 18 03:04:09 JST 2004 [  OK  ]
    Activating swap partitions:  [  OK  ]
    Setting hostname hackkit:  [  OK  ]
    modprobe: Can't open dependencies file /lib/modules/2.4.17_mvl21-sandpoint/modules.dep (No such file or directory)
    modprobe: Can't open dependencies file /lib/modules/2.4.17_mvl21-sandpoint/modules.dep (No such file or directory)
    modprobe: Can't open dependencies file /lib/modules/2.4.17_mvl21-sandpoint/modules.dep (No such file or directory)
    Mounting local filesystems:  mount: none already mounted or /dev/pts busy
    [FAILED]
    Enabling local filesystem quotas:  [  OK  ]
    Enabling swap space:  [  OK  ]
    /sbin/mkkerneldoth: /boot/kernel.h: No such file or directory
                                                                 /bin/cat: /proc/modules: No such file or directory
                                   /bin/cat: /proc/ksyms: No such file or directory
    root@SECO:/# telinit 3
    INIT: Switching to runlevel: 3
    root@SECO:/# Setting network parameters:  [  OK  ]
    Bringing up loopback interface:  [  OK  ]
    Bringing up interface eth0:  [  OK  ]
    Starting system logger: [  OK  ]
    Starting kernel logger: [  OK  ]
    Initializing random number generator:  [  OK  ]
    Mounting other filesystems:  mount: none already mounted or /dev/pts busy
    [FAILED]
    Starting INET services: [  OK  ]
    Starting keytable:  [  OK  ]
    Starting crond: [  OK  ]
    Starting atd: [  OK  ]
    
    root@SECO:/#
    いっぱいエラーは出ているけど、いけたっぽい!

    #と、簡単に書いているけど、
    #このページを書くのに数十回の電源リセットが必要だったことは内緒


    LinkStation/玄箱 をハックしよう → HD-120LAN samba の rebuild でテスト

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