zlib1.2.11をZaurus向けにビルド

ダウンロード

$ mkdir -p src/zlib
$ cd src/zlib
$ wget https://zlib.net/zlib-1.2.11.tar.gz
$ tar zxf zlib-1.2.11.tar.gz

ipk向けディレクトリ作成

$ mkdir -p ipk/opt/QtPalmtop
$ mkdir ipk/CONTROL

ビルド

$ cd zlib-1.2.11
$ ./configure --prefix=/home/zaurus/src/zlib/ipk/opt/QtPalmtop
$ make
$ make install

ipk作成

$ cd ../
$ vi ipk/CONTROL/control
Package: zlib
Priority: optional
Section: libs
Version: 1.2.11
Architecture: arm
Maintainer: kkimi
Depends:
Description: zlib is compression library.
$ ipkg-build ipk

www.dropbox.com

tree1.7.0をZaurus向けにビルド

前回作成したDocker上のZaurus開発環境を使用する kkimi.hatenablog.com

ダウンロード

$ mkdir -p src/tree
$ cd src/tree
$ wget http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
$ tar zxf tree-1.7.0.tgz

ipk向けのディレクトリ作成

Zaurusは/opt/QtPamtop以下へのインストールが推奨とどっかで見た気がする

$ mkdir -p ipk/opt/QtPalmtop
$ mkdir ipk/CONTROL

ビルド

configureがないのでMakefileを直接編集する

  1. インストール場所を変更する
  2. CCがgccに固定されているのでarm-linux-gccに変更する
$ cd tree-1.7.0
$ vi Makefile
-prefix = /usr
+prefix = /home/zaurus/src/tree/ipk/opt/QtPalmtop

-CC=gcc
+CC=arm-linux-gcc

VERSION=1.7.0
TREE_DEST=tree
$ make
$ make install

ipkパッケージ作成

$ cd ../
$ vi ipk/CONTROL/control

アプリの詳細を記述する
DescriptionはWikipediaとかからコピーでOK

Package: tree
Priority: optional
Section: base
Version: 1.7.0
Architecture: arm
Maintainer: kkimi
Depends:
Description: Tree is a recursive directory listing command that produces a depth
  indented listing of files, which is colorized ala dircolors if the LS_COLORS
  environment variable is set and output is to tty.
$ ipkg-build ipk

tree_1.7.0_arm.ipkができているのでZaurusにコピーしてインストールする

www.dropbox.com

Zaurusの開発環境をDockerで作成

かなり昔にVirtualbox上に作成していたZaurusのクロスコンパイル環境をDocker上に作成してみる
今でもSharpのサイトからパッケージをダウンロードできたのは驚き
github上にDockerfileを作成して管理する

準備

今回はWindows上で作成

Dockerfile作成

Dockerfile自体はgithubで作成して管理
CentOS上に必要なパッケージをインストールしているだけ github.com

Dockerfileからイメージを作成

-tでイメージ名を指定

$ git clone https://github.com/kkimigawa/zaurus-cross-compile-on-docker.git
$ cd zaurus-cross-compile-on-docker
$ docker build ./ -t zaurus-dev

コンテナ作成

ホストとファイルのやり取りをするために-vオプションでDockerからc:/Usersにアクセスできるようにする
runしたらそのままzaurusユーザとしてログインするはず

$ docker run -it -v c:/Users:/data zaurus-dev /bin/bash

コンパイルテスト

$ vi test.c
/* テストプログラム */
#include <stdio.h>

int main(void) {
  printf("test\n");

  return 0;
}
$ arm-linux-gcc -o test test.c
$ file test 
test: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.0.0, not stripped

arm向けにビルドできているっぽい
testをZaurusに持っていって実行したところ問題なく動作した
Virtualbox上の開発環境ではOpenSSLやnethackとかビルドしていたみたいなので今後はそれらをビルドしてみたい

ZaurusでArch Linux【失敗】

以前にZuaurus3x00向けにArch Linuxにインストールしている人がいたが、1000と860しか持ってないので試せなかった。
最近見たら1000向けのファイルもアップロードされいるっぽい。
開発者が答えているスレッドでも1000持ってないが動くはずのようなことが書かれていたため試してみた。

kexecbootのインストー

  1. ここからlinux-2.6.26-c1000-frankenstein.tar.gzをダウンロード
  2. FATにフォーマットしたSDカードに↑のファイルを書き込み
  3. Zaurusの電源をOFF
  4. 電源プラグを挿してOKボタンを押しながら電源ON
  5. アップデート→SDで更新

linux-3.10.y-c1000-f2fs-kexec-test-r0.tar.gzのほうは試してみたところ起動できなかった。

Arch Linuxのインストー

LinuxマシンがなかったのでRaspberry PiにRaspbianをインストールして実行。

  1. ここからalarm-zaurus-c3x00-minimal-rootfs-may2017.tar.xzをダウンロード
  2. 1GB以上のSDカードかCFを用意
$ sudo parted -s -a optimal /dev/sda mklabel msdos -- mkpart primary ext4 1 -1
$ sudo mkfs.ext4 /dev/sda1
$ sudo mount /dev/sda1 /mnt/
$ sudo bsdtar xvf alarm-zaurus-c3x00-minimal-rootfs-may2017.tar.xz -C /mnt/
$ sudo cp alarm-zaurus-c3x00-minimal-rootfs-may2017.tar.xz /mnt/root/
$ sudo umount /mnt/; sync

※CFの場合は/mnt/boot/boot.cfgの APPEND=root=/dev/mmcblk0p1 を APPEND=root=/dev/sdb1に変える

起動と失敗

あとはSDかCFを挿して電源ONするだけだがkexecboot起動後にインストールしたデータが認識されない。 ext4ext3ext2に変えても変化なし。
やり方をミスしてるっぽい気がする。
更新されたらまた試してみたい。