armhf でハックキット(1)ディレクトリツリーの作成

Debian LS410D

せっかくの ARMV7 だし、 D.3. Unix/Linux システムからの Debian GNU/Linux のインストール を参考に、armhf でハックキットを作ってみる。

基本的には、 Debian 7.1 のインストール(1)ディレクトリツリーの作成 と同じ。
ただし、使うのは、LS410D + 標準ファーム

D.3.1. はじめに

D.3. Unix/Linux システムからの Debian GNU/Linux のインストール では、先に HDD をマウントしているが、 ここでは、パス。

D.3.2. debootstrap のインストール

wget と ar の確認

LS410D の標準ファームにログイン。
wget と ar があるかを確認する。
[root@LS410D06E ~]# which ar
/usr/bin/ar
[root@LS410D06E ~]# which wget
/usr/bin/wget
[root@LS410D06E ~]# ls -l /usr/bin/ar
lrwxrwxrwx    1 root     root            17 Jul  4 22:55 /usr/bin/ar -> ../../bin/busybox*
[root@LS410D06E ~]# ls -l /usr/bin/wget
-rwxr-xr-x    1 root     root        328016 Jul  5 00:42 /usr/bin/wget*
[root@LS410D06E ~]#
あるある。

debootstrap のダウンロード

pool から、debootstrap をいただいてくる
[root@LS410D06E ~]# cd /tmp
[root@LS410D06E tmp]# wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.55_all.deb
--2013-10-28 23:51:13--  http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.55_all.deb
Resolving ftp.debian.org... 130.89.148.12, 2001:610:1908:b000::148:12
Connecting to ftp.debian.org|130.89.148.12|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 55628 (54K) [application/x-debian-package]
Saving to: `debootstrap_1.0.55_all.deb'

100%[======================================>] 55,628      92.4K/s   in 0.6s

2013-10-28 23:51:14 (92.4 KB/s) - `debootstrap_1.0.55_all.deb' saved [55628/55628]

[root@LS410D06E tmp]#

debootstrap の展開

[root@LS410D06E tmp]# ar -x debootstrap_1.0.55_all.deb
[root@LS410D06E tmp]# cd /
[root@LS410D06E /]# zcat /tmp/data.tar.xz | tar tv
zcat: invalid magic
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
[root@LS410D06E /]#
がー。xz やん。
ドキュメント、古い。
それとも最近の zcat は xz も展開できる??

ところで、標準ファームに xz ってあるの?

[root@LS410D06E /]# which xz
/usr/bin/xz
[root@LS410D06E /]# ls -l /usr/bin/xz
-rwxr-xr-x    1 root     root         56340 Jul  5 00:42 /usr/bin/xz*
[root@LS410D06E /]#
ある!
[root@LS410D06E /]# xz -dv /tmp/data.tar.xz
/tmp/data.tar.xz (1/1)
  100 %        53.0 KiB / 220.0 KiB = 0.241
[root@LS410D06E /]# tar xvf /tmp/data.tar
./
./usr/
./usr/share/
./usr/share/man/
	:
	:
./usr/share/debootstrap/scripts/stable
./usr/share/debootstrap/scripts/jessie
./usr/share/debootstrap/scripts/trusty
[root@LS410D06E /]#

D.3.3. debootstrap の実行~

ここからは、スクリプトにしてしまう
[root@LS410D06E ~]# vi makehackkit_131030.sh
	:
	:
[root@LS410D06E ~]# cat !$
cat makehackkit_131030.sh
#!/bin/sh
#
# Copyright (C) 2013 Yasunari YAMASHITA. All Rights Reserved.
#

set -x

DEBINST=/mnt/disk1/debinst
ARCH=armhf
VERSION=wheezy

# make working directory
rm -fr $DEBINST
mkdir -p $DEBINST

# exec debootstrap
cd /
date
/usr/sbin/debootstrap --arch $ARCH $VERSION $DEBINST http://ftp.jp.debian.org/debian
date

# copy /dev
(cd / ; tar cf - dev)|(cd $DEBINST; tar xvf -)

# mount /proc
chroot $DEBINST mount -t proc /proc proc

# reconfigure TimeZone
chroot $DEBINST dpkg-reconfigure tzdata

# edit /etc/apt/sources.list
(
echo deb-src http://ftp.jp.debian.org/debian $VERSION main
echo
echo deb http://security.debian.org/ $VERSION/updates main
echo deb-src http://security.debian.org/ $VERSION/updates main
) >> $DEBINST/etc/apt/sources.list

# update package lists
chroot $DEBINST apt-get update
chroot $DEBINST apt-get -y -f install
chroot $DEBINST apt-get -y upgrade

# install & reconfigure locales
chroot $DEBINST apt-get install locales
chroot $DEBINST dpkg-reconfigure locales

