Banana PI (香蕉派) 安裝 ubuntu-core-14 最小核心的操作步驟

Banana PI (中文名:香蕉派,以下簡稱 BPI)是比 Raspberry PI (中文名:樹莓派)性能更強、功能更多、內置 AllWinner A20 雙核 CPU、1GB DDR3內存、SATA 硬盤接口、千兆網口、HDMI接口、可運行 Linux/OpenWRT/Android 等系統、而且價格比較便宜的單板微型電腦;詳見:www.bananapi.com


在 BPI 官網上提供有幾個常見系統的 IMG 供下載(http://www.lemaker.org/resources/9-38/image_files.html),可直接燒寫到 SD 卡用於啓動 BPI;本文試驗了另一種自行構建 BPI 系統的方法,可根據需要定製系統各部件和功能;本文打算嘗試構建一個最小的基本 Linux 服務器系統;爲了方便,本文直接選用目前廣泛使用的 Ubuntu 提供的成熟 core 作爲 rootfs,這樣既能保證系統穩定可靠,又便於後期功能定製,節省時間和精力。安裝 ubuntu core 14 和 gcc 開發環境等常用軟件後總共佔用600MB存儲空間,內存佔用50MB左右,系統運行狀況如下:



== A. 準備工作 ==


一、所需硬件

需要 Banana PI 開發板一塊;

一臺正常運行 Linux 系統的電腦(Linux 虛擬機也行);

容量大於 1GB SD 卡,或者 TF 配卡套,以及相應讀卡設備;

另準備一張 4GB SD 卡,用於燒寫現有 .img 以啓動 BPI 作輔助操作;


二、所需軟件

從 ubuntu 網站 http://cdimage.ubuntu.com/ubuntu-core/releases/ 下載 ubuntu-core-14.04.1-core-armhf.tar.gz 包文件(60MB)

從 banana pi 網站 http://www.lemaker.org/resources/9-38/image_files.html 下載 Raspbian_For_BananaPi_v3_0.img 包文件

從 sunxi 網站 http://dl.linux-sunxi.org/nightly/u-boot-sunxi/u-boot-sunxi/u-boot-sunxi-latest/ 下載 u-boot-sunxi-bananapi.tar.xz 包


== B. 主要步驟 ==


一、SD 卡分區


在 Linux 電腦上連接 SD 卡,查看設備編號:

$ sudo fdisk -l

如果系統中沒有連接別的設備,通常此 SD 卡設備名爲: /dev/sdb ;以下假設此卡就爲 /dev/sdb,須根據實際情況進行替換;命令中寫錯設備名後果難料;

進入 fdisk 分區程序,用 n 子命令將此卡空間分成兩個分區,提示輸入第一分區大小時輸入 +30M,其他參數均以回車接受默認值即可;

$ sudo fdisk /dev/sdb

以 p 子命令查看分區情況,確認無誤後,輸入 w 子命令確認分區寫入卡設備中並退出;

二、格式化分區


將 SD 卡中兩個分區分別進行格式化爲 vfat 和 ext4 文件系統;

$ sudo mkfs.vfat /dev/sdb1
$ sudo mkfs.ext4 /dev/sdb2

三、寫入 U-Boot 啓動代碼


從下載的 u-boot-sunxi-bananapi.tar.xz 包中取出 u-boot-sunxi-with-spl.bin 文件;

先清除 SD 卡前段內容;

$ sudo dd if=/dev/zero of=/dev/sdb bs=1k count=1023 seek=1

接着在特定位置寫入啓動代碼和數據

$ sudo dd if=/path/to/u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

注意:此處命令行假設所有下載的文件包均存放在 /path/to 虛擬目錄中,操作時須替換成實際目錄;


四、安裝內核啓動文件


如果願意,Linux 內核文件可以選擇自行編譯;這裏爲了方便,直接從廠商提供的 IMG 包中取出;這裏選用從 Raspbian_For_BananaPi_v3_0.img 包中取出內核文件,主要就這三個:(uImage,script.bin,uEnv.txt);

先查看 IMG 包中第一分區的起始塊位置,這裏假設爲 8192,將其乘以 512 的結果 4194304 放入下面命令中;

$ sudo mkdir /mnt/img
$ fdisk -l /path/to/Raspbian_For_BananaPi_v3_0.img
$ sudo mount -t vfat -o loop,offset=4194304
/path/to/Raspbian_For_BananaPi_v3_0.img  /mnt/img

掛載成功後,從 /mnt/img 目錄中複製出來這三個內核文件即可;

$ cp /mnt/img/uEnv.txt  ./
$ cp /mnt/img/bananapi/uImage ./
$ cp /mnt/img/bananapi/script.bin ./
$ sudo umount /mnt/img

由於 ./Raspbian_For_BananaPi_v3_0.img 包中內核放在子目錄 ./bananapi 中,現在我們打算將此三個內核文件直接放在 SD 卡第一分區根目錄中,所以還需要將複製出來的 uEnv.txt 內容用 vi 命令稍稍編輯一下,去掉內核文件的目錄路徑,使其內容寫成這樣子,然後保存退出 vi 命令;

bootargs=console=ttyS0,115200 console=tty0
disp.screen0_output_mode=EDID:1280x720p50 hdmi.audio=EDID:0
console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline
rootwait
aload_script=fatload mmc 0 0x43000000 script.bin;
aload_kernel=fatload mmc 0 0x48000000 uImage; bootm 0x48000000;
uenvcmd=run aload_script aload_kernel

內核文件提取出來後,就可以複製到 SD 卡第一分區中;

$ sudo mkdir /mnt/sd
$ sudo mount -t vfat /dev/sdb1 /mnt/sd
$ cp uEnv.txt script.bin uImage /mnt/sd
$ sudo umount /mnt/sd

如果需要調整 script.bin 中參數,比如AV口接電視機,則需要先用 bin2fex 軟件來實現文件格式轉換成文本文件,再作修改,參見:linux-sunxi.org/Fex_Guide

五、安裝 rootfs


將下載得到的 ubuntu-core-14.04.1-core-armhf.tar.gz 包文件直接釋放到 SD 卡第二分區即可;

$ sudo mount /dev/sdb2 /mnt/sd
$ cd /mnt/sd
$ tar xzvf /path/to/ubuntu-core-14.04.1-core-armhf.tar.gz

六、安裝 modules 和 firmware 文件


採用與前面第四步相同的方法,直接從現成 Raspbian_For_BananaPi_v3_0.img 中取出內核對應的 modules/firmware 文件;

先查出 IMG 包中第二分區的起始塊位置,這裏假設爲 122880,將其乘以 512 的結果 62914560 放入下面命令中;

$ fdisk -l /path/to/Raspbian_For_BananaPi_v3_0.img
$ sudo mount -t ext4 -o loop,offset=62914560 /path/to/Raspbian_For_BananaPi_v3_0.img  /mnt/img

掛載成功後,從 /mnt/img 目錄中複製內核版本對應的 modules/firmware 硬件驅動相關文件到 /mnt/sd;

$ sudo cp -r /mnt/img/lib/firmware  /mnt/sd/lib/

$ sudo cp -r /mnt/img/lib/modules/3.4.90  /mnt/sd/lib/modules


從宿主系統複製 DNS 服務器地址信息 resolv.conf 到 /mnt/sd/etc,稍後可能需要在線安裝軟件;

$ sudo cp -p /etc/resolv.conf /mnt/sd/etc

完成以上步驟,SD 卡中 core 系統所需文件基本都已就緒,只待對新系統稍作配置即可開始工作了;

七、初步配置新系統


爲了完成 SD 卡中新系統基本配置,需要使用 chroot 命令,方便對新系統設置 root 密碼,安裝必要軟件包等操作;

由於上述操作過程均是在一臺 x86 Linux 主系統上進行,而 chroot 需要使用 arm 架構的主系統,所以,這裏利用另一張 SD 卡啓動 Banana PI 作爲主系統進行操作;如果你使用的主系統電腦本身就是 arm 架構,就不必另啓 BPI 了,可直接利主系統進行其餘操作;

爲了切換到 BPI arm 主系統中進行 chroot 操作,須先卸載 x86 系統上掛載的 SD 卡,同時清除臨時目錄;

$ sync
$ sudo umount /mnt/img
$ sudo umount /mnt/sd
$ sudo rm -r /mnt/img /mnt/sd

用燒寫好的另一張 SD 卡啓動 BPI(可以採用 Raspbian_For_BananaPi_v3_0.img),並將新系統 SD 卡通過讀卡器連接到 BPI USB端口,先查看系統中已自動識別的 USB
設備,以確定新 SD 卡的設備名稱,這裏假設新SD卡設備名稱爲:/dev/sdb

$ lsusb
$ lsblk

掛載新SD卡的第二分區到 /mnt 目錄,然後進入 chroot 狀態;

$ sudo mount /dev/sdb2 /mnt
$ sudo chroot /mnt /bin/bash

正常進入 chroot 後,所有命令均直接針對新系統進行操作;首先,設置 root 密碼;

# passwd

然後配置主機名稱、設置 noatime、添加用戶帳戶、並開啓網絡接口等;

# echo "ucore14" > /etc/hostname
# adduser newid

在啓動命令文件 /etc/rc.local 中插入一行:mount -o remount -o noatime / ,以提升性能同時防止頻繁擦寫弄壞 SD 卡;

# vi /etc/rc.local

然後設置時區;

# mv /etc/localtime /etc/localtime.0
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

在 /etc/network/interfaces 輸入網卡配置,比如,打算以 DHCP 方式連接路由器,則在其中填入以下內容:

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

如果還需要配置 wifi 網絡,則須另購一隻兼容的 USB 接口 wifi 網卡,然後通過 wpa_supplicant 軟件進行配置;這裏暫時不考慮安裝wifi網卡,待新系統正常運行起來再配置其他子系統即可;

至此,一個最基本的 Ubuntu 核心系統即安裝完成,如果一切正常,便可使用此 SD 卡正常啓動 Banana PI 了;不過得注意,下載得到的 ubuntu-core-14.04.1-core-armhf.tar.gz 包文件中並未安裝 sshd 軟件包,這意味着無法遠程登錄進入系統;假如你沒有 HDMI 顯示器可用,或者你的 Banana PI 只作服務器運行,則在退出 chroot 狀態前,安裝上 ssh 軟件包是很有必要的,爲此,需要跳轉到下一步驟;

如果此時不打算安裝 ssh 服務,也不再進行其他配置和操作,則可以考慮退出 chroot 狀態,並卸載 SD 卡;

# exit
# sync
# sudo umount /mnt

八、安裝 SSH 遠程登錄(無屏必需)

在上面 chroot 狀態中繼續安裝 ssh 軟件包;如果此前已退出 chroot 則需再次進入 chroot ;


# apt-get update
# apt-get install ssh

此命令需要在線下載軟件包,這也是前面需要事先複製 /etc/resolv.conf 到 SD 卡 rootfs 的原因;網速正常的話,通常幾分鐘即可下載安裝完成;

由於默認安裝的 sshd_config 配置,基於對安全性的考慮,不允許以密碼方式遠程登錄 root 帳戶和空密碼遠程登錄,只允許使用 ssh-key 遠程登錄 root 帳戶;這裏爲了方便登錄,決定暫時開啓密碼登錄,編輯 /etc/ssh/sshd_config 配置文件;

# vi /etc/ssh/sshd_config

將此項設置的值由 "without-password" 改爲 "yes" 即可,或者將原設置行註釋掉,再輸入新的設置行,如下:

# PermitRootLogin without-password
PermitRootLogin yes

保存此項設置修改後,必要的安裝和配置就全部完成了,退出 chroot,卸載 SD 卡並關機;

# exit
# sync
# sudo umount /mnt
# sudo poweroff

至此,此 SD 卡中已包含有一個可啓動的 Ubuntu Core 14.04 for Banana PI;將此 SD 卡插入 Banana PI 開機,如果順利,很快就可啓動出來,並可以 ssh 遠程登錄進入系統;上面配置 Banana PI 以 DHCP 方式從路由器自動獲取 IP 地址,所以,在 ssh 登錄前,可在路由器管理界面 DHCP 欄目中查看路由器爲 BPI 分配的 IP 地址;

由於 Ubuntu Core 只是一個 Core,沒有包含其他任何應用系統,如:APACHE、MYSQL、PHP、X11、OFFICE 等等,不過,可利用 Debian 系的 apt-get install xxx 很方便的安裝其餘所需要的軟件。。。


== C. 小結 ==

以上試驗步驟實現了在目標 SD 卡中從分區開始配置一個可啓動 Banana PI 的 Ubuntu Core 系統,操作步驟較多,爲了省事,也可以採用逆向操作,即直接在 SD 卡中燒寫一個現成的 IMG 系統,然後用目標 rootfs 替換掉原系統即可;網上有許多針對 arm 架構的 rootfs 可用,較小的解壓後只有30M左右,比如:linaro-image-minimal-initramfs-genericarmv7a;不過,爲了方便安裝應用軟件,還是選用 debian core, ubuntu core 這類要方便一些,儘管尺寸稍大些;


另外,基於以上操作步驟,稍作變通,即可根據需要製作自己的 .img 系統;過程大致相同,只需將 SD 卡換成一個 .img 文件,將 .img 文件掛載爲 loop 設備即可;具體操作此處不再贅述;



發佈了67 篇原創文章 · 獲贊 45 · 訪問量 93萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章