LS-GL:debian:initrd.buffalo の変更


initrd.buffalo に納めれらている初期化スクリプト linuxrc では、 initrd 内のファイルをいくつか HDD にコピーしている。
LS-GL を debian 化するとき、このコピー処理がじゃまになる。

コピー処理をしない initrd.buffalo を作る。

mkimage

PC-P1LAN 用に作った U-Boot 環境を HD-HGLAN に引っ張り出してきて、 initrd.buffalo の lists the information contained in the header を 実行してみた。
[root@giga boot]# mkimage -l initrd.buffalo
Image Name:   initrd
Created:      Sun Jun 11 14:51:49 2006
Image Type:   ARM Linux RAMDisk Image (gzip compressed)
Data Size:    4389939 Bytes = 4287.05 kB = 4.19 MB
Load Address: 0x00000000
Entry Point:  0x00000000
[root@giga boot]#
いけそう。

initrd.buffalo の展開

linuxrcを変更するために、initrd.buffalo を展開する

initrd の取り出し

[root@giga tmp]# dd if=initrd.buffalo of=initrd.gz bs=64 skip=1
読み込んだブロック数は 68592+1
書き込んだブロック数は 68592+1
[root@giga tmp]# gunzip initrd.gz
[root@giga tmp]#

initrd のマウント

[root@giga tmp]# mkdir /tmp/root
[root@giga tmp]# mount -o loop initrd /tmp/root
[root@giga tmp]# df
ファイルシステム    1k-ブロック   使用中      空き 使用% マウント場所
/dev/hda1              2071384    753196   1212964  39% /
none                     63756         0     63756   0% /dev/shm
/dev/hda3            113069188  74792808  32532744  70% /mnt
/tmp/initrd              13303     10726      2577  81% /tmp/root
[root@giga tmp]#
[root@giga tmp]# cd /tmp/root/
[root@giga root]# ls
bin/  dev/  etc/  lib/  linuxrc*  lost+found/  mnt/  proc/  root/  rootfs/  sbin/  tmp/  usr/  var/
[root@giga root]#

linuxrc の修正

とりあえず echo だけにする
[root@giga root]# cat linuxrc
#!/bin/sh

echo "---- It's a linuxrc ---"
[root@giga root]#

initrd.buffalo 作成

展開と逆の手順で initrd.buffalo を作る

initrd のアンマウント

[root@giga root]# pwd
/tmp/root
[root@giga root]# cd /
[root@giga /]# umount /tmp/root
[root@giga /]# df
ファイルシステム    1k-ブロック   使用中      空き 使用% マウント場所
/dev/hda1              2071384    753196   1212964  39% /
none                     63756         0     63756   0% /dev/shm
/dev/hda3            113069188  74792808  32532744  70% /mnt
[root@giga /]#

initrd.buffalo の作成

[root@giga /]# cd /tmp
[root@giga tmp]# gzip initrd
[root@giga tmp]# mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d initrd.gz initrd.buffalo
Image Name:   initrd
Created:      Sun Sep 10 15:07:16 2006
Image Type:   ARM Linux RAMDisk Image (gzip compressed)
Data Size:    4415182 Bytes = 4311.70 kB = 4.21 MB
Load Address: 0x00000000
Entry Point:  0x00000000
[root@giga tmp]#
いけたっぽい

新 initrd.buffalo からブート

debian の HDD へコピー

debian をインストールしている HDD を USB で HD-HGLAN に接続。
initrd.buffalo をコピーする
[root@giga tmp]# mkdir /tmp/boot
[root@giga tmp]# mount /dev/sda1 /tmp/boot
[root@giga tmp]# cd /tmp/boot/
[root@giga tmp]# cd boot/
[root@giga boot]# mv initrd.buffalo initrd.buffalo.orig
[root@giga boot]# ls
conf_save.tgz  initrd.buffalo.orig  lost+found/  u-boot.buffalo  uImage.buffalo
[root@giga boot]# mv /tmp/initrd.buffalo .
l[root@giga boot]# ls -l
合計 10668
-rw-r--r--    1 root     root        20034 Sep 10 08:29 conf_save.tgz
-rw-r--r--    1 root     root      4415246 Sep 10 15:07 initrd.buffalo
-rw-r--r--    1 root     root      4390003 Jun 21 11:09 initrd.buffalo.orig
drwx------    2 root     root        12288 Jun 21 11:09 lost+found/
-rw-r--r--    1 root     root       245776 Jun 21 11:09 u-boot.buffalo
-rw-r--r--    1 root     root      1790920 Jun 21 11:09 uImage.buffalo
[root@giga boot]# cd /
[root@giga /]# umount /tmp/boot
[root@giga /]#

起動

HDD を LS-GL に接続して起動
	:
	:
## Loading Ramdisk Image at 00800000 ...
   Image Name:   initrd
   Created:      2006-09-10   6:07:16 UTC
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    4415182 Bytes =  4.2 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK

Starting kernel ...
	:
	:
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
---- It's a linuxrc ---
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda2, internal journal
	:
	:

Debian GNU/Linux 3.1 (none) ttyS0

(none) login:
というわけで、無事起動した。

と思ったら、POWER LED が点滅してる。。。 案の定、5分後にピーピーいって落ちた。
ちょっと削りすぎたか?

initrd.buffalo の再作成

作成手順は間違いないので、あとは linuxrc の中身。
もうちょっと増やす
#!/bin/sh

export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

echo "---- in midified linuxrc ---"

mount proc /proc -t proc

# set the system time from the hardware clock
hwclock -s
date

## Setup Micon communication port and send flash-boot complete message.
miconapl -b -a boot_flash_ok

umount /proc
umount -a
exit 0
今度はちゃんと POWER LED も点滅せずに立ち上がってきた。

これでいこ。

でも、、これでは配布できんなぁ、、、


LS-GL debian ToDo

  • 電源スイッチによる電源 OFF

  • 起動時のエラーつぶし

  • linuxrc でコピーされるスクリプトの対策

  • 必要なパッケージのインストール

  • 不要なパッケージの削除

  • debian の勉強(汗)

  • 「LS-GL を使ってホームサーバを構築しよう」:要る?

  • 「LS-GL ハックキット」:いらない(笑)

  • こんなところか。




    LS-GL:debian:電源ボタンによる電源 OFF(2)
    ハックの記録
    LinkStation/玄箱 をハックしよう

    LS-GL:新規 HDD の接続

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