LS-X2.0TLJ通称LS-XLをDebian化します。もともと入っていた2TBのHDDは異音がして壊れ、1.0TBのHDDに装喚して通常のFirmwareが動作するようになって、かつacp_commanderでSSH接続もできるようになっていたのですが、やはりBusyboxでは物足りないので、逝かれた玄箱PROのwheezy化で使っていた2.5inchの300GBのHDDでDebian化することにしました。

  • クロスコンパイル環境の準備
ARM環境のクロスコンパイル環境については玄箱PROだろうかLinkStationだろうか変わりはありません。
私の場合はすでに作成済みの環境を使って作業します。

LinkStationは玄箱と違ってシリアルコンソールとかu-Bootとかを使う感じではないので、とにかく確実にブートするuImageやinitrdを作成してTFTPで転送するというやり方になるようです。

■Debianインストール用のuImage作成
# cd /opt
# mkdir nasbuild
# cd nasbuild
# wget http://buffalo.jp/php/los.php?to=gpl/storage/ls-x/165/linux-3.3.4.tar.gz -O linux-3.3.4.tar.gz
# tar xzf linux-3.3.4.tar.gz
# cd linux-3.3.4
# vi Makefile

CROSS_COMPILE   ?= arm-none-linux-gnueabi-
↓
CROSS_COMPILE   ?= arm-linux-gnueabi-

# cp ~/lsxl-install.config .config
# make oldconfig
# make uImage modules
カーネルの取得はkernel.orgではなくbuffaloサイトからの方がいいです。kernel.orgは90数Mでしたが、こちらは130Mあります。buffalo系モジュールが追加で入っています。
ここで使っているlsxl-install.configはこのページに添付してあります。※buffalo/configs/buffalo_nas_fw_88f6281.configにCONFIG_CMDLINEの値を変更したもの

■Debianインストール用のinitrd作成
# cd /opt/nasbuild
# mkdir initramfs
# cd initramfs
# wget http://http.debian.net/debian/dists/unstable/main/installer-armel/current/images/orion5x/network-console/buffalo/ls-chl/initrd.buffalo -O orig_initrd
debian配布のinitrd.buffaloではカーネルのバージョンが合わずに正しくブートできないのでモジュール部分を再構築します。
# dd if=orig_initrd ibs=64 skip=1 | zcat > orig_initramfs.cpio
# dd if=/dev/zero of=initrd bs=1M count=20
# /sbin/mkfs.ext2 initrd
# mkdir rootfs
# sudo mount initrd rootfs
# cd rootfs
# sudo cpio -idv < ../orig_initramfs.cpio
先ほど作成したカーネルに合わせてモジュールを更新
# sudo rm -fr lib/modules/*
# cd ../../linux-3.3.4/
# sudo make INSTALL_MOD_PATH=../initramfs/rootfs/ modules_install
# cd ../initramfs/rootfs/
# vi preseed.cfg
d-i lowmem/low			note

d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain

d-i network-console/password password rootme
d-i network-console/password-again password rootme
# cd ..
# sudo umount rootfs
# gzip initrd
# mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 -e 0x0 -n initrd -d initrd.gz initrd.buffalo
# cd ..
preseed.cfgに書いたrootmeは後ほどインストーラーにログインするときのパスワードです。

これまで作ったuImageとinitrdはDebian Installerを起動するためだけのものなので、インストール終了後に使うuImageとinitrdも先に作っておきます。

■インストール後用のuImage作成
# cd /opt/nasbuild/linux-3.3.4
# vi .config

CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram0 panic=5 lowmem=1"
↓
CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/sda2 panic=5 lowmem=1"

# make uImage
# cd /opt/nasbuild
# mkdir boot
# cp linux-3.3.4/arch/arm/boot/uImage boot/uImage.buffalo
sdb2がルートになるようにパーティションを作成する前提です。このページに添付しているlsxl.configを使ってもいいです。

