7 Debian on chumby

まえだこうへ

PIC
____________________________________________________________________

OSC 2009 Tokyo/Spring でのエリア Debian Debian on chumby いましたはその についてまとめました

7.1

chumby ネイテDebian 動かしたわけではありませんUSB メモリインストした Debian chroot して的に動かしているようにせかけましたネイテ動かすとなるとトロをいじる必要があります chumby はほとんどせずに方法をとりました

7.1.1 chumby

chumby インタ接続能な無線 LAN 必要接続できなければアナログwidget 表示しかできませんまた能なメモリフラメモリ64MB のうちわずかで *2 Debian カルインストすることはできないのでUSB メモリストレとして使 ます

もうつのchumby ext2 などを使えませんUSB メモリ使vfat のみですしかし vfat では Linux インスト できません*3 そ こ で き く つ や る こ と が あ り ま す

  1. chumby ネルリビルド
  2. USB メモリへの Debian インスト
  3. USB メモリDebian への chroot

7.2

7.2.1

必要なもの

  • chumby
  • USB メモリ
  • Debian PC
  • トワ
7.2.2 chumby ネルリビルド

のとおりchumby kernel ext2 使えませんUSB メモリには ext2 Debian インスト するのでchumby ext2 めるようにしますまずリンクから chumby ネルルキ しますリンクいます

  • GNU Toolchain*4
  • GCC Toolchain*5

これらのルキ/usr 以下展開されるのでkvm/qemu などのOS するといでし

$ cd /
$ sudo tar zxf ~/arm-linux-v4.1.2b.tar.gz
$ sudo tar zxf ~/Gcc-3.3.2-glibc-2.3.2.tar.gz
$ sudo mkdir -p /opt/Embedix/usr/local/arm-linux
$ sudo ln -s /usr \
 /opt/Embedix/usr/local/arm-linux/gcc-3.3.2-glibc-2.3.2
$ sudo vi /usr/bin/arm-linux-make
$ sudo chmod +x /usr/bin/arm-linux-make

/usr/bin/arm-linux/make には以下のようにします

#!/bin/sh
echo make ARCH=arm CROSS=arm-linux- CC=arm-linux-gcc \
 AR=arm-linux-ar NM=arm-linux-nm RANLIB=arm-linux-ranlib \
 CXX=arm-linux-g++ AS=arm-linux-as LD=arm-linux-ld \
 STRIP=arm-linux-strip BUILDCC=gcc BUILD_CC=gcc \
 CC_FOR_BUILD=gcc ‘‘$@’’
exec make ARCH=arm CROSS=arm-linux- CC=arm-linux-gcc \
 AR=arm-linux-ar NM=arm-linux-nm RANLIB=arm-linux-ranlib \
 CXX=arm-linux-g++ AS=arm-linux-as LD=arm-linux-ld \
 STRIP=arm-linux-strip BUILDCC=gcc
 BUILD_CC=gcc CC_FOR_BUILD=gcc ‘‘$@’’

chumby ムウ1.6*6 のでWiki firmware 1.6 実施します

  • Hacking Linux for chumby - ChumbyWiki*7

またネルビルドにはDebian れておく必要があります

  • make
  • gcc
  • libncurses5-dev
  • libncursesw5-dev
  • zip

またchumby ネルソスコchumby しいネルインストするためにアライメントする Perl スク リプトをそれぞれダウンロしておきます

  • linux-2.6.16-chumby-1.6.0.tar.gz*8
  • align.pl*9

ネルソ展開make menuconfig ext2 みま *10

$ cd
$ mkdir kernel
$ cd kernel
$ cp ~/{align.pl,linux-2.6.16-chumby-1.6.0.tar.gz} ./
$ tar zxf linux-2.6.16-chumby-1.6.0.tar.gz
$ cd linux-2.6.16-chumby-1.6.0
$ ARCH=arm BOARD=mx21ads CROSS_COMPILE=arm-linux- \
 make menuconfig
$ ARCH=arm BOARD=mx21ads CROSS_COMPILE=arm-linux- make
$ perl ../align.pl arch/arm/boot/zImage
$ zip k1.bin.zip arch/arm/boot/zImage

これでkernel/linux-2.6.16-chumby-1.6.0/レクトリ直下k1.bin.zip 生成されますこれを USB メモリvfat コピします

$ sudo mount -t vfat /dev/sda1 /media/usb
$ sudo mkdir /media/usb/update2
$ sudo cp -i k1.bin.zip /media/usb/update2/
$ sudo umount /media/usb

chumby special option mode 動しkernel プデします

  1. chumby OFF にしたUSB メモリします
  2. チスクリしたままれる途中したままにすると special option mode になるよ 表示されるのでそのまましつづけます
  3. special option mode メニ”install updates” クリします
  4. “Install from USB flash drive” クリするとkernel プデされ動的に動されます
