Linux 嵌入式文件系统制作

本文详细描述了如何从下载和编译Busybox源码开始,通过一系列步骤如创建目录、拷贝文件、配置系统文件和设备文件,最终制作自定义的根文件系统,并生成image文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、编译 busybox 编码

二、制作根文件系统

2.1 创建目录

2.2 拷贝文件

2.3 创建系统文件

2.4 创建设备文件

2.5 修改 inittab 文件

2.6 修改 rcS 文件

2.7 修改 ftab 文件

2.8 修改 profile 文件

2.9 制作 image 文件


一、编译 busybox 编码

(a)下载 busybox 源码:
     wget https://busybox.net/downloads/busybox-1.36.0.tar.bz2
(b)解压 busybox 源码 :  tar -zxvf busybox-1.36.0.tar.bz2
(c)进入 busybox 目录 :  cd busybox-1.36.0
(d)清理 生成的中间文件:   make clean
 
(e)编译配置界面(设置成 '静态编译')
    'Settings ---> [*] Build static binary (no shared libs)'
     make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j6
 
(f)编译 busybox ('生成静态依赖 可执行文件')
     make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j6
 
(g)安装 busybox ('生成位置:_install')
     make install ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

二、制作根文件系统

  2.1 创建目录

1 创建根目录: mkdir -p rootfs
2 进入根目录: cd rootfs
3 创建子目录: mkdir proc sys dev etc etc lib mnt hmoe
4 创建孙目录: mkdir -p etc/init.d etc/sysconfig

  2.2 拷贝文件

1 复制 busybox 生成的文件:
  cp -rf ./busybox-1.36.0/_install/* ./rootfs

2 复制 busybox 例子 etc 目录:
  cp -rf ./busybox-1.36.0/examples/bootfloppy/etc/* ./rootfs/etc/

3 复制 交叉编译器的 lib 目录:
  cp -p /usr/arm-linux-gnueabi/lib/* ./rootfs/lib

  # 为了节省空间、删除 *.a 文件,如果空间充足也可以不用删除
  rm -rf ./rootfs/lib/*.a

  2.3 创建系统文件

1. 创建 mdev.conf 文件
   vi ./etc/mdev.conf  # 内容为空

2. 拷贝主机 etc 目录下的用户文件
   cp /etc/group ./rootfs/etc
   cp /etc/shadow ./rootfs/etc
   cp /etc/passwd ./rootfs/etc

3. 创建 HOSTNAME 文件
   vi ./etc/sysconfig/HOSTNAME
   根据用户的需求填写主机名称

4. 设备 DNS 服务器
   vi ./etc/resolv.conf
   填入以下内容后、保存:
   nameserver 8.8.8.8
   nameserver 114.114.114.114

5. 配置静态网络
   vi ./etc/network/interface
   填入以下内容后、保存:
   auto eth0
   iface eth0 inet static
     address 192.168.1.19
     netmask 255.255.255.0
     network 192.168.1.0
     gateway 192.168.1.1

  2.4 创建设备文件

sudo mknod console c 5 1
sudo mknod null    c 1 3

  2.5 修改 inittab 文件

1. 打开 inittab 文件:vi ./etc/inittab
  'inittab 作用:系统在不同时机(启动、关闭及各种组合键)自动执行的程序。'

2. 删除原有的内容,填入以下内容

   #etc/inittab
   ::sysinit:/etc/init.d/rcS      # 将 rcS 设置成系统初始化文件
   ::askfirst:-/bin/sh
   ::ctrlaltdel:/sbin/reboot
   ::shutdown:/bin/umount -a –r

  2.6 修改 rcS 文件

1. 打开文件:vi ./etc/init.d/rcS
  'rcS 作用:在系统启动时自动执行的脚本。'

2. 删除原有的内容, 填入以下内容

   #!/bin/sh
   PATH=/sbin:/bin:/usr/sbin:/usr/bin
   runlevel=S
   prevlevel=N
   umask 022
   export PATH runlevel prevlevel
   echo "----------- mount all -------------"
   mount -a

   # 配置 支持热插拔
   echo /sbin/mdev>/proc/sys/kernel/hotplug
   mdev -s  # 使用了 mdev 命令,需要多挂载两个设备(sysfs 和 /dev)

   # 设置 欢迎界面
   echo "*************************************"
   echo "*          Welcome !!!!             *"
   echo "*************************************"
   /bin/hostname -F /etc/sysconfig/HOSTNAME

3. 修改文件权限:chmod +x ./etc/init.d/rcS

  2.7 修改 ftab 文件

1. 打开文件:vi ./etc/fstab
  '系统启动后执行 mount -a 命令时,自动挂载的文件系统。'

2. 删除原有的内容,根据是否使用了 mdev 命令,选择挂载的设备

  '1)一般情况下自动挂载(proc、sysfs、tmpfs、var):'
   #device		mount-point		type		option		dump	fsckorder
    proc		/proc			proc		defaults	0		0
    tmpfs		/tmp			tmpfs		defaults	0		0
    tmpfs		/var			tmpfs		defaults	0		0

  '2)当使用 mdev 命令时,需要多挂载 sysfs 和 /dev :'
   #device		mount-point		type		option		dump	fsckorder
    proc		/proc			proc		defaults	0		0
    tmpfs		/tmp			tmpfs		defaults	0		0
    tmpfs		/var			tmpfs		defaults	0		0
    sysfs		/sys			sysfs		defaults	0		0
    tmpfs		/dev			tmpfs		defaults	0		0

  2.8 修改 profile 文件

1. 打开文件:vi ./etc/profile
2. 删除原有内容,填入以下内容:

   #Ash profile
   #vim:syntax=sh
   #No core file by defaults
   #ulimit -S -c 0>/dev/null 2>&1
   USER="id -un"
   LOGNAME=$USER
   PS1='[\u@\h=W]#'
   PATH=$PATH
   HOSTNAME='/bin/hostname'
   export USER LOGNAME PS1 PATH

  2.9 制作 image 文件

1. 进入根目录
   cd rootfs
   
2. 制作镜像文件
   find . | cpio -o --format=newc > ../rootfs.img

3. 进入上级目录
   cd ../

4. 修改镜像权限
   chmod +x rootfs.img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值