HD-120LAN ジェイルでハックキット(2)


ジェイルの中で、ハックキットがきちんと動くように試行錯誤する。

試行錯誤では、再現性を確認するため、

  • HD-120LAN の電源ON
  • ハックキットのアーカイブを新規に展開
  • LinkStation 側で下記を実行
    /etc/rc.d/init.d/atalk stop
    /etc/rc.d/init.d/smb stop
    /etc/rc.d/init.d/cron stop
    /etc/rc.d/init.d/thttpd stop
    /etc/rc.d/init.d/inetd stop
    /etc/rc.d/init.d/syslog stop
    /etc/rc.d/init.d/apservd stop
    kill 128
    /etc/rc.d/init.d/networking stop
    
    という手順を毎回繰り返した。
    (こういう試行錯誤って、すごく時間がかかる)

    rc.sysinit

    いろいろな初期化は、/etc/rc.d/rc.sysinit で行われるので、 chroot 後に /etc/rc.d/rc.sysinit を実行してみた。
    root@SECO:/mnt# HackKit/usr/sbin/chroot HackKit
    [root@SECO /]# cd etc/rc.d/
    [root@SECO rc.d]# ./rc.sysinit
                            Welcome to Vine Linux
                    Press 'I' to enter interactive startup.
    procファイルシステムをマウント中:  [  OK  ]
    カーネルパラメータを設定中l:  [  OK  ]
    hwclock: ioctl() to /dev/rtc to turn on update interrupts failed unexpectedly, errno=515: Unknown error 515.
    時計  (localtime) を設定中: Fri Jun 11 01:24:48 JST 2004 [  OK  ]
    スワップパーティションを活性化中:  [  OK  ]
    ホストネームをhackkitに設定中:  [  OK  ]
    modprobe: Can't open dependencies file /lib/modules/2.4.17_mvl21-sandpoint/modules.dep (No such file or directory)
    Checking root filesystem
    /dev/hda1 is mounted.  [/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a /dev/hda1
    e2fsck: Cannot continue, aborting.
    
    
    [失敗]
    
    *** ファイルシステム検査中にエラー
    *** シェルに移行し、システムは再起動します
    *** シェルを抜けるとき
    Give root password for maintenance
    (or type Control-D for normal startup): ハックキットのパスワード
    [root@hackkit /root]#
    
    fsck をかける意味はないので、chroot 前に /mnt/HackKit/fastboot を作成する。
    [root@hackkit /root]# cd ..
    [root@hackkit /]# touch fastboot
    [root@hackkit /]# cd etc/rc.d/
    [root@hackkit rc.d]# ./rc.sysinit
                            Welcome to Vine Linux
                    Press 'I' to enter interactive startup.
    procファイルシステムをマウント中:  [  OK  ]
    カーネルパラメータを設定中l:  [  OK  ]
    hwclock: ioctl() to /dev/rtc to turn on update interrupts failed unexpectedly, errno=515: Unknown error 515.
    時計  (localtime) を設定中: Fri Jun 11 01:29:05 JST 2004 [  OK  ]
    スワップパーティションを活性化中:  [  OK  ]
    ホストネームを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)
    ローカルファイルシステムをマウント中:  mount: wrong fs type, bad option, bad superblock on /dev/hda3,
           or too many mounted file systems
           (could this be the IDE device where you in fact use
           ide-scsi so that sr0 or sda or so is needed?)
    [失敗]
    ローカルファイルシステムクォータを有効化中:  [  OK  ]
    スワップスペースを有効化中:  [  OK  ]
    /bin/cat: /proc/modules: No such file or directory
                                                      /bin/cat: /proc/ksyms: No such
     file or directory
                      [root@hackkit rc.d]#
    
    ハックキットでは、/dev/hda3 を /mnt にマウントしているので、fstab に /dev/hda3 が書いてあるが、これがエラーになっている。
    /mnt/HackKit/etc/fstab から /dev/hda3 の記述を削除する。
    ついでに /dev/hda2 が swap に指定してあるが、これも削除。

    再試行

    [root@SECO rc.d]# ./rc.sysinit
                            Welcome to Vine Linux
                    Press 'I' to enter interactive startup.
    procファイルシステムをマウント中:  [  OK  ]
    カーネルパラメータを設定中l:  [  OK  ]
    hwclock: ioctl() to /dev/rtc to turn on update interrupts failed unexpectedly, errno=515: Unknown error 515.
    時計  (localtime) を設定中: Fri Jun 11 01:48:00 JST 2004 [  OK  ]
    スワップパーティションを活性化中:  [  OK  ]
    ホストネームを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)
    ローカルファイルシステムをマウント中:  [  OK  ]
    ローカルファイルシステムクォータを有効化中:  [  OK  ]
    スワップスペースを有効化中:  [  OK  ]
    /bin/cat: /proc/modules: No such file or directory
                                                      /bin/cat: /proc/ksyms: No such
     file or directory
                      [root@SECO rc.d]#
    
    まあ、いろいろエラーは出てるが、こんなところ。

    と思っていたら、exit で抜けると、 ちゃんとシャットダウンしていないので /.autofsck が残り、 もう一度 rc.sysinit を実行すると、

    [root@SECO rc.d]# ./rc.sysinit
                            Welcome to Vine Linux
                    Press 'I' to enter interactive startup.
    procファイルシステムをマウント中:  mount: proc already mounted
    [失敗]
    カーネルパラメータを設定中l:  [  OK  ]
    hwclock: ioctl() to /dev/rtc to turn on update interrupts failed unexpectedly, e
    rrno=515: Unknown error 515.
    時計  (localtime) を設定中: Tue Jun  8 01:55:30 JST 2004 [  OK  ]
    スワップパーティションを活性化中:  [  OK  ]
    ホストネームをhackkitに設定中:  [  OK  ]
    modprobe: Can't open dependencies file /lib/modules/2.4.17_mvl21-sandpoint/modul
    es.dep (No such file or directory)
    システムは正常に終了されなかったようです
    Press Y within 3 seconds to force file system integrity check...
    
    となってしまう。
    fsck の必要はないので、 rc.sysinit 実行前に /mnt/HackKit/.autofsck の削除も必要。

    デーモンの起動

    [root@SECO rc.d]# cd rc3.d/
    [root@SECO rc3.d]# for f in ./S*
    > do
    > $f start
    > done
    ネットワークパラメータを設定中:  [  OK  ]
    Bringing up loopback interface:  [  OK  ]
    インターフェース eth0を活性化中:  [  OK  ]
    システムロガーを起動中:
    カーネルロガーを起動中:
    乱数発生源を初期化中:  [  OK  ]
    他のファイルシステムをマウント中:  [  OK  ]
    Starting INET services: [  OK  ]
    crondを起動中:
    atdを起動中: [  OK  ]
    [root@SECO rc3.d]#
    
    こちらは、特に問題なし。

    まとめ

    準備

  • ハックキットのアーカイブを /mnt/HackKit に展開
  • /mnt/HackKit/etc/fstab から/dev/hda2,/dev/hda3 の記述を削除

    chroot 実行前

    /etc/rc.d/init.d/atalk stop
    /etc/rc.d/init.d/smb stop
    /etc/rc.d/init.d/cron stop
    /etc/rc.d/init.d/thttpd stop
    /etc/rc.d/init.d/inetd stop
    /etc/rc.d/init.d/syslog stop
    kill 128 (これは、/var/run/apservd.pid を見るべき)
    /etc/rc.d/init.d/networking stop
    

    chroot

    /mnt/HackKit/usr/sbin/chroot /mnt/HackKit
    

    chroot 実行後

    touch /fastboot
    rm -f /.autofsck
    /etc/rc.d/rc.sysinit
    for f in /etc/rc.d/rc3.d/S*
    do
            $f start
    done
    

    課題

  • /etc/rc.d/init.d/atalk stop を実行しても afpd が死なないことがある
  • jail の中の終了処理をしていないけど大丈夫?
  • 電源ボタン長押しで、電源が切れない
  • 電源onでハックキットが起動するようにしたい
  • シリアルコンソールなしでのインストール:無理?

    LinkStation/玄箱 をハックしよう → HD-120LAN ジェイルでハックキット(3)

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