7.2.3 USB メモリへの Debian インスト

USB メモリDebian インストしますがUSB メモリには chumby うためのイル vfat 必要なのでfdisk コマンド/dev/sda1 vfat/dev/sda2 Linux mkfs コマンドイルシ ステムしておきます

$ sudo fdisk /dev/sda
$ sudo mkfs.vfat /dev/sda1
$ sudo mke2fs    /dev/sda2

この sda2 Debian インストしますchumby EABI(armel) ではなくOABI(arm) であるためarm インストする必要がありますしかしQemu では armel サブアキテクチ versatile しかサポしていな いためarm kernel イメ動させることしかできませんなので同じ OABI トマクテクノ armadillo-9 されている Debian Etch イメ利用しましたリンクから5 つの tar ダウン し ま す

  • debian directory - Armadillo 発者サイト*11

ext2 マウントtar 展開します

$ sudo mount /dev/sda2 /mnt
$ cd /mnt
$ tar zxf ~/debian-etch-a9-1.tgz
$ tar zxf ~/debian-etch-a9-2.tgz
$ tar zxf ~/debian-etch-a9-3.tgz
$ tar zxf ~/debian-etch-a9-4.tgz
$ tar zxf ~/debian-etch-a9-5.tgz

chumby としこの USB メモリしてれると動的に ext2 マウントされこの バイナリ正常できます

7.2.4 USB への chroot

USB メモリDebian chroot そしてそのEtch から Lenny ンアさせますまずssh グイン/proc/devdevpts バインドさせます

chumby:~# mount -o bind /proc /mnt/usb2/proc
chumby:~# mount -o bind /dev  /mnt/usb2/dev
chumby:~# mount -t devpts devpts /mnt/usb2/dev/pts/
chumby:~# chroot /mnt/usb2
chumby:/1 df
Filesystem    1K-blocks      Used Available Use% Mounted on
/dev/hda1       1373548    181321   1118946  14% /
tmpfs           1373548    181321   1118946  14% /lib/init/rw
sysfs           1373548    181321   1118946  14% /sys
udev            1373548    181321   1118946  14% /dev
tmpfs           1373548    181321   1118946  14% /dev/shm
devpts          1373548    181321   1118946  14% /dev/pts

apt line etch から lenny ンアうとなくプグレできるはず です

chroot Debian ssh 動起動させるためいます22/tcp chumby sshd 使うので てるいでし

/mnt/usb2/etc/ssh/sshd_config (抜粋)

Port 2222
(snip)
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
(snip)
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
(snip)

chumby 側のUSB メモリした Widget させる6.2.3 した vfat 直下 以 下 debugchumby というイル名でスクリプトします

#!/bin/bash

mount -o bind /proc /mnt/usb2/proc
mount -o bind /dev  /mnt/usb2/dev
mount -t devpts devpts /mnt/usb2/dev/pts/
chmod 666 /mnt/usb2/dev/null
chroot /mnt/usb2 /bin/hostname chumby
chroot /mnt/usb2 /usr/sbin/sshd

これで動的に chroot Debian sshd 2222/tcp 動するようになります

7.3 OSC での展示

6.1 でもきましたがChumny インタがらないと単なるです由は動時chumby.com から controlpanel.swf というコンソflash イルその他自分でしている Widget ダウンロしてくるため ですそこで単な Widget はそれを表示しつつスタンドアロンでも有線 LAN して SSH グインできるようにします

7.3.1

えて必要なもの

  • mtasc
  • USB-Ethernet アダプタ
  • クロスケブル
  • 展示PC
7.3.2 Widget

chumby Widget Flash ですDebian 使ているので Widget はもちろんテキストエデActionScript いて フリソフトウコンパイルします展示表示させていた Widgit スコ以下のとおりです

class DisplayDebian {
  public static function main(mc:MovieClip):Void
  {
    var app = new DisplayDebian(mc);
  }

  public function DisplayDebian(mc:MovieClip)
  {
    mc.createEmptyMovieClip(‘‘image’’,
    mc.getNextHighestDepth());
    var image:MovieClip = mc.image;
    var imageArr:Array = [ ‘‘./openlogo.png’’ ];
    image._xscale= 100;
    image._yscale= 100;
    image._x= 69;
    image._y= 0;
    image.loadMovie(imageArr[0]);

    var textField:TextField = mc.createTextField(’textField’,
    mc.getNextHighestDepth(), 15, 10, 320, 240);
    var fmt:TextFormat = new TextFormat(’’, 24, 0x000000);
    textField.text = ’ エリア Debian  \n\n\n’ +
    ’ 3/21, 予定’;
    textField.setTextFormat(fmt);
  }
}

