2015年05月05日

HDL-GXRをWheezyで動かす

今更ながらのHDL-GXRについて。
USB温度計を繋げてmuninで監視していたのだが、どうも時々通信が切れ、不安定。
セキュリティに不安もあるし、Debianのバージョンを上げようと挑戦したものの、なかなかに難儀であった…。

1. カーネルを作成

カーネル2.6.39.4のままWheezyにすると、通信が出来なくなったりして、うまく動かないので、まず3.x系のカーネルを作る。
Wheezyは3.2系で動いているので、3.2系のlongterm、3.2.68 を使うことにした。
クロスコンパイル環境は、前記事を参照。
基本的な作業手順は、2.6系と変わらない
カーネルパッチは再び手移植してみた。カーネルソースって、かなり頻繁に変更されているんだなあ。
3.2.68用のカーネルパッチはこれ
.configのサンプル
というわけで、カーネルをクロスでコンパイル。(これはDebian8+emdebianの環境での例)

# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.68.tar.xz
# tar xvfJ linux-3.2.68.tar.xz
# cd linux-3.2.68
# patch -p1 < ../hdl-gxr-kernel-3.2.68.patch
patching file arch/arm/boot/compressed/head.S
patching file arch/arm/kernel/head.S
patching file arch/arm/mach-orion5x/Kconfig
patching file arch/arm/mach-orion5x/Makefile
patching file arch/arm/mach-orion5x/hdl_gxr-setup.c
patching file arch/arm/tools/mach-types
# cp ../hdl-gxr-config-3.2.68.txt .config
# ARCH=arm make menuconfig (※必要ならconfigを変更)
# ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make uImage modules
scripts/kconfig/conf --silentoldconfig Kconfig
CHK include/config/kernel.release
UPD include/config/kernel.release
:
(略)
:
# mkdir -p /opt/arm/boot
# ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/opt/arm make modules_install
# cp -p arch/arm/boot/uImage /opt/arm/boot/uImage.new
# cp -p System.map /opt/arm/boot/
# cp -p .config /opt/arm/boot/config-3.2.68.hdl-gxr
# pushd /opt/arm/boot
# tar cvfj /opt/arm/hdl-gxr-kernel-3.2.68.tar.bz2 .
# cd /opt/arm
# tar cvfj /opt/arm/hdl-gxr-lib-3.2.68.tar.bz2 lib
# popd

出来上がった hdl-gxr-kernel-3.2.68.tar.bz2 hdl-gxr-lib-3.2.68.tar.bz2 を、どこかに取っておく。

2. rootfsを作成

debootstrapでWheezyのrootfsを作成。
基本的な作業手順は、Squeeze化と同じ。
HDL-GXRはSqueeze以降でないと、xzがない、鍵がないなどでうまくない。


# aptitude install binutils (※arが入っていない場合のみ)
# mkdir -p /opt/landisk/debootstrap (※任意のディレクトリ)
# cd /opt/landisk/debootstrap
# wget http://ftp.jp.debian.org/debian/pool/main/d/debootstrap/debootstrap-udeb_1.0.67_all.udeb
# ar -x debootstrap-udeb_1.0.67_all.udeb
# tar Jxvfp data.tar.xz
# export DEBOOTSTRAP_DIR=`pwd`/usr/share/debootstrap
# export PATH=$PATH:`pwd`/usr/sbin
# mkdir -p /opt/landisk/wheezy (※任意のディレクトリ)
# debootstrap --arch=armel wheezy /opt/landisk/wheezy http://ftp.jp.debian.org/debian
I: Retrieving Release
I: Retrieving Release.gpg
:
(略)
:
I: Base system installed successfully.
# mount -t proc proc /opt/landisk/wheezy/proc
# chroot /opt/landisk/wheezy
# dpkg-reconfigure tzdata (※タイムゾーン設定)
# passwd (※rootのパスワード設定)
# vi /etc/apt/sources.list (※aptの設定)
--
deb http://ftp.jp.debian.org/debian wheezy main contrib non-free
deb-src http://ftp.jp.debian.org/debian wheezy main contrib non-free
deb http://security.debian.org wheezy/updates main contrib non-free
--
# apt-get update
# apt-get upgrade
# apt-get install udev openssh-server
# vi /etc/network/interfaces (※ネットワークを設定)
# vi /etc/fstab
--
proc /proc proc defaults,nosuid,noexec 0 0
/dev/sda1 /boot ext3 defaults,rw 0 0
/dev/sda2 swap swap defaults 0 0
/dev/sda3 / ext3 defaults,rw 1 1
--
# apt-get clean
# exit
# umount /opt/landisk/wheezy/proc
# cd /opt/landisk/wheezy
# tar cjvf /opt/landisk/hdl-gxr-wheezy-rootfs.tar.bz2 .

出来上がった hdl-gxr-wheezy-rootfs.tar.bz2 を、どこかに取っておく。

3. ディスクに展開

HDL-GXRに入れるディスクを、USB-SATA接続キットなどを使ってLinuxの動いているPCに接続する。
(※新しいディスクなどの場合は、パーティションの切り方などは過去記事参照。)
第1パーティションにカーネル、第3パーティションにrootfsとカーネルモジュールを展開する。
ターゲットのディスクを /dev/sdb と仮定すると、さっき作った hdl-gxr-kernel-3.2.68.tar.bz2 hdl-gxr-lib-3.2.68.tar.bz2 hdl-gxr-wheezy-rootfs.tar.bz2 をPCに持ってきて


# mount /dev/sdb1 /mnt
# tar xvfj hdl-gxr-kernel-3.2.68.tar.bz2 -C /mnt
# umount /mnt
# mount /dev/sdb3 /mnt
# tar xvfj hdl-gxr-wheezy-rootfs.tar.bz2 -C /mnt
# tar xvfj hdl-gxr-lib-3.2.68.tar.bz2 -C /mnt
# umount /mnt


てな感じ。展開したディスクをHDL-GXRに接続し、電源投入。
うまくいけば、WheezyになったDebianが動いているはず。



作ったカーネルとrootfsを一応置いておく。簡単なまとめはこちら。使用は自己責任で。
patch hdl-gxr-kernel-3.2.68.patch
config hdl-gxr-config-3.2.68.txt
kernel hdl-gxr-kernel-3.2.68.tar.bz2
lib hdl-gxr-lib-3.2.68.tar.bz2
rootfs hdl-gxr-rootfs-wheezy.tar.bz2
これをディスクに放り込めば、とりあえず動く。はず。
eth0のアドレスはDHCPで、アクセスはsshで、ユーザー名root、パスワードはolpadminです。

Jessieは次で。
posted by usoinfo at 16:28 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]