phoenix-power今回は、AndroidからChrootする新しいArch Linuxイメージの作成方法です。

前回、AndroidでChrootしたArchLinuxのカーネルアップデートが思いのほか面倒ぽい気がしたので、今回は、新しいイメージを用意する方法。

1
2
3
4
5
6
7
8
9
10
11
12
# まず、ディスクを用意して、フォーマット
$ sudo mkfs.ext2 /dev/sdX1
$ mkdir mnt
$ mount /dev/sdX1 mnt

# 次に、OSをダウンロードして、イメージを作成
$ curl -O http://archlinuxarm.org/os/ArchLinuxARM-am33x-latest.tar.gz
$ sudo bsdtar -xpf ArchLinuxARM-am33x-latest.tar.gz -C mnt
$ sync
$ sudo umount ./mnt
$ dd if=/dev/sdX of=./ArchLinuxARM-am33x-latest.img bs=1
$ sync

その他のイメージ:

ドライバなどの関係から、自分の端末にあったイメージを選択します。

http://os.archlinuxarm.org/os/

参考ページ:

http://archlinuxarm.org/platforms/armv7/ti/beaglebone

あとは、前回と同じような感じで、必要あれば容量を拡張して、Androidにイメージをコピー、AndroidからChrootするスクリプトを実行すればOKです。…と思います。

Arch-Linux:イメージの拡張
1
2
3
4
5
6
7
$ sudo pacman -S qemu
$ export size="2G"
$ export img="./archlinux.img"
$ qemu-img resize $img $size
$ sudo losetup /dev/loop0 $img
$ sudo mount -t ext4 /dev/loop0 /mnt
$ sudo resize2fs /dev/loop0 $size
Android-Terminal-Emulator:ArchLinuxの起動
1
2
3
4
5
6
7
8
9
10
11
12
13
$ ls
  archlinux.img, archlinux/
$ cd /sdcard
$ mount archlinux.img archlinux/
  /dev/loop0 on /storage/sdcard0/archlinux type ext2 (rw,relatime,errors=continue)
$ mount -o bind /dev/ /sdcard/archlinux/dev/
$ mount -t proc proc /sdcard/archlinux/proc/
$ mount -t sysfs sysfs /sdcard/archlinux/sys/
$ mount -t devpts devpts /sdcard/archlinux/dev/pts/
$ echo "nameserver 8.8.8.8" > /sdcard/archlinux/etc/resolv.conf

$ chroot /sdcard/archlinux/ pacman -Syu # upgrades...
$ chroot /sdcard/archlinux/ /bin/bash

参考ページ:

http://rubiojr.rbel.co/hack/2013/01/10/installing-arch-linux-in-your-android-phone-chroot/

そういえば、昨日紹介したAndroid Linuxのやつ、ログを見てみると、2013の初期頃は、カーネルにlinux-odroidを使ってたみたいですが、最後の方は、違うカーネルに切り替えてたぽい感じでした。なので、odroid系を使ってみても良いかもしれません。この記事で選択したam33xは一部カーネルモジュールの読み込みができてたので、選択しただけです。