■インストール後用のinitrd作成
# cd /opt/nasbuild/boot
# dd if=/dev/zero of=initrd bs=1M count=1
# /sbin/mkfs.ext2 initrd
# gzip initrd
# mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 -e 0x0 -n initrd -d initrd.gz initrd.buffalo
空のinitrdが必要みたいです。
ここまで作っておいてPC環境に転送しておけば、VMwarePlayerを使っている場合はクロスコンパイル環境での作業は終わりになります。

■TFTPでセットアップ用ファイルの転送
# cd /opt/nasbuild
# mkdir tftpboot
# cp linux-3.3.4/arch/arm/boot/uImage tftpboot/uImage.buffalo
# cp initramfs/initrd.buffalo tftpboot/initrd.buffalo
私の環境ではここまでVMware Player上のDebianで作業しているので、TFTP Serverとこの後に使うSFTP ServerはWindows上で準備しました。
ここではtftpd32を使用します。
PC側はIPアドレスを必ず192.168.11.1にする必要があります。DHCP環境なら静的に割り当てておく必要があります。
uImage.buffaloとinitrd.buffaloを転送できる準備をしてLS-XLを起動します。
その時必ずTFTPブートになるようにHDDを外した状態で電源を入れ、5秒くらいしたらHDDを取り付けるようにするとうまくいきます。
すると192.168.11.150からアクセスがあります。
TFTPサーバー側でこれらのファイルが転送されるのを確認します。
転送が完了したらSSHでインストーラーに接続します。私の環境ではMACアドレスで必ず192.168.3.40になるようにセットしておきました。HDDがない時のTFTPブートするときとは異なり、DHCPでIPアドレスを取得して再起動してきます。
PC側のIPアドレスをDHCPに戻して元のネットワークに接続可能な状態にします。その後、
ssh installer@192.168.3.40
パスワードは先ほど設定したrootmeです。

■Debian Installer
(省略)
とはいえ色々注意点あり。
  • Installer componentsでは、openssh-client-udebとpartman-ext3を選択する
  • ディスクパーティションの初期化ではGPTを選択する
  • 一番最初にext3で/bootに256MBほど割り当てる
  • 次にext3で/に20GBほど割り当てる
  • 次にswapで2GBほど割り当てる
  • 次にext3で残りをmax割り当てる
  • カーネルがない状態になっていると聞かれてもそのまま続行する
  • Software selectionではSSH ServerとStandard System Utilitiesだけが選択する
  • Continue without boot loaderまでいったらFinish the installationを選択する前にExecute a shellを選択する
そしてuImageとinitrdの置き換えに移ります。

■最後のuImageとinitrdの置き換え
まずは裏でSFTPサーバーの準備が必要です。
私はfreeFTPdを使いました。
先にUsersで以下を登録
Login:inst
Authorization:Password stored as SHA1 hash
Password:inst
次にSFTPでListen Addressを選択してStart
ルートディレクトリのinstフォルダ内にuImage.buffaloとinitrd.buffaloを配置
# cd /target/boot
# sftp test@192.168.3.9
inst> ls
uImage.buffalo initrd.buffalo
inst> get uImage.buffalo uImage.buffalo
inst> get initrd.buffalo initrd.buffalo
inst> exit
# exit
インストーラーに戻ってFinish the installationを選択
以上。

再起動後に/lib/modulesがないのでセットアップの後処理を継続する。tftpboot用に作成したinitrd.buffaloに入れてあるので、そこから取り出す。
/opt/tftpboot/initrd.buffaloに配置
# cd /opt/tftpboot
# dd if=initrd.buffalo of=initrd.gz bs=64 skip=1
# gunzip initrd.gz
# mkdir /tmp/root
# mount -o loop initrd /tmp/root
# cp -arv /tmp/root/lib/modules/3.3.4-88f6281 /lib/modules
# umount /tmp/root
# rm -fr initrd
最終更新:2015年03月30日 17:15