根文件系统制作

时间:2021-11-30 09:04:37

根文件系统制作根文件系统制作


1.1 创建目录

#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var

#mkdir usr/bin usr/lib usr/sbin lib/modules


1.2 创建设备文件

#cd rootfs/dev
#mknod -m 666 console c 5 1

#mknod -m 666 null c 1 3



1.3 加入配置文件


#tar etc.tar.gz

#cp    etc/*       rootfs/etc/    -rf



1.4 添加内核模块


#cd         .../linux-kernel(进入linux内核文件夹)
#make     modules     ARCH=arm     CROSS_COMPILE=arm-linux-    (编译内核模块)
#make     modules_install     ARCH=arm     INSTALL_MOD_PATH=.../rootfs(把*.ko文件移动到.../rootfs/lib/modules/文件夹下)

 


1.5 编译/安装busybox

1.配置busybox

#make menuconfig
Busybox Settings  --->  build Options---->

选中 “Build busybox as a static binary”, 静态链接Cross Compiler prefix (arm-linux-)

Installation Options--->
选中 “Don't use /usr”, 选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统

Busybox Installation Prefix (/xxx/rootfs) 该选项表明编译后的busybox的安装


2. 编译、安装busybox
    make

    make install





















2.挂载根文件系统


2.1 文件系统类型
根据存储设备的硬件特性、系统需求,不同的
文件系统类型有不同的应用场合。在嵌入式
Linux应用中,主要的存储设备为 RAM 和
FLASH,常用的基于存储设备的文件系统类

型包括:jffs2, yaffs2, ubifs, ramdisk等


根文件系统制作

根文件系统制作

2.2 使用Initramfs
1. #cd .../rootfs/
#ln –s ./bin/busybox init

2. 进入linux内核文件夹,配置Linux内核, 支持initramfs

make menuconfig

General setup --->

选中 Initial RAM filesystem and RAM disk (initramfs/initrd) suppor

更改rootfs路径(/home/lgc/Arm/8-rootfs/rootfs) Initramfs source file(s)


根文件系统制作根文件系统制作根文件系统制作


3. 编译内核

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

cp     arch/arm/boot/uImage      /var/tftpboot/

4.进入串口终端,启动u-boot,设置环境变量   

setenv     bootargs     noinitrd     console=ttySAC0,115200




2.3 使用NFS

在linuxn内核文件夹下,

make menuconfig ARCH=arm


General setup --->

去掉  Initial RAM filesystem and RAM disk (initramfs/initrd) suppor

依次选中 File systems--->Network File Systems---> Root file system on NFS


make uImage ARCH=arm CROSS_COMPILE=arm-linux-

串口终端输入以下环境变量:

setenv    bootargs     noinitrd      //告诉u-boot以什么方式启动

                console=ttySAC0,   115200 //串口0输出,波特率115200

                init=/init   

                root=/dev/nfs    //使用/dev/下的nfs作为根文件系统

                rw                        //可读可写

                nfsroot=192.168.1.88 : /home/lgc/Arm/8-rootfs/rootfs  //服务器(pc机)ip地址,及根文件系统rootfs的路径

                ip=192.168.1.230:192.168.1.88:192.168.1.1:255.255.255.0::eth0:off    //板子ip/主机ip/网关/子网掩码

             (红色的需要修改)


要确保主机上的nfs已配置并且开启:


1.1安装NFS服务:

#执行以下命令安装NFS服务器,

#apt会自动安装nfs-commonrpcbind13个软件包

sudo apt install nfs-kernel-server

 

1.2编写配置文件:

#编辑/etc/exports文件:

sudo vi /etc/exports

在/etc/exports  输入以下内容:

/home/lgc/Arm/8-rootfs/rootfs  *(rw,sync,no_root_squash)


然后 重启 nfs :    /etc/init.d/nfs-kernel-server    restart

或者:sudo service nfs-kernel-server restart

#查看NFS的运行状态

sudo nfsstat