debian9安装busybox,并制作根文件系统(2)

3,制作根文件系统

在上文debian9安装busybox,并制作根文件系统(1)中输入make install命令进行安装,busybox会自动将rootfs根文件系统安装到之前设置的目录下,之前我设置的是/home/guoyanzhang/rootfs,进入之后,

##ls -l
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 12:36 bin
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 09:28 dev
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 09:28 etc
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 09:28 home
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 09:28 lib
lrwxrwxrwx 1 guoyanzhang guoyanzhang   11 11月  6 12:36 linuxrc -> bin/busybox
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 09:28 mnt
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 09:28 proc
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 09:28 root
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 12:36 sbin
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 09:28 sys
drwxr-xr-x 2 guoyanzhang guoyanzhang 4096 11月  6 09:28 tmp
drwxr-xr-x 4 guoyanzhang guoyanzhang 4096 11月  6 09:28 usr

上述的make install命令完成后,在rootfs目录下仅仅是创建一个根文件系统的框架,上面的文件夹,只有bin和sbin下面有东西,还有一个linuxrc,其他都是空的,很多系统运行所必须的文件尚未建立成功,必须手动复制进去。

如果在menuconfig里没有修改_install,则make install之后,在busybox目录下会看见 _install目录,里面有/bin,/sbi, linuxrc三个文件,需要将这三个目录或文件拷到第一步所建的rootfs文件夹下。

#cp bin/ sbin/ linuxrc /home/rootfs -ra 

   切记一定要带上-a的参数,因为bin目录里大部分都是链接,如果不带-a的参数,拷过去之后会做相应的复制,不再是链接的形式

3.1,复制busybox/examples/bootfloppy/etc整个目录下的文件到rootfs/etc目录下

##cp /home/guoyanzhang/practice/busybox/busybox-1.29.3/examples/bootfloppy/etc/* /home/guoyanzhang/rootfs/etc/  -r

3.2,建立如下设备文件,dev目录下必须有console和null这两个设备文件,使用mknod来创建这两个设备文件,

##sudo mknod -m 660 console c 5 1
##sudo mknod -m 660 null c 1 3

3.3,修改rootfs/etc/fstab文件,如下:

#device     mount-point		type	dump	fsck	order
proc		/proc		proc	defaultsi	0		0
tmpfs		/tmp		tmpfs	defaults	0		0
sysfs		/sys		sysfs	defaults	0		0
tmpfs		/dev		tmpfs	defaults	0		0
var	        /dev		tmpfs	defaults	0		0
ramfs		/dev		ramfs	defaults	0		0

3.4,修改rootfs/etc/profile文件,如下:

# /etc/profile: system-wide .profile file for the Bourne shells

#echo
#echo -n "Processing /etc/profile... "
# no-op
#echo "Done"
#echo

USER="root"
LOGNAME=$USER
export HOSTNAME='/bin/hostname'
export USER=root
export HOME=/root
export PS1="[USER@HOSTNAME \w]\#"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib://usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH

3.5,修改rootfs/etc/inittab文件,如下:

 情况1,开机免登陆,直接打开shell(前面数字为行号)

::sysinit:/etc/init.d/rcS
#::respawn:-/bin/sh
#::respawn:-/bin/login
console::askfirst:-/bin/sh
#tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

情况2,  开机需要登陆(前面数字为行号)

::sysinit:/etc/init.d/rcS
#::respawn:-/bin/sh
::respawn:-/bin/login
#console::askfirst:-/bin/sh
#tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

3.6,配置系统的hostname,在rootfs/etc目录下执行如下命令:

##cd rootfs/etc
##mkdir sysconfig
##cd sysconfig
##touch HOSTNAME
##echo yourHWname > HOSTNAME

3.7,配置rootfs/etc/init.d/rcS文件为:

#! /bin/sh

#/bin/mount -a

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevelevel=N
umask 022
export PATH runlevel prevlevel

mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
#mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock
ifconfig lo 127.0.0.1
/bin/hostname -F /etc/sysconfig/HOSTNAME

修改init.d/rcS的文件权限,##chmod 777 init,d/rcS

4,制作ramdisk文件系统,如果电脑中有mkimage工具,可以使用以下脚本。脚本放到rootfs文件同目录下,运行生成的ramdisk.img就是我们需要的ramdisk文件系统。

#!/bin/bash

cd /home/guoyanzhang/

rm -rf ramdisk*

sudo dd if=/dev/zero of=ramdisk bs=1k count=8192

sudo mkfs.ext4 -F ramdisk

sudo mkdir -p ./initrd
sudo mount -t ext4 ramdisk ./initrd
sudo cp rootfs/* ./initrd -raf

#sudo mknod initrd/dev/console c 5 1
#sudo mknod initrd/dev/null c 1 3

sudo umount ./initrd

sudo gzip --best -c ramdisk > ramdisk.gz

sudo mkimage -n "ramdisk" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img
rm ramdisk ramdisk.gz initrd -rf

参考1:https://www.cnblogs.com/AP0904225/p/7020418.html 

参考2:https://blog.csdn.net/LEON1741/article/details/54848842

参考3:https://www.cnblogs.com/Charles-Zhang-Blog/p/3419301.html

 

猜你喜欢

转载自blog.csdn.net/weixin_39465823/article/details/83785378