目录
一、编译 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