在農村,一切都是相對的。
長話短說,我已經厭倦了我們在農村做的一個小小的突破。
我本該去放松,讀了一大堆東西涉及到自然語言的處理。但是因為我這些天一直在修改LXC和chroot的時候,我決定將我的Android手機(又叫做我的口袋服務器)升級到Ubuntu13.04.
(如果你錯過了這個職位,我將使用Complete Linux Installer去運行一個服務器沙箱關掉一個舊的Xperia Arc S,盡管它對我來說這個網站運行一個實例已經足夠好了——除了更多。)
從12.10版本到12.04版本做發布、升級工作詳細到步驟,但是完整的Linux安裝程序提供的圖像都是用armel創建的,而13。04版本已經轉移到專門的armhf上了——所以之後確認我的Xperia可以運行armhf的二進制文件viamultiarch(這裡順便說一下,做了一點快捷的事情),我決定重新開始創建一個新的影像。
遺憾的是有很少的信息如何去執行,除了一些零散的論壇帖子,所以我決定記錄下這一過程。這一切都相當簡單提供您使用的是完整的Linux安裝的應用程序已經有Ubuntu的框中得心應手(我敢說它可以於手機本身做簡單的情況下)。
首先,在這裡您可以使用Intel的機器得到這個更一般的情況,你需要設置QEMU和ARM二進制以及asdebootstrap支持的:
sudo apt-get install debootstrap qemu-user-static qemu-system git \
gcc-arm-linux-gnueabihf binfmt-support
現在,創建文件系統本身(這是為2GB圖片)和它掛載在/ mnt目錄中。由於我們並不需要所有的鐘聲和口哨聲ofext3/ext4(畢竟,最終的結果將要運行的文件內),我們將建設裡面的一切anext2filesystem:
dd if=/dev/zero of=ubuntu.img bs=1024 count=2097152
mkfs.ext2 ubuntu-armhf.ext2.img
sudo mount -o loop ubuntu-armhf.ext2.img /mnt
接下來,使用debootstrap來部署基礎環境(這裡給出了主要的設置):
HOSTNAME=ubuntu-armhf sudo debootstrap --variant=minbase --foreign \
--arch armhf raring /mnt
現在在即將完成的chroot設備裡部署qemu-arm-static:
sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin/
並用它完成剩下的部署工作:
LANG=C sudo chroot mnt /usr/bin/qemu-arm-static -cpu cortex-a9 /bin/bash
./debootstrap/debootstrap --second-stage
一旦上面的工作完成了,我們需要安裝apt源。(你也可以選擇性的安裝deb-src,不過我現在還不需要它):
echo "deb http://ports.ubuntu.com raring main restricted universe" > /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01
然後,你就可以安裝一些必需的工具(我覺得這些都是必需的):
(譯注:wget,vim這些當成必需可以理解,怎麼golang和git-core也成必需了?)
apt-get update
apt-get install sudo apt-utils dialog less wget vim net-tools openssh-server \
htop tmux build-essential libevent-dev python-dev python-setuptools \
python-lxml sqlite3 nodejs npm golang git-core
如果你的手機電力夠用,你也可以安裝VNC服務(和一個迷你的X11設置):
apt-get install --no-install-recommends tightvncserver
你可能需要運行QEMU,所以你應該多安裝幾個終端,盡管這不是Android chroot必需的:
cp /etc/init/tty1.conf /etc/init/ttyAMA0.conf
sed -i "s/tty1/ttyAMA0/" /etc/init/ttyAMA0.conf
這還沒完,你還需要一個擁有sudo權限的用戶:
adduser ubuntu
usermod -aG sudo ubuntu
重啟你的chroot設備:
exit
現在我們對已經完成安裝的Linux做下調整,復制init.sh腳本能放到/root/init.sh,確保其可執行, 添加上下面這些掛載點:
sudo cp init.sh /mnt/root/init.sh
sudo chmod +x /mnt/root/init.sh
sudo rm /mnt/usr/bin/qemu-arm-static
sudo mkdir /mnt/sdcard
sudo mkdir /dev/shm
sudo umount /mnt
現在復制圖片到 Ubuntu圖片在你SD卡上的位置,替換原來的.(如果你想保存Ubuntu的圖片,壓縮後大概有400MB).
我已經試著運行了 Postgres — 關閉了TCP和UNIX套接字,這樣它就不會和網絡設置混淆.
更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11