嵌入式学习笔记300-linux根文件系统搭建

时间:2021-07-04 16:32:02
  1. 制作根文件系统首先需要用busybox编译出系统文件所需的应用程序,然后再以此拓展构建根文件系统。
    这里使用busybox1.16.0,可以在本博客查询看是否有上传。
    tar jxvf busybox-1.16.0.tar.bz2 -C your_path
  2. 配置:进入busybox-1.16.0 修改makefile,将164行的CROSS_COMPILE=/xx/xx/4.3.3/bin/arm-linux- , 189行修改ARCH = arm,最后输入 make menuconfig , 这里我采用默认即可,主要的即使修改 General Configuration选项 设置,比如使能History save vi-style等。接着退出保存为.config,最后 make;make install。最后会在当前目录生成 _install目录,里面就有基本的arm架构所需的应用程序,包括uboot传参给kernel所需启动的文件系统第一个应用程序。bin linuxrc sbin usr
  3. 构建文件系统,在busybox-1.16.0下以_stall为蓝本,cp -r _stall root_fs,就构建基本的文件系统root_fs,接着在root_fs下新建相关目录
    mkdir dev etc lib mnt opt proc root tmp usr/lib usr/share var

  4. dev目录:
    由于系统初始化init进程需要用到/dev/console 和 /dev/null,所以事先手动建立

cd dev
mknod console c 5 1
mknod null c 1 3 

可能需要sudo无权限建立
5. etc目录
这里copy天嵌自带的文件系统里的文件即可
6. lib目录:
这里拷贝交叉编译自带的一下lib
cp -raf /xx/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/lib/.so ./lib
7. mnt目录:
这里建立 udisk sddisk两个目录来挂载U盘和SD卡,其配置在/etc/mdev.conf下:

sd[a-z]*[0-9]       0:0 0660    @(mount -t vfat -o iocharset=cp936 /dev/$MDEV /mnt/udisk) sd[a-z]*[0-9] 0:0 0660 *(umount /mnt/udisk) mmcblk[0-9]*p[0-9] 0:0 0660 @(mount -t vfat -o iocharset=cp936 /dev/$MDEV /mnt/sd) mmcblk[0-9]*p[0-9] 0:0 0660 *(umount /mnt/sd)
  1. 其他目录可以为空!
  2. 制作镜像,交叉编译工具自带关于制作各种文件系统镜像命令,由于我们采用的是yaffs2,所以使用mkyaffsimage_2或者mkyaffs2image,其中针对64M nand flash的使用mkyaffsimage_2,而128M及以上的用mkyaffs2image,之所以有两个命令是因为linux kernel nand driver对不同的nand size有不同的处理。我的demo board是256MB的nand 因此就是 mkyaffs2image root_fs root_fs.bin即可。
  3. 烧入到nand,同样,像烧入kernel一样,这里采用天嵌自带的bootloader选择将root_fs.bin烧入到其指定的地址 0x500000处。