300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 使用Busybox制作根文件系统

使用Busybox制作根文件系统

时间:2023-11-18 16:47:11

相关推荐

使用Busybox制作根文件系统

使用Busybox手工制作

Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载、编译,如果它需要某些依赖库,你还需要手工下载、编译这些依赖库。

如果想做一个极简的文件系统,可以使用Busybox手工制作。

制作步骤

一、下载

busybox官方:/

下载地址:

/downloads/

可以下载一个最新的版本,下载好之后,放到Linux中

二、配置环境&生成命令

解压出来

zh@zh-lpc:~/soft$ cd software/zh@zh-lpc:~/soft/software$ lsbusybox-1.34.0.tar.bz2 zh@zh-lpc:~/soft/software$zh@zh-lpc:~/soft/software$ tar xvf busybox-1.34.0.tar.bz2

解压之后进入到解压后的目录中:

zh@zh-lpc:~/soft/software$zh@zh-lpc:~/soft/software$ cd busybox-1.34.0/zh@zh-lpc:~/soft/software/busybox-1.34.0$ pwd/home/zh/soft/software/busybox-1.34.0zh@zh-lpc:~/soft/software/busybox-1.34.0$

修改Makefile

先留一手,修改之前,先备份一下

cp -p Makefile Makefile_bak

找到ARCH变量,修改如下:

修改后的:

修改CROSS_COMPILE变量

可以看到我的交叉编译工具的前缀是arm-linux-gnueabi-

修改如下:

配置busybox

make defconfig

在配置busybox-1.34.0版本的时候,出现:

我的交叉编译工具是4.9的,所以是没有这一条命令的,

此时你可以下载更高版本的交叉编译工具,或者更低版本的busybox,据我所知,这个版本是的交叉编译工具的命令是没有变化的。

下载一个更高版本的交叉编译工具

配置一下环境变量

export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabihf-export PATH=$PATH:/home/zh/soft/linux_tools/gcc-linaro-7.5.0-.12-x86_64_arm-linux-gnueabihf/bin

快速生效

source ~/.bashrc

重新执行make defconfig即可。

也可以使用图形化配置make menuconfig

报错了

zh@zh-lpc:~/soft/software/busybox-1.34.0$ make menuconfigHOSTCC scripts/kconfig/lxdialog/checklist.o<command-line>: fatal error: curses.h: 没有那个文件或目录compilation terminated.make[2]: *** [scripts/Makefile.host:120:scripts/kconfig/lxdialog/checklist.o] 错误 1make[1]: *** [/home/zh/soft/software/busybox-1.34.0/scripts/kconfig/Makefile:14:menuconfig] 错误 2make: *** [Makefile:448:menuconfig] 错误 2zh@zh-lpc:~/soft/software/busybox-1.34.0$zh@zh-lpc:~/soft/software/busybox-1.34.0$

解决办法:

这时因为系统中缺少一个套件 ncurses devel ,把此套件安装下即可

Ubuntu中使用如下命令安装即可,其他系统可以参考。

sudo apt-get install ncurses-dev -y

安装之后再次执行即可看到图形化的配置界面

1、Settings

按回车即可进入

2、选择Build Options选择编译成静态库

3、然后按esc即可退出,退出时提示保存,确定即可

4、编译

如果觉得自己电脑线程数够用的话,可以适当调大或减小

make -j12

编译完成:

5、安装

make install

可以看到都放到了_install目录下

可以看到里面的bin目录下生成了一些常见的linux shell命令。

zh@zh-lpc:~/soft/software/busybox-1.34.0$ cd _install/zh@zh-lpc:~/soft/software/busybox-1.34.0/_install$ lsbin linuxrc sbin usrzh@zh-lpc:~/soft/software/busybox-1.34.0/_install$zh@zh-lpc:~/soft/software/busybox-1.34.0/_install$ ls bin/archchmoddf fatattr hostname linux32 mkdir mv ps run-partsstat unameashchowndmesgfdflush hushlinux64 mknod netstat pwd scriptreplay stty usleepbase32 conspy dnsdomainname fgrep ionice ln mktempnice reformime sed suvibase64 cp dumpkmap fsync iostat loginmore pidofresumesetarch sync watchbusybox cpioecho getopt ipcalc ls mount ping rev setpriv tarzcatcatcttyhack ed grepkbd_mode lsattr mountpoint ping6rm setserialtouchchattr dateegrepgunzip killlzopmpstatpipe_progress rmdirsh truechgrp dd falsegziplinkmakemime mtprintenv rpm sleep umountzh@zh-lpc:~/soft/software/busybox-1.34.0/_install$zh@zh-lpc:~/soft/software/busybox-1.34.0/_install$

现在命令已经生成了

三、拷贝必要的库文件

1、首先在自己习惯的位置,创建一个rootfs目录