# install ssh
chroot $DEBINST apt-get install ssh

# update password of root
chroot $DEBINST passwd root

# install some packages
chroot $DEBINST apt-get -y install xfsprogs psmisc sudo inetutils-telnetd

# edit /etc/inetd.conf
TARGETFILE=$DEBINST/etc/inetd.conf
mv $TARGETFILE{,.orig}
sed \
        -e 's/^## telnet/telnet/' \
        $TARGETFILE.orig > $TARGETFILE
rm $TARGETFILE.orig

# add guest user
chroot $DEBINST adduser --gecos "" guest
rm -fr $DEBINST/home/guest

# create /initrd
mkdir $DEBINST/initrd

# edit /etc/inittab
TARGETFILE=$DEBINST/etc/inittab
mv $TARGETFILE{,.orig}
sed \
        -e 's/^\([0-9]:[0-9]*:respawn:.*\)$/#\1/' \
        -e '/^#T1/aT0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100' \
        $TARGETFILE.orig > $TARGETFILE
rm $TARGETFILE.orig

# clean up
chroot $DEBINST apt-get clean
[root@LS410D06E ~]#
実行する。
[root@LS410D06E ~]# sh !$
sh makehackkit_131030.sh
+ DEBINST=/mnt/disk1/debinst
+ ARCH=armhf
+ VERSION=wheezy
+ rm -fr /mnt/disk1/debinst
+ mkdir -p /mnt/disk1/debinst
+ cd /
+ date
Thu Oct 31 00:09:58 JST 2013
+ /usr/sbin/debootstrap --arch armhf wheezy /mnt/disk1/debinst http://ftp.jp.debian.org/debian
I: Retrieving Release
W: Cannot check Release signature; keyring file not available /usr/share/keyrings/debian-archive-keyring.gpg
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
	:
	:
I: Base system installed successfully.
+ date
Thu Oct 31 00:27:37 JST 2013
	:
	:
+ chroot /mnt/disk1/debinst dpkg-reconfigure tzdata

Package configuration



 lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu Configuring tzdata tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
 x Please select the geographic area in which you live. Subsequent configuration questions will narrow   x
 x this down by presenting a list of cities, representing the time zones in which they are located.      x
 x                                                                                                       x
 x Geographic area:                                                                                      x
 x                                                                                                       x
 x                                          Africa                                                       x
 x                                          America                                                      x
 x                                          Antarctica                                                   x
 x                                          Australia                                                    x
 x                                          Arctic Ocean                                                 x
 x                                          Asia                                                         x
 x                                          Atlantic Ocean                                               x
 x                                          Europe                                                       x
 x                                          Indian Ocean                                                 x
 x                                          Pacific Ocean                                                x
 x                                          System V timezones                                           x
 x                                          US                                                           x
 x                                          None of the above                                            x
 x                                                                                                       x
 x                                                                                                       x
 x                             <Ok>                                 <Cancel>                             x
 x                                                                                                       x
 mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Asia を選ぶ
Package configuration

                   lqqqqqqqqqqqqqqqqqqqqqqqu Configuring tzdata tqqqqqqqqqqqqqqqqqqqqqqqk
                   x Please select the city or region corresponding to your time zone.  x
                   x                                                                    x
                   x Time zone:                                                         x
                   x                                                                    x
                   x                         Pyongyang                                  x
                   x                         Qatar               a                      x
                   x                         Qyzylorda           a                      x
                   x                         Rangoon             a                      x
                   x                         Riyadh              a                      x
                   x                         Riyadh87            a                      x
                   x                         Riyadh88            a                      x
                   x                         Riyadh89            a                      x
                   x                         Sakhalin            a                      x
                   x                         Samarkand           a                      x
                   x                         Seoul               a                      x
                   x                         Shanghai            a                      x
                   x                         Singapore           a                      x
                   x                         Taipei              a                      x
                   x                         Tashkent            a                      x
                   x                         Tbilisi             a                      x
                   x                         Tehran              a                      x
                   x                         Tel Aviv            a                      x
                   x                         Thimphu             a                      x
                   x                         Tokyo               a                      x
                   x                         Ujung Pandang       a                      x
                   x                         Ulaanbaatar         a                      x
                   x                         Urumqi              a                      x
                   x                         Ust-Nera            a                      x
                   x                         Vientiane                                  x
                   x                         Vladivostok         a                      x
                   x                         Yakutsk             a                      x
                   x                         Yekaterinburg       a                      x
                   x                         Yerevan                                    x
                   x                                                                    x
                   x                                                                    x
                   x                 <Ok>                     <Cancel>                  x
                   x                                                                    x
                   mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Tokyo を選ぶ
