1. 程式人生 > >03 H5用busybox製作64位檔案系統

03 H5用busybox製作64位檔案系統

解包後,在終端進入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