#2020/05/05 改版
Q. 什麼是 rootfs ?
嵌入式系統所使用的 Linux,如同工作站版本的 Linux 一樣,都有一個 / 目錄,這個目錄就是所謂的 rootfs。X86 主機的 / 目錄是我們在安裝 Debian Linux 時所建立,但是嵌入式系統的 Linux,其安裝流程十分不一樣,它沒有開機光碟/隨身碟等作為安裝工具,因此必須手動進行安裝。
需要工具:
debootstrap qemu-user-static
請執行:
# apt-get install debootstrap qemu-user-static
*** 我們預計先作一個虛擬的 ARM 系統,以 qemu 來執行,未來各位買 raspberry pi 來進行實作時,要安裝原廠所提供的嵌入式 Linux 作業系統 ***
/mnt/sdcard1 - 大小:80M/ 檔案系統:VFAT/ 主要功能:放系統開機核心。
/mnt/sdcard2 - 大小:* / 檔案系統:EXT4/ 主要功能:放 rootfs 及應用程式。
確定掛載後,我們要在 /mnt/sdcard2 目錄下建立新的 rootfs,指令如下:
# debootstrap \
--arch=armhf \
--keyring=/usr/share/keyrings/debian-archive-keyring.gpg \
--verbose \
--foreign \
buster \
/mnt/sdcard2 \
file:///home/ftp/debian
其中
--arch=armhf 是指我們 arm 的版本是 hf (Hard Float)
--keyring 是告訴 debootstrap 其 keyring.pgp 檔的位置
--verbose 是將過程全部顯示出來
--foreign 是指使用 armel 這個架構,一般都是在 x86_64 主機上實作其它平台的
rootfs,所以要加上此參數。
buster 是指我們現在要安裝的 debian 版本為 buster,以後若升級至 bullseye
的話必須要把 buster 改成 bullseye。
/mnt/sdcard2 是指要建立的 rootfs 目錄
file:///home/ftp/debian 是指建立 rootfs 時要下載的鏡像站來源,一般來說如果使用
網路鏡像站的話,其參數為:
ftp://debian.csie.nctu.edu.tw/debian
或
ftp://opensource.nchc.org.tw/debian
等等諸如此類的鏡像站來源,使用網路鏡像站有很多缺點,最主的缺點是
下載套件的時間是跟網路速度有關,因此先前帶大家自行建立網路鏡像站
就是為了解決這個問題,所以請使用 file:///home/ftp/debian 即可不上
網下載而是使用本機硬碟之鏡像站來下載,速度會非常快。
執行上述指令會出現底下訊息:
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id 75DDC3C4A499F1A18CB5F3C8CBF8D6FD518E17E1)
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
..
I: Extracting libmount1...
I: Extracting libsmartcols1...
I: Extracting libuuid1...
I: Extracting mount...
I: Extracting util-linux...
I: Extracting liblzma5...
I: Extracting zlib1g...
這樣表示 debootstrap 的第一階段告一段落,接著請執行:
# cp /usr/bin/qemu-arm-static /mnt/sdcard2/usr/bin/
然後進入 chroot 環境:
# chroot /mnt/sdcard2 /bin/bash
bash: warning: setlocale: LC_ALL: cannot change locale (zh_TW.UTF8)
I have no name!@120:/#
看到 I have no name! 的提示符號就表示我們已經進入 chroot 環境,請再執行:
# /debootstrap/debootstrap --second-stage
I: Keyring file not available at /usr/share/keyrings/debian-archive-keyring.gpg; switching to https mirror https://mirrors.kernel.org/debian
I: Installing core packages...
I: Unpacking required packages...
I: Unpacking acl...
I: Unpacking libacl1:armel...
..
I: Configuring tasksel...
I: Configuring tasksel-data...
I: Configuring libc-bin...
I: Configuring systemd...
I: Base system installed successfully.
看到最後一行有 Base system installed successfully 表示最原本的 rootfs 已經作好。
I: Installing core packages...
I: Unpacking required packages...
I: Unpacking acl...
I: Unpacking libacl1:armel...
..
I: Configuring tasksel...
I: Configuring tasksel-data...
I: Configuring libc-bin...
I: Configuring systemd...
I: Base system installed successfully.
看到最後一行有 Base system installed successfully 表示最原本的 rootfs 已經作好。
作完等待下次再來進行設定,請先將 sd.img 整個解除掉 (umount, losetup -d)。。
沒有留言:
張貼留言