Current default time zone: 'Asia/Tokyo' Local time is now: Thu Oct 31 00:28:44 JST 2013. Universal Time is now: Wed Oct 30 15:28:44 UTC 2013. + echo deb-src http://ftp.jp.debian.org/debian wheezy main + echo + echo deb http://security.debian.org/ wheezy/updates main + echo deb-src http://security.debian.org/ wheezy/updates main + chroot /mnt/disk1/debinst apt-get update Get:1 http://ftp.jp.debian.org wheezy Release.gpg [1672 B] Hit http://ftp.jp.debian.org wheezy Release : : Selecting previously unselected package locales. (Reading database ... 9298 files and directories currently installed.) Unpacking locales (from .../locales_2.13-38_all.deb) ... Processing triggers for man-db ... Setting up locales (2.13-38) ... Generating locales (this might take a while)... Generation complete. + chroot /mnt/disk1/debinst dpkg-reconfigure locales Package configuration lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu Configuring locales tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x Locales are a framework to switch between multiple languages and allow users to use their language, x x country, characters, collation order, etc. x x x x Please choose which locales to generate. UTF-8 locales should be chosen by default, particularly for x x new installations. Other character sets may be useful for backwards compatibility with older systems x x and software. x x x x Locales to be generated: x x x x [ ] iu_CA UTF-8 ↑ x x [ ] iw_IL ISO-8859-8 a x x [ ] iw_IL.UTF-8 UTF-8 ` x x [*] ja_JP.EUC-JP EUC-JP a x x [*] ja_JP.UTF-8 UTF-8 a x x [ ] ka_GE GEORGIAN-PS ↓ x x x x x x <Ok> <Cancel> x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
ja_JP.EUC-JP EUC-JPとja_JP.UTF-8 UTF-8とをインストールしておく
Package configuration



  lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu Configuring locales tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
  x Many packages in Debian use locales to display text in the correct language for the user. You can    x
  x choose a default locale for the system from the generated locales.                                   x
  x                                                                                                      x
  x This will select the default language for the entire system. If this system is a multi-user system   x
  x where not all users are able to speak the default language, they will experience difficulties.       x
  x                                                                                                      x
  x Default locale for the system environment:                                                           x
  x                                                                                                      x
  x                                             None                                                     x
  x                                             ja_JP.EUC-JP                                             x
  x                                             ja_JP.UTF-8                                              x
  x                                                                                                      x
  x                                                                                                      x
  x                             <Ok>                                 <Cancel>                            x
  x                                                                                                      x
  mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

デフォルトは ja_JP.UTF-8 にする
Generating locales (this might take a while)...
  ja_JP.EUC-JP... done
  ja_JP.UTF-8... done
Generation complete.
	:
	:
Setting up tcpd (7.6.q-24) ...
Setting up xauth (1:1.0.7-1) ...
Setting up ssh (1:6.0p1-4) ...
+ chroot /mnt/disk1/debinst passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
	:
	:
in auto mode
Setting up libfile-copy-recursive-perl (0.38-1) ...
Setting up update-inetd (4.43) ...
Setting up inetutils-inetd (2:1.9-2) ...
[warn] Not starting internet superserver: no services enabled. ... (warning).
Setting up inetutils-telnetd (2:1.9-2) ...
+ TARGETFILE=/mnt/disk1/debinst/etc/inetd.conf
+ mv /mnt/disk1/debinst/etc/inetd.conf /mnt/disk1/debinst/etc/inetd.conf.orig
+ sed -e 's/^#<off># telnet/telnet/' /mnt/disk1/debinst/etc/inetd.conf.orig
+ rm /mnt/disk1/debinst/etc/inetd.conf.orig
+ chroot /mnt/disk1/debinst adduser --gecos '' guest
Adding user `guest' ...
Adding new group `guest' (1000) ...
Adding new user `guest' (1000) with group `guest' ...
Creating home directory `/home/guest' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
+ rm -fr /mnt/disk1/debinst/home/guest
+ mkdir /mnt/disk1/debinst/initrd
+ TARGETFILE=/mnt/disk1/debinst/etc/inittab
+ mv /mnt/disk1/debinst/etc/inittab /mnt/disk1/debinst/etc/inittab.orig
+ sed -e 's/^\([0-9]:[0-9]*:respawn:.*\)$/#\1/' -e '/^#T1/aT0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100' /mnt/disk1/debinst/etc/inittab.orig
+ rm /mnt/disk1/debinst/etc/inittab.orig
+ chroot /mnt/disk1/debinst apt-get clean
[root@LS410D06E ~]#

/etc/adjtime の修正

まずは、見てみる
[root@LS410D06E ~]# cat /mnt/disk1/debinst/etc/adjtime
cat: can't open '/mnt/disk1/debinst/etc/adjtime': No such file or directory
[root@LS410D06E ~]#
がー。ない。

/etc/init.d/hwclock.sh を見る

[root@LS410D06E ~]# less /mnt/disk1/debinst/etc/init.d/hwclock.sh
	:
	:
#               2012-02-16 Roger Leigh 
#                - Use the UTC/LOCAL setting in /etc/adjtime rather than
#                  the UTC setting in /etc/default/rcS.  Additionally
#                  source /etc/default/hwclock to permit configuration.
	:
	:
            if [ -w /etc ] && [ ! -f /etc/adjtime ] && [ ! -e /etc/adjtime ]; t
hen
                printf "0.0 0 0.0\n0\nUTC" > /etc/adjtime
            fi
	:
[root@LS410D06E ~]#
ないなら、作ればよいらしい。
[root@LS410D06E ~]# echo 0.0 0 0.0 > /mnt/disk1/debinst/etc/adjtime
[root@LS410D06E ~]# echo 0 >> /mnt/disk1/debinst/etc/adjtime
[root@LS410D06E ~]# echo LOCAL >> /mnt/disk1/debinst/etc/adjtime
[root@LS410D06E ~]# cat !$
cat /mnt/disk1/debinst/etc/adjtime
0.0 0 0.0
0
LOCAL
[root@LS410D06E ~]#
さて、これで、できたかな。

スクリプトの修正

/etc/adjtime の作成、アーカイブの作成を追加する。
[root@LS410D06E ~]# cat !$
cat makehackkit_131031.sh
#!/bin/sh
#
# Copyright (C) 2013 Yasunari YAMASHITA. All Rights Reserved.
#

set -x

DEBINST=/mnt/disk1/debinst
ARCH=armhf
VERSION=wheezy

# make working directory
rm -fr $DEBINST
mkdir -p $DEBINST

# exec debootstrap
cd /
date
/usr/sbin/debootstrap --arch $ARCH $VERSION $DEBINST http://ftp.jp.debian.org/debian
date

# copy /dev
(cd / ; tar cf - dev)|(cd $DEBINST; tar xvf -)

# mount /proc
chroot $DEBINST mount -t proc /proc proc

# reconfigure TimeZone
chroot $DEBINST dpkg-reconfigure tzdata

# edit /etc/apt/sources.list
(
echo deb-src http://ftp.jp.debian.org/debian $VERSION main
echo
echo deb http://security.debian.org/ $VERSION/updates main
echo deb-src http://security.debian.org/ $VERSION/updates main
) >> $DEBINST/etc/apt/sources.list

# update package lists
chroot $DEBINST apt-get update
chroot $DEBINST apt-get -y -f install
chroot $DEBINST apt-get -y upgrade

# install & reconfigure locales
chroot $DEBINST apt-get install locales
chroot $DEBINST dpkg-reconfigure locales

# install ssh
chroot $DEBINST apt-get install ssh

# update password of root
chroot $DEBINST passwd root

# install some packages
chroot $DEBINST apt-get -y install xfsprogs psmisc sudo inetutils-telnetd

# edit /etc/inetd.conf
TARGETFILE=$DEBINST/etc/inetd.conf
mv $TARGETFILE{,.orig}
sed \
        -e 's/^## telnet/telnet/' \
        $TARGETFILE.orig > $TARGETFILE
rm $TARGETFILE.orig

# add guest user
chroot $DEBINST adduser --gecos "" guest
rm -fr $DEBINST/home/guest

# create /initrd
mkdir $DEBINST/initrd

# edit /etc/inittab
TARGETFILE=$DEBINST/etc/inittab
mv $TARGETFILE{,.orig}
sed \
        -e 's/^\([0-9]:[0-9]*:respawn:.*\)$/#\1/' \
        -e '/^#T1/aT0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100' \
        $TARGETFILE.orig > $TARGETFILE
rm $TARGETFILE.orig

# clean up
chroot $DEBINST apt-get clean

# create /etc/adjtime
(
echo 0.0 0 0.0
echo 0
echo LOCAL
) > /mnt/disk1/debinst/etc/adjtime

# umount /proc
chroot $DEBINST umount /proc

# make archive
cd $DEBINST
tar zcvf /mnt/disk1/share/hackkit/hackkit_"$VERSION"_"$ARCH"_`date +%y%m%d`.tar.gz .
[root@LS410D06E ~]#
こんなところか??

スクリプトの再実行

(略:手抜きしすぎ?)

LS410D

楽天市場
Amazon


最初の設定~ftp サーバ、開発環境のインストール
ハックの記録
LinkStation/玄箱 をハックしよう

armhf でハックキット(2)インストール

ツイート Tweet to @yasunari_y @yasunari_yをフォロー

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