これを Hoge.as として存し同じレクトリ openlogo.png*12 します

そして以下ワンライナ(ascompile.sh) としてコンパイルします

$ ./ascompile.sh Hoge.as

ワンライナascompile.sh 以下のようにします

#!/bin/bash
test -z $1 && exit 1
mtasc -swf ‘basename $1 .as‘.swf -main $1 -header \
 320:240:12 -version 8

コンパイルするとHoge.swf という flash イルができますこの Hoge.swf Widget としてむために profile.xml という名前します

<?xml version=’’1.0’’ encoding=’’utf-8’’ ?>
<profile>
 <widget_instances>
  <widget_instance id=’’1’’>
   <widget>
    <name>Debian Logo</name>
    <description>Debian GNU/Linux Logo</description>
    <version>1.0</version>
    <mode time=’’30’’ mode=’’timeout’’ />
    <access sendable=’’false’’ deletable=’’false’’
     access=’’private’’ virtualable=’’false’’ />
    <user username=’’Kouhei Maeda’’ />
    <thumbnail href=’’file:////mnt/usb/openlogo.png’’
     contenttype=’’image/png’’ />
    <movie href=’’file:////mnt/usb/Hoge.swf’’
     contenttype=’’application/x-shockwave-flash’’ />
   </widget>
   <access access=’’private’’ />
   <mode time=’’30’’ mode=’’timeout’’ />
   <widget_parameters>
    <widget_parameter>
     <name>auther1</name>
     <value>Kouhei</value>
    </widget_parameter>
    <widget_paramter>
     <name>auther2</name>
     <value>Maeda</value>
    </widget_parameter>
   </widget_parameters>
  </widget_instance>
 </widget_instances>
</profile>

この profile.xml およびHoge.swf openlogo.png USB メモリvfat 直下コピしますこれで動時 USB メモリからこの Widget まれるようになります

7.3.3 スタンドアロンでの動設

スタンドアロンほどの Widget まれssh ログインできるようにします的には *13 えばあり ませんまずchumby-offline.zip*14 ダウンロします展開すると offline-howto.txt というドキメントがあるのでこれにしますprofile.xml 6.3.2 していますのでこれを利用してくださいUSB メモリvfat 直下以下イルコピ ます

  • chumby-offline.zip 展開してできる offline レクトリ以下にある www/レクトリ*15
  • chumby /usr/widgets/controlpanel.swf

USB メモリvfat 直下debugchumby のようにえます

#!/bin/bash

killall httpd
/usr/sbin/httpd -h /mnt/usb/www
cp /mnt/usb/www/hosts.offline /psp/hosts
#cp /mnt/usb/www/hosts.online /psp/hosts

mount -o bind /proc /mnt/usb2/proc
mount -o bind /dev  /mnt/usb2/dev
mount -t devpts devpts /mnt/usb2/dev/pts/
chmod 666 /mnt/usb2/dev/null
chroot /mnt/usb2 /bin/hostname chumby

なおオフラインモからオフラインモkillall からコメントアウトhosts.online コピ 有効にしてください

そして最後USB-Ethernet アダプタ使有線 LAN 由でアクセスできるようにしますまでと同じくvfat userhook1 というイルします以下のとおりです

#!/bin/sh

USE_DHCP=0
IPADDR=192.168.3.10
NETMASK=255.255.255.0
GATEWAY=192.168.3.1

/sbin/insmod /drivers/usbnet.ko
/sbin/insmod /drivers/pegasus.ko

ifconfig rausb0 127.0.0.1

if [ $USE_DHCP == 1 ]\daggerhen
   udhcpc -t 5 -n -p /var/run/udhcpc.eth0.pid -i eth0
else
   /sbin/ifconfig eth0 $IPADDR netmask $NETMASK
   /sbin/route add default gw $GATEWAY eth0
fi

ちなみにBUFFALO LUA2-TX 使ています *16

たくインタ使えないでも有線 LAN 由で SSH 接続かつモニタUSB れた Widget 働させることができるようになります

7.4

以下ていますがいたらやるかもしれないしやらないかもしれません

  • debootstrap Lenny arm てみて chroot として使えるか
  • chroot からフレムバ
  • トロして直接 USB させる

7.5 おまけヨメ八苦

2 はこの OSC ヨメよりもてきても晩飯らなかれなかのとHack Meeting するようになたためになりましたコワアドバイス頂き現在すい でなだめています

7.6 文献

____________________________________________________________________________________________

PIC Debian

2009 3 21   1 発行
エ リ ア Debian 発行
__________________________