2010年03月12日 zaurus SL-C760 Slackware(ARMedslack) with Angstrom
_ zaurus SL-C760 Slackware(ARMedslack) with Angstrom
zaurus SL-C760にSlackwareのarm版(ARMedslack)のインストールを試みた。
基本的な戦略は、ARMedslackのユーザランドにAngstromのカーネル類をつっこんで動かしてみるというもの。同様の方法でDebian GNU/Linux on ARMをSL-C760で稼働させている方が居られた(Angstrom + Debian/armel on Zaurus SL-C760)ので、まねっこしてみた。
例によって記憶や思い込みにたよって記述しているので、この通りに行って重大な障害が発生しても何の責任も取れませんのであしからず。
母艦(Slackware-12.2 Intel)にて
- armedslack-currentを取得する。armedslack-currentはEABI版。armedslack-12.2はOABI(古い形式)なので利用できない。注意すること。
$ wget -c -np -l 100 -r ftp://ftp.armedslack.org/armedslack/armedslack-current/slackware/
- SDHCのパーティション分け(/dev/mmcblk0p1 : VFAT, /dev/mmcblk0p2 : SWAP, /dev/mmcblk0p3 : ext3)
# fdisk /dev/mmcblk0
- スワップ設定、フォーマット(ext3)
# mkswap /dev/mmcblk0p2 # mke2fs -j /dev/mmcblk0p3
- armedslack-currentを/dev/mmcblk0p3に展開
# mount -t ext3 -o rw,noatime /dev/mmcblk0p3 /mnt/card # cd ftp.armedslack.org/armedslack/armedslack-current/slackware # installpkg -root /mnt/card */*tgz
Angstromからカーネル等取得
- Angstromから最新カーネルを含んだrootfsを取得する。
- Select the machine : c7x0
- Select the release : unstable
- Base system : regular (task-base)
- Select the /dev manager : udev
- Select the type of image : tar.bz2
- User environment selection : Console only(残念ながら現時点ではX11を含むrootfsは作成出来なかった)
- Additional packages selection : All kernel modules
Angstromのカーネル+モジュールをARMedslackに展開
# mkdir angstrom # cd angstrom # tar xvjf ../取得したrootfs.tar.bz2 # cd /mnt/card/boot # (cd /どこか/angstrom/boot && tar cf - .) | tar xvpif - # cd /mnt/card/lib/modules # (cd /どこか/angstrom/lib/modules && tar cf - .) | tar xvpif - # vi /mnt/card/etc/fstab # sync;sync;sync # umount /mnt/card
kexecboot(ブートローダ)インストール用SDの用意
- 別のSDを用意し、先頭にVFATのパーティションを作っておく。
# mount /dev/mmcblk0p1 /mnt/card
- c7x0.tar.gzを取得。
# tar xvzf c7x0.tar.gz # cd c7x0 # cp zImage-kexecboot-2.6.32+2.6.33-rc6-r18-c7x0.bin /mnt/card/zImage.bin # cp updater.sh.c7x0 /mnt/card/updater.sh
kexecboot(ブートローダ)のインストール前に
私の環境では内蔵フラッシュにはAngstromが既にインストールされている。このままkexecbootをインストールすると、このAngstromが起動できなくなる。kexecbootからブートできるようにするには、上記で取得したAngstromの/boot以下と、/lib/modules以下を内蔵フラッシュに展開しておく。
kexecboot(ブートローダ)のインストール
- 上記のSD(VFAT)をスロットにセットする。
- ACアダプタで給電していることを確認する。
- 本体裏側の電池交換スイッチを「解除(交換時)」側に切り替え、5秒待ってから、「Fn」キーと「HOME」キーを同時に押しながら電池交換スイッチを「ロック(使用時)」に切り替える。
- 充電ランプ(オレンジ色)が点灯していることを確認して、「OK」キーを押しながら、「電源」キーを押す。
- メンテナンスメニューが表示されるので、「4.アップデート」を選択する。
- 用意したメモリカード(「2.CF」または「3.SD」)を選択し、「はい(Y)」を選択する(USBはサポート外)。
- アップデート(=kexecbootのインストール)が完了すると、自動的に再起動され、kexecbootが起動する。
ARMedslackの起動(1)
ARMedslack(with Angstrom's kernel)を展開したSDHCを挿し、rebootを行うと、kexecbootのメニューにARMedslackのパーティションが表示されるので、カーソルキーで選択し、[OK]する。
おぉ〜!カーネルのブートメッセージが流れて行く!...がしばらく眺めていると、
panic
のメッセージが出てフリーズ。どうやらrootをマウントできないよう。
ARMedslackの起動(2)
ルートデバイスのデバイスファイルを静的に作る必要があるようなので、内蔵Angstromで再起動し、/dev/mmcblk0* をARMedslackの/dev以下に展開(手抜き)。そしてARMedslackから再起動。すると、
kernel too old
のメッセージでフリーズ。
ARMedslackの起動(3)
ARMedslackのglibcはカーネルが2.6.32以降であることが要求される様子(?)。それに対して、ARMedslackにコピってきたAngstromのカーネルは2.6.26なので上記の状態になると推測する。よって、強引ではあるが、ARMedslackの/lib以下にAngstromの/lib以下を強制上書き(!)してカーネルとglibc等の整合を取ってみる。すると...
panic
...えーと、少しは進んだみたいだが、freeing memory ...みたいなメッセージの直後で固まった。
ARMedslackの起動(4)
今度は/sbin/initが見つからなかったよう。ただし、実際には/bin/initは存在しているので、Angstromのカーネルがbusybox版の/sbin/initでないと起動できないと判断した。えーいとARMedslackの/sbin以下にAngstromの/sbin以下を強制上書き(!)。すると...
出ました!login prompt !!
でも
/bin/sh: /lib/libc.so.6 version GLIBC.2.8 not found
みたいなメッセージが出てログインできない。
ARMedslackへのログイン(1)
あーっ疲れて来た。/libをAngstromのそれに置き換えたことの影響が出ている。ARMedslackの/bin以下にAngstromの/bin以下を強制上書き。あっ、それと/etc/passwd, /etc/shadowをいじってrootのパスワードを削除しておく。
ARMedslackへのログイン(2)
rootのログインシェルである/bin/bashでも
/bin/bash: /lib/libc.so.6 version GLIBC.2.8 not found
とのたまう。ログインできない。
ARMedslackへのログイン(ついに!)
rootのシェルを/etc/passwdをいじって/bin/shに変更。
ついにログイン成功!
結論(現時点での)
ログインは出来たものの、ARMedslackがカーネルバージョン2.6.32以降の環境でビルドされているので、Angstromの2.6.26なカーネル+glibcの下では多くのコマンドがマトモに動かなかった。残念ながら現時点では(私の力では)常用する環境とはなりえなかった。
ただし、今後Angstrom環境のカーネルが2.6.32以降の物になれば、かなり希望が出てくると思われるので、そのときに再度試してみたいと思う。
2011年03月12日 build of midori with Slackware-13.1
_ build of midori with Slackware-13.1
$ tar xvzf icu4c-4_6-src.tgz $ cd icu/source/ $ ./configure && make # make install
$ tar xvzf libsoup2.4_2.30.2.orig.tar.gz $ cd libsoup-2.30.2/ $ ./configure --without-gnome && make # make install
$ tar xvzf webkit-1.2.7.tar.gz $ cd webkit-1.2.7 $ ./configure && make # make install
$ tar xvzf midori-0.3.2.tar.gz $ cd ../midori-0.3.2 $ ./waf configure --disable-vala $ ./waf build --disable-vala $ ./waf build --run # ./waf install
$ MOZ_PLUGIN_PATH=/usr/local/firefox/plugins http_proxy="http://192.168.0.100:8080" midori http://www.youtube.com/
2012年03月12日 CFカード 無線LAN ADTEC ADLINK345CF on zaurus
_ CFカード 無線LAN ADTEC ADLINK345CF on zaurus
オクでADTEC ADLINK345CFを落札。今まで使ってたMELCO WLI2-CF-S11、MELCO WLI-CF-S11Gに比べて格段に通信が安定している。全く切れない(って言うか、それが普通なのか?)。
MELCO WLI2-CF-S11 | intersil PRISM 2.5 | 3.3V | 340mA | 62×43×5 | Type2 |
MELCO WLI-CF-S11G | intersil PRISM 2.5 | 3.3V | 200mA | 58×43×5 | Type2 |
ADTEC ADLINK345CF | Intersil PRISM 2.5 | 3.3V | 320mA | 58×42×10 | Type2 |