大家好,Linux学习4,全靠它,系统内核三分钟完全跑起来,busybox介绍相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于Linux学习4,全靠它,系统内核三分钟完全跑起来,busybox介绍和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
然而,虽然有ext2文件系统的disk.img“虚拟磁盘”,但它是空的,并且没有bin等、proc等基本目录,所以虽然引起的“内核恐慌”内核中缺少文件系统的问题解决了,最后还是报错。而且我们自己写的init程序没有任何实际意义,所以Linux内核没有完全启动也是预料之中的。
要使用 busybox,第一步当然是下载它的源码:
wget -c https://busybox.net/downloads/busybox-1.27.2.tar.bz2 这里使用的是busybox的1.27.2版本。下载后解压,按照默认配置编译。
tar xf busybox-1.27.2.tar.bz2cd busybox-1.27.2make defconfigmake menuconfig 上述命令的含义在第一节已经介绍清楚了。执行完最后一条命令后,会弹出图形化配置界面,选择:
Busybox 设置— — 构建选项[*] 将BusyBox 构建为静态二进制文件(无共享库)
之所以勾选这个选项,是因为我们的磁盘镜像中没有其他库,所以需要将busybox静态编译成一个独立的、无依赖的可执行文件,以避免运行时出现链接错误。然后就可以编译:
make -j4编译完成后即可安装。我们新建一个目录install并将busybox安装到该目录中:
mkdir installmake CONFIG_PREFIX=您的安装绝对路径。执行install后,busybox会安装在install目录下,如下图:
busybox提供的命令在bin目录下。可以看出,这些命令实际上都是busybox的快捷方式:
通过busybox可以直接执行busybox命令,例如:
./busybox ls # 相当于ls ./busybox ps # 相当于ps
现在有了 busybox,我们把它们塞入 disk.img “虚拟磁盘”。
配置
这是因为还有一些配置项没有配置。其实busybox官方也已经提供了文档:
.# Note: BusyBox init 在没有inittab 的情况下也能正常工作。如果未找到inittab,则具有以下默认行为:# :sysinit:/etc/init.d/rcS# :askfirst:/bin/sh# :ctrlaltdel:/sbin/reboot# :shutdown:/sbin/swapoff -a# :shutdown:/bin/umount -a -r# :restart:/sbin/init# tty2:askfirst:/bin/sh# tty3:ask first:/bin/sh# tty4:askfirst:/bin/sh## 启动时系统配置/初始化脚本.# 这是首先运行的以单用户模式启动时模式.#:sysinit:/etc/init.d/rcS.
init程序(上面我们指定的linuxrc)启动后,会扫描/etc/inittab配置文件。该配置文件决定了init 程序的行为。并且busybox init 可以在没有/etc/inittab 文件的情况下工作,因为它具有默认行为,这相当于上面的配置。我们暂时不需要打开tty2、tty3等,所以我们在disk.img中创建/etc/inittab文件:
sudo mount -o Loop disk.img rootfscd rootfsmkdir etcvim etc/inittab 填写以下内容:
:sysinit:/etc/init.d/rcS:askfirst:/bin/ash:ctrlaltdel:/sbin/reboot:shutdown:/sbin/swapoff -a:shutdown333 60/bin /umount -a -r:restart:/sbin/init 并根据配置,我们需要创建可执行文件/等/初始化。 d/rcS
mkdir etc/init.dtouch etc/init.d/rcSchmod +x etc/init.d/rcS # 给予rcS执行权限。 Linux启动后,会执行这个脚本,进行一些启动工作。检查当前的系统环境,会发现当前的文件系统结构不完整。例如,没有/proc 和/sys 挂载点。如果执行df命令,会因为没有/proc挂载点而报错:
df: /proc/mounts: 没有这样的文件或目录
创建 linux 基本目录
因此,我们需要手动创建/proc、/sys目录。 /proc 和/sys 需要安装才能工作。你可以把/proc和/sys的挂载动作放在/etc/init.d/rcS中,每次系统启动时都会自动挂载它们。
vim etc/init.d/rcS 修改/etc/init.d/rcS如下:
#!/bin/shmount -t proc proc /procmount -t sysfs sysfs /sys 进行这些更改后,卸载disk.img 以将更改刷新到磁盘:
cd ./sudo umount rootfs 好了,现在我们再次使用qemu来模拟运行编译好的Linux内核和修改后的文件系统。这次终于没有报错了,提示我们按回车激活控制台:
请按Enter 键激活此控制台。至此,我们终于有了完全运行的linux操作系统,并且可以执行基本的linux命令了。还记得init 应用程序吗?现在已经可以正常执行了。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/146275.html
用户评论
我怕疼别碰我伤口
这篇文章简直太有料了!我前几天刚开始接触 Linux,一直对系统内核这个东西一头雾水,没想到通过 busybox 就能够运行系统内核?太棒了!一定要好好学习学习。
有5位网友表示赞同!
黑夜漫长
感觉标题有点夸张,三分钟把系统内核完全跑起来?这也太厉害了吧。不过,我对 busybox 确实是比较感兴趣的,简单轻量级,适合嵌入式开发。
有17位网友表示赞同!
箜明
确实,busybox 简直是 Linux 的利器!对于新手来说,学习忙盒可以帮助理解 Linux 命令行工作原理,然后再去深入学习其他工具也能更快上手。
有9位网友表示赞同!
╭摇划花蜜的午后
我用 busybox 做项目已经好几年了,它真的太棒了! 轻巧、功能强大,而且移植性也好。不过,对于一些复杂的操作系统来说,它的功能可能还是有点有限的。
有19位网友表示赞同!
病房
三分钟跑起来内核?这也太夸张了吧! 可能是我理解错了, 还是有些技术含量吧。能介绍下 busybox 的具体应用场景吗?
有19位网友表示赞同!
琴断朱弦
我对 Linux 系统内核一直很感兴趣,不过学习起来感觉太难缠了。这款 busybox 太方便了, 能简单运行内核,学习起来是不是会轻松些?
有12位网友表示赞同!
。婞褔vīp
我之前用过一些其他工具来跑 Linux 内核,但是速度始终没有达到预期。看来 busybox 还是比较适合嵌入式开发,它能够节省资源,快速启动系统,确实很实用!
有20位网友表示赞同!
┲﹊怅惘。
对于初学者来说,busybox 一定是个好帮手! 它能帮助我们更直观地理解 Linux 的运行机制,也更容易上手学习其他工具程序。
有9位网友表示赞同!
秘密
三分钟就把内核跑起来?这看起来有点像神话传说吧? 有些细节我可能没看懂,能否进一步解释一下 busybox 如何做到这一点呢?
有17位网友表示赞同!
幸好是你
我一直用 Ubuntu 开发,感觉它太臃肿了! 看到 busybox 简洁高效,是不是可以在服务器上使用呢? 比传统的 linux 系统运行速度更快吗?
有18位网友表示赞同!
站上冰箱当高冷
印象中 busybox 用于嵌入式系统开发。这个方法是否适用于大规模的 Linux 系统呢? 需要考虑什么因素?
有12位网友表示赞同!
相知相惜
作者说 busybox 可以完全跑起内核, 这意思是说 busybox 可以替代完整的 Linux 内核吗? 这样岂不是太神奇了!
有15位网友表示赞同!
可儿
对于嵌入式系统开发来说, busybox 一定是首选工具! 轻量级、功能齐全、移植性强。这篇文章对 beginners 的帮助很大!
有9位网友表示赞同!
该用户已上天
我一直没明白 busybox 是什么?这个介绍很到位,让我明白了 busybox 在 Linux 系统中的作用和优势。 值得推荐给更多想学习 Linux 的朋友!
有17位网友表示赞同!
又落空
这个忙盒听起来很有意思, 确实可以在一些资源有限的环境下使用,但它毕竟功能有限,不适合所有场景
有5位网友表示赞同!
稳妥
我觉得这篇文章描述过度了 busybox 的能力。它可以运行内核,但这并不意味着可以完全替代完整的内核系统。 需要进一步解释一下这个 "完全跑起来" 的意思!
有7位网友表示赞同!
盲从于你
学习 Linux 系统内核确实是一件复杂的任务, 如果通过 busybox 可以简化部分学习过程,那真是太棒了! 我会尝试使用它来探索 Linux 内核的工作原理。
有18位网友表示赞同!
陌離
对嵌入式系统开发同学来说,这篇内容很有价值! 但对于桌面端的使用场景, busybox 似乎不太适用
有19位网友表示赞同!