BV1AL 之無所不記

2016-08-20

寄生 Linux 系統到手機裡

最近一支舊手機螢幕壞了,要修也要花錢,所以就讓它退役下來做些不一樣的事好了。

由於手機有1G RAM,如果不做什麼事,其實可以「寄生」一套 Linux 在裡面,
「寄生」的Linux可以不具備 kernel 相關的東西,藉著 Android 的 kernel
就可以吃香喝辣,所以只要小小的體積就俱有不少功能。

希望能把系統控制在200MB以內,包含基本的sshd, sshfs, python, w3m, tmux....
等等就可以做不少事, 最後整包系統(刪除不必要的東西如 /usr/share 下, 以及
/var/ 下)大約在 220M左右, 還可以接受。

用 adb 進入手機內建立一個300M 的 RAM disk, 把這包系統解到 ramdisk 裡
再 chroot 進入就可以啟用這包沒有 kernel 的寄生 Linux 了.

為了要找一個合適的 Linux, 找來找去最後找到 http://dietpi.com 裡面有
很多專為各種單板電腦打造的版本,可以選用其中的 OrangePi PC 或 NanoPi Neo
的image 來當「寄生」的原型,特別說明一下,它是Debian Jessie base,
所以如果熟悉 Debian/Ubuntu 的話應該很容易上手.

這裡以 NanoPi NEO 的image 為例,下載後以 7z 解壓縮出原本大小約為 460M, 但是
它包含了一塊 vfat 及一塊 ext4 partition, vfat 是boot/kernel 相關, 用不到,
我們只要取出 ext4 也就是Linux 這一塊.

fdisk -l DietPi_v127_NanoPiNEO-armv7-(Jessie).img 可以看到

DietPi_v127_NanoPiNEO-armv7-(Jessie).img2          133120

這個 133120 就是它的起始位置,
133120 * 512(每 sector) = 68157440

來把它 mount 起來:
mkdir /media/dietpi
mount -o offset=68157440 -t ext4 DietPi_v127_NanoPiNEO-armv7-\(Jessie\).img /media/dietpi
cd /media/diatpi
cp -a * /PATH/my_dietpi/

然後 chroot 進入 /PATH/my_dietpi/ 底下進行改造, 再將改造出來的整個目錄打包,
就可以塞進手機裡「寄生」了!

標籤: , ,