miniroot 是個(gè)非常小巧的 shell 環(huán)境,用來(lái)安裝和引導(dǎo)其它根文件系統(tǒng),例如 Ubuntu, Gentoo, Arch Linux 等,這些系統(tǒng)可以在內(nèi)核支持的存儲(chǔ)設(shè)備的根或子目錄上。這意味著我們能夠從開發(fā)板的 eMMC Flash, 外置 TF 卡或 U 盤上安裝多個(gè)系統(tǒng),而且方便地切換系統(tǒng),而不用修改并燒寫 parameter 文件。miniroot 需要使用串口線來(lái)調(diào)試,參見《串口調(diào)試》一文。另外在下載系統(tǒng)映像時(shí)需要使用以太網(wǎng),當(dāng)然,也可以預(yù)先下載到移動(dòng)存儲(chǔ)設(shè)備上。
請(qǐng)先備份好開發(fā)板及相關(guān)存儲(chǔ)設(shè)備上的數(shù)據(jù),以免操作失誤或其它不可預(yù)見的因素帶來(lái)的數(shù)據(jù)丟失。首先確保開發(fā)板已經(jīng)燒寫了可以正常工作的固件,然后下載以下映像文件:
- misc.imghttps://pan.baidu.com/s/17Iw9QEMkUavOENZR9Xkqjw
- linux-boot-miniroot.imghttps://pan.baidu.com/s/1poSyJxMjFEGSYZsbna8Rag
如果開發(fā)板安裝的是 Android 或雙系統(tǒng)固件,則將 linux-boot-miniroot.img 寫到 recovery 分區(qū),misc.img 寫到 misc 分區(qū)。如果開發(fā)板安裝的是 Linux固件,則將 linux-boot-miniroot.img 寫到 boot 分區(qū)。miniroot 初次啟動(dòng)后,會(huì)進(jìn)入 shell,在串口終端上可以見到提示符:
miniroot#
然后開始配置網(wǎng)絡(luò),如果是 DHCP 網(wǎng)絡(luò):
miniroot# udhcpc
否則就要手工配置網(wǎng)絡(luò)參數(shù)(將192.168.1.* 替換成實(shí)際使用的網(wǎng)絡(luò)地址):
miniroot 支持從目錄里啟動(dòng),這就意味著根文件系統(tǒng)的放置位置很靈活,而且可以方便地支持多種 Linux 發(fā)行版啟動(dòng)。注意,由于調(diào)試串口與 TF 卡接口有信號(hào)引腳共用,因此不能同時(shí)使用。 下面用 U 盤第一分區(qū)作為系統(tǒng)存儲(chǔ),創(chuàng)建 ext4 文件系統(tǒng)并掛載到 /mnt,ubuntu 將解壓到 /mnt/ubuntu 下:
miniroot# mkfs.ext4 -E nodiscard /dev/sda1 miniroot# mount /dev/sda1 /mnt
一般需要保證此分區(qū)有 4G 以上的剩余空間。
ubuntu-core 是最小的根文件系統(tǒng),在安裝之后根據(jù)需要再設(shè)置桌面或服務(wù)器環(huán)境。下載并解壓到 /mnt :
miniroot# cd /mnt miniroot# wget -P /mnt http://cdimage.ubuntu.com/ubuntu-core/releases/15.04/release/ubuntu-core-15.04-core-armhf.tar.gz miniroot# mkdir /mnt/ubuntu miniroot# tar -xpzf /mnt/ubuntu-core-15.04-core-armhf.tar.gz -C /mnt/ubuntu
- 設(shè)置主機(jī)名稱
miniroot# echo ubuntu > /mnt/ubuntu/etc/hostname miniroot# sed -e 's/miniroot/ubuntu/' < /etc/hosts > /mnt/ubuntu/etc/hosts
新增用戶帳戶(帳戶和密碼均是 “ubuntu”):
miniroot# chroot /mnt/ubuntu useradd -G sudo -m -s /bin/bash ubuntu miniroot# echo ubuntu:ubuntu | chroot /mnt/ubuntu chpasswd
- 安裝必須的包
miniroot# mount -t proc none /mnt/ubuntu/proc miniroot# mount -t devtmpfs none /mnt/ubuntu/dev miniroot# cp /etc/resolv.conf /mnt/ubuntu/etc/ miniroot# chroot /mnt/ubuntu /bin/bash root@miniroot:/# apt-get update root@miniroot:/# apt-get install --no-install-recommends sudo iproute net-tools isc-dhcp-client root@miniroot:/# exit miniroot# rm /mnt/ubuntu/etc/resolv.conf miniroot# umount /mnt/ubuntu/proc miniroot# umount /mnt/ubuntu/dev
- 啟動(dòng) Ubuntu
miniroot# boot /mnt:/ubuntu /lib/systemd/systemd
提示:如果根設(shè)備沒有掛載,可以將冒號(hào)前的掛載目錄替換成根設(shè)備文件,miniroot 會(huì)自動(dòng)掛載:
miniroot# boot /dev/sda1:/ubuntu /lib/systemd/systemd
- 串口登錄 Ubuntu
Ubuntu 15.04 ubuntu ttyFIQ0 ubuntu login: ubuntu Password: ubuntu Last login: Tue May 26 08:11:03 UTC 2015 on ttyFIQ0 Welcome to Ubuntu 15.04 (GNU/Linux 3.10.0 armv7l) * Documentation: https://help.ubuntu.com/ ubuntu@ubuntu:~$ sudo -s [sudo] password for ubuntu: ubuntu root@ubuntu:~#
- 設(shè)置網(wǎng)絡(luò)(DHCP)
root@ubuntu:~# echo auto eth0 > /etc/network/interfaces.d/eth0 root@ubuntu:~# echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0 root@ubuntu:~# ln -fs ../run/resolvconf/resolv.conf /etc/resolv.conf root@ubuntu:~# ifup eth0
- 更新軟件包
root@ubuntu:~# cp /etc/apt/sources.list /etc/apt/sources.list.orig root@ubuntu:~# sed -i -e 's,^# deb\(.*\)$,deb\1,g' /etc/apt/sources.list root@ubuntu:~# apt-get update root@ubuntu:~# apt-get dist-upgrade
- 重啟
root@ubuntu:~# reboot
- 進(jìn)入 miniroot,編輯環(huán)境變量,加入 ubuntu 的啟動(dòng)參數(shù):
miniroot# editenv boot=/dev/sda1:/ubuntu init=/lib/systemd/systemd autoboot=1
- 保存環(huán)境變量并重啟
miniroot# saveenv miniroot# reboot -f
安裝 Lubuntu (LXDE)桌面環(huán)境:
root@ubuntu:~# apt-get install lubuntu-desktop
將 U 盤卡拔出,插入到主機(jī)系統(tǒng),掛載到 /mnt 目錄上。查看根文件系統(tǒng)所需空間的大?。?/p>
sudo du -hs /mnt/ubuntu
視情況對(duì) /mnt/ubuntu 目錄進(jìn)行清理,特別是一些日志目錄、臨時(shí)目錄等。生成空白磁盤映像文件,以生成 1G 大小的根文件系統(tǒng)磁盤映像文件為例:
cd /new/firmware/work/dir/ dd if=/dev/zero of=linuxroot.img bs=1M count=1024 # 格式化成 ext4 文件系統(tǒng)格式,卷標(biāo)為 linuxroot mkfs.ext4 -F -L linuxroot -m 0 linuxroot.img
掛載,拷貝數(shù)據(jù),然后卸載:
mount -o loop linuxroot.img /opt cp -a /mnt/ubuntu/* /opt/ umount /opt
這樣 linuxroot.img 就是最終的根文件系統(tǒng)映像文件了。
往 misc 分區(qū)燒寫 misc.img 后,開發(fā)板就會(huì)從 recovery 分區(qū)啟動(dòng)系統(tǒng),要恢復(fù)回 boot 分區(qū)啟動(dòng),有兩種方法:
- 下載 misc_zero.imghttps://pan.baidu.com/s/1L6stnnwFQhGX_eW4Ze8lSg , 然后燒寫到 misc 分區(qū)
- 在開發(fā)板的 Linux shell 下運(yùn)行:
sudo dd if=/dev/zero of=/dev/block/mtd/by-name/misc bs=16K count=count=3 sudo sync sudo reboot
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6084瀏覽量
35154 -
安卓
+關(guān)注
關(guān)注
5文章
2116瀏覽量
56960 -
Firefly
+關(guān)注
關(guān)注
2文章
538瀏覽量
6961
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論