03 H5用busybox製作64位檔案系統
阿新 • • 發佈:2019-01-30
解包後,在終端進入busybox-1.27.2目錄下操作:
配置busybox
make menuconfig CROSS_COMPILE=aarch64-linux-gnu-
//備註: 在出現的配置介面裡,按"/"鍵可查詢所需命令的選項位置.
Busybox Settings --->
[*] Build BusyBox as a static binary (no shared libs) //選上這項,表示靜態編譯.
(./_install) BusyBox installation prefix (NEW) //這裡不用改,在"make install"時,就會安裝到當前目錄下的_install目錄裡
儲存退出後, 執行"make CROSS_COMPILE=aarch64-linux-gnu-"進行編譯.
最後執行"make install CROSS_COMPILE=aarch64-linux-gnu-"把編譯出來的命令安裝到./_install
以上步驟完成後,可以檢視編譯出來的命令是否正確:
file ./_install/bin/busybox
輸出的資訊:
busybox: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, for GNU/Linux 3.7.0, BuildID[sha1]=511 ce91c77ecd799f7d5ad1c9b3414f92b49ed9e, stripped
在_install目錄裡,建立系統所需的目錄及檔案:
mkdir dev proc sys tmp var mnt
mkdir var/log
mkdir var/lock
mkdir var/lib
mkdir var/run
建立etc/init.d/rcS檔案(用於進檔案系統後的初始化工作, 相當於PC上的/etc/rc.local)
mkdir etc/init.d -p
touch etc/init.d/rcS
修改etc/init.d/rcS, 增加以下內容, 指定目錄使用指定的檔案系統型別格式
mount -t proc none /proc
mount -t sysfs none /sys
mount -t tmpfs none /tmp
mount -t ramfs none /dev
mdev -s #讓mdev自動根據相應的驅動產生相應的裝置檔案
syslogd #產生日誌的守護程序
echo /sbin/mdev > /proc/sys/kernel/hotplug #當硬體驅動有變化時, 呼叫mdev -s產生或移除相應的裝置檔案
建立etc/inittab檔案, 增加以下內容:
::sysinit:/etc/init.d/rcS #用rcS作系統初始化
ttyS0::askfirst:-/bin/sh #使用ttyS0作板子的控制終端
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
建立etc/profile檔案, 增加以下內容
export PS1="^_^ \w # " //用於命令列前面的提示符
以上做完以後, 還需要給整個檔案系統所有目錄及檔案設定許可權:
chmod 0777 * -R
把busybox編譯得到的檔案系統放入sd卡的ext4分割槽裡.
先在終端下進入_install目錄裡,打包整個檔案系統:
tar cf fs.tar * //注意一定是要在_install目錄下
然後把sd接入pc, 如我的ext4分割槽(sdb2)自動持載到/run/media/jk/ROOTFS目錄下:
tar xf fs.tar -C /run/media/jk/ROOTFS //把系統包解包到分割槽的掛載目錄裡
umount /run/media/jk/ROOTFS //完成後,反掛載sd卡並接回板上
重接回sd卡到板上,啟動到uboot時設定核心進入記憶體檔案系統後再進入sd卡上的ext4分割槽裡的檔案系統:
//在uboot啟動到倒計時,按任意鍵停住,設定環境變數:
setenv bootargs "root=/dev/mmcblk0p2 console=ttyS0,115200"
saveenv
//注意mmcblk0p2就是對應前面在pc上的sdb2, console=ttyS0是讓核心使用板上的uart0作除錯口使用
儲存環境變數後:
run bootcmd //執行bootcmd環境變數裡的命令,啟動系統
進入initramfs系統後會自動再進入sd卡的檔案系統。
第一進入時,initramfs系統會整理sd卡上的分割槽,啟動較慢,但以後再進入時不會再作整理操作的.
進入sd檔案系統後,就可以通過板上的有線網絡卡和網線連線pc了。
先設定pc上的網絡卡的板上的eth0網絡卡的ip地址是同一網段,通過ping測試網路連通後,就可以訪問pc上的nfs共享目錄了.
如pc機的ip地址: 192.168.1.10 nfs共享目錄: /disk3/share
則在板子上掛載: mount 192.168.1.10:/disk3/share /mnt -o nolock,tcp