七库下载 手游攻略 手游攻略 linux内核系统有哪些,linux内核有什么用

linux内核系统有哪些,linux内核有什么用

时间:2024-03-30 22:40:29 来源:头条 浏览:0

在第二部分中,您下载了Linux内核源代码,对其进行了编译,并使用qemu模拟运行编译后的内核,但由于它没有文件系统,因此内核在启动后期遇到了“kernelpanic”消息。 ”因此,在上一节中,我们创建了一个disk.img文件作为“虚拟磁盘”,并将其格式化为Linux经典的ext2文件系统。

然而,虽然ext2 文件系统有一个“虚拟磁盘”disk.img,但它是空的,并且没有bin、proc 等基本目录,因此即使发生内核恐慌,内部也缺少文件系统。 kernel 已经解决了,但是最后还是报错。另外,你编写的init程序没有任何实际意义,因此预计Linux内核不会完全启动。本节的目标是创建一个可以引导Linux 内核的文件系统;也就是说,用引导Linux 所需的基本文件填充disk.img。当然,它还包括可以引导Linux的实际init程序。实现目标的方法有很多,但这里我们选择busybox。

Busybox 是一个开源项目,通常用于嵌入式系统等小型系统。除了init程序之外,busybox还包括一些常用的命令工具,例如ls、cat等。 Busybox非常轻量级,可以编译成完全独立的Busybox包,没有依赖关系。

当然,要使用busybox,第一步就是下载源码。 wget -c https://busybox.net/downloads/busybox-1.27.2.tar.bz2 这里我们使用1.27.2版本的busybox。下载后解压并按照默认设置编译。

tar xf sexybox-1.27.2.tar.bz2cdbusybox-1.27.2make defconfigmake menuconfig 上述命令的含义在第一节已经介绍得比较清楚了。执行最后一条命令后,会弹出图形配置界面,选择:

配置Busybox --- --- 构建选项[*] 将BusyBox 构建为静态二进制文件(无共享库)。

勾选这个选项的原因是磁盘镜像中没有其他库,所以busybox必须静态编译成一个单独的、无依赖的可执行文件,以避免运行时链接错误。然后就可以编译:

一旦make -j4编译完成,就可以安装它,创建一个新的安装目录并将busybox安装到该目录中。

mkdir installmake CONFIG_PREFIX=安装的绝对路径运行安装后,busybox 将被安装在如下所示的安装目录中。

Busybox提供的命令位于bin目录下,可以看到这些命令实际上是Busybox的快捷方式。

Busybox命令可以直接通过busybox执行。例如:

./busybox ls # 相当于ls. /busybox ps # 相当于ps 现在我们有了Busybox,我们把它塞到disk.img“虚拟磁盘”中。首先将disk.img挂载到rootfs,直接复制编译好的busybox。

sudo mount -ooopdisk.img rootfscp -abusybox-1.27.2/install/* rootfs 您的虚拟磁盘现在看起来越来越像Linux 文件系统。

init 是上一节中创建的应用程序,但它不能用于引导Linux。 linuxrc是从busybox编译的init程序。使用qemu模拟Linux内核执行时,可以将init程序指定为linuxrc。复制busybox 后,不要忘记卸载disk.img 并更新您的更改。

sudo umount rootfs. 现在让我们使用qemu 来模拟运行Linux 内核。

qemu-system-x86_64 \-m 512M \-smp 1 \-kernel bzImage \-drive format=raw,file=disk.img \-append \'init=/linuxrc root=/dev/hda\' \-curses kernel我终于不再惊慌了,但在启动Linux 内核的最后阶段我仍然收到一些奇怪的消息。

设置这是因为还有一些设置尚未配置。事实上busybox提供了官方文档。

.# 注意: BusyBox init 无需inittab 即可正常工作。如果inittab # 未找到,则默认行为为:# :sysinit:/etc/init.d/rcS# :askfirst:/bin/sh# :ctrlaltdel:/sbin/restart# :shutdown3336 0/sbin/sw apoff -a# :shutdown:/bin /umount -a - r# :restart:/sbin/init# tty2:askfirst:/bin/sh# tty3:askfirst :/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 stop disk.img rootfscd rootfsmkdir etcvim etc/inittab 输入以下内容:

:sysinit:/etc/init.d/rcS:askfirst:/bin/ash:ctrlaltdel:/sbin/reboot:shutdown:/sbin/swapoff -a:shutdown3336 0 /bin/umount -a -r:restart:/sbin/init 您应该根据您的设置创建可执行文件/。等/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键激活控制台。

按Enter 键激活此控制台。至此,您终于拥有了一个完全运行的Linux操作系统,并能够运行基本的Linux命令。还记得init 应用程序吗?现在它运行良好。

欢迎大家在评论区讨论、提问。所有文章均为手写原创,每天以通俗易懂的方式介绍C语言、Linux等嵌入式开发,所以如果您喜欢文章,请关注我们查看最新更新和往期文章。我可以。

标题:linux内核系统有哪些,linux内核有什么用
链接:https://www.7kxz.com/news/gl/18724.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
天地劫幽城再临归真4-5攻略:第四章归真4-5八回合图文通关教学

天地劫幽城再临归真4-5攻略:第四章归真4-5八回合图文通关教学[多图],天地劫幽城再临归真4-5怎么样八回合内通

2024-03-30
航海王热血航线艾尼路怎么玩?艾尼路加点连招攻略大全

航海王热血航线艾尼路怎么玩?艾尼路加点连招攻略大全[多图],航海王热血航线艾尼路怎么加点?艾尼路怎么连招?关

2024-03-30
坎公骑冠剑国际服怎么玩?国际服新手攻略

坎公骑冠剑国际服怎么玩?国际服新手攻略[多图],坎公骑冠剑国际服的玩法是什么样的?关于游戏中的一些新手玩法

2024-03-30
王者荣耀鸿运6+1地狱之眼怎么抽?鸿运抽奖地狱之眼概率获取攻略

王者荣耀鸿运6+1地狱之眼怎么抽?鸿运抽奖地狱之眼概率获取攻略[多图],王者荣耀鸿运抽奖活动的奖池中还有传说

2024-03-30