03 H5用busybox制作64位文件系统

busybox的源码可以在官网https://www.busybox.net/downloads/下载.
这里下的版本是busybox-1.27.2.tar.bz2

解包后,在终端进入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]=511ce91c77ecd799f7d5ad1c9b3414f92b49ed9e, 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

你可能感兴趣的:(全志H5,Linux-4.11)