zh@zh-lpc:~$ cd soft/linux_tools/zh@zh-lpc:~/soft/linux_tools$zh@zh-lpc:~/soft/linux_tools$ mkdir rootfs

2、把生成的所有文件都拷贝到创建好的rootfs目录下

zh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$ cp -arf ~/soft/software/busybox-1.34.0/_install/* ./zh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$ pwd/home/zh/soft/linux_tools/rootfszh@zh-lpc:~/soft/linux_tools/rootfs$ lsbin linuxrc sbin usrzh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$

3、把Linux中用到的一些库文件拷贝到rootfs/lib目录下

3-1:创建lib目录

zh@zh-lpc:~/soft/linux_tools/rootfs$ lsbin linuxrc sbin usrzh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$ mkdir libzh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$ lsbin lib linuxrc sbin usrzh@zh-lpc:~/soft/linux_tools/rootfs$

可以先看一下自己库所在位置

可以看到有很多常用的库文件

3-2:拷贝过来

zh@zh-lpc:~/soft/linux_tools/rootfs$ cp -arf /home/zh/soft/linux_tools/gcc-linaro-7.5.0-.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib/* ./lib/

四、创建字符设备

底层与用户交互的文件

先创建一个dev目录,用来存放各种节点

zh@zh-lpc:~/soft/linux_tools/rootfs$ mkdir devzh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$ lsbin dev lib linuxrc sbin usrzh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$ cd dev/zh@zh-lpc:~/soft/linux_tools/rootfs/dev$zh@zh-lpc:~/soft/linux_tools/rootfs/dev$ sudo mknod -m 666 tty1 c 4 1[sudo] zh 的密码:zh@zh-lpc:~/soft/linux_tools/rootfs/dev$zh@zh-lpc:~/soft/linux_tools/rootfs/dev$zh@zh-lpc:~/soft/linux_tools/rootfs/dev$ sudo mknod -m 666 tty2 c 4 2zh@zh-lpc:~/soft/linux_tools/rootfs/dev$zh@zh-lpc:~/soft/linux_tools/rootfs/dev$ sudo mknod -m 666 tty3 c 4 3zh@zh-lpc:~/soft/linux_tools/rootfs/dev$zh@zh-lpc:~/soft/linux_tools/rootfs/dev$ sudo mknod -m 666 tty4 c 4 4zh@zh-lpc:~/soft/linux_tools/rootfs/dev$zh@zh-lpc:~/soft/linux_tools/rootfs/dev$zh@zh-lpc:~/soft/linux_tools/rootfs/dev$ sudo mknod -m 666 console c 5 1zh@zh-lpc:~/soft/linux_tools/rootfs/dev$zh@zh-lpc:~/soft/linux_tools/rootfs/dev$ sudo mknod -m 666 null c 1 3zh@zh-lpc:~/soft/linux_tools/rootfs/dev$zh@zh-lpc:~/soft/linux_tools/rootfs/dev$ lsconsole null tty1 tty2 tty3 tty4zh@zh-lpc:~/soft/linux_tools/rootfs/dev$

五、启动测试

在开发板上指定rootfs的目录,即可启动成功,有一些错误不必担心

can’t run ‘/etc/init.d/rcS’: No such file or directory

这个错误可以直接创建一个即可

zh@zh-lpc:~/soft/linux_tools/rootfs$ mkdir init.dzh@zh-lpc:~/soft/linux_tools/rootfs$ cd init.d/zh@zh-lpc:~/soft/linux_tools/rootfs/init.d$zh@zh-lpc:~/soft/linux_tools/rootfs/init.d$ touch rcSzh@zh-lpc:~/soft/linux_tools/rootfs/init.d$zh@zh-lpc:~/soft/linux_tools/rootfs/init.d$ chmod 777 rcSzh@zh-lpc:~/soft/linux_tools/rootfs/init.d$zh@zh-lpc:~/soft/linux_tools/rootfs/init.d$ vim rcSzh@zh-lpc:~/soft/linux_tools/rootfs/init.d$zh@zh-lpc:~/soft/linux_tools/rootfs/init.d$ cat rcSecho "Hello zheng hui"zh@zh-lpc:~/soft/linux_tools/rootfs/init.d$zh@zh-lpc:~/soft/linux_tools/rootfs/init.d$ ls -l总用量 4-rwxrwxrwx 1 zh zh 23 9月 25 20:16 rcSzh@zh-lpc:~/soft/linux_tools/rootfs/init.d$zh@zh-lpc:~/soft/linux_tools/rootfs/init.d$ cd ..zh@zh-lpc:~/soft/linux_tools/rootfs$ lsbin dev init.d lib linuxrc sbin usrzh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$ mkdir etczh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$ mv init.d etc/zh@zh-lpc:~/soft/linux_tools/rootfs$zh@zh-lpc:~/soft/linux_tools/rootfs$ ls etc/init.dzh@zh-lpc:~/soft/linux_tools/rootfs$

再次启动后可以看到:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。