加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

如何定制Linux外围文件系统?

发布时间:2019-01-31 17:07:58 所属栏目:移动互联 来源:我是乖宝宝哦
导读:一样平常来说,我们所说的 Linux体系 指的是各类基于 Linux Kernel 和 GNU Project 的操纵体系刊行版。为了把握 Linux 操纵体系的行使,相识 Linux 操纵体系的运作进程,领略内核与外围支撑体系的相关,加深对开源操纵体系的熟悉,我抉择造个轮子本身定制一个
副问题[/!--empirenews.page--]

一样平常来说,我们所说的 Linux体系 指的是各类基于 Linux Kernel 和 GNU Project 的操纵体系刊行版。为了把握 Linux 操纵体系的行使,相识 Linux 操纵体系的运作进程,领略内核与外围支撑体系的相关,加深对开源操纵体系的熟悉,我抉择造个轮子——本身定制一个 Linux 文件体系。

这里有两种实现要领:

  • 直接本身实现 init***(M1)***

加载bios 的硬件信息-> 读取MBR –>执行Grub ->加载kernel–> 加载驱动–> init –> 执行bash

  • 操作体系 /sbin/init***(M2)***

加载bios 的硬件信息-> 读取MBR –>执行Grub ->加载kernel–> 加载驱动–> init –> /sbin/init -> 取得run-level信息 -> /etc/rc.d/rc.sysinit -> services –> /etc/rc.d/rc.local –> mingetty –> login

我们先选择 *M1 *。

思绪
  1. 操作原有体系复制必备部件到新存储器
  2. 操作 initrd.img 机制在 RAM Disk 中测试
  3. 搭配原文件内核和模块启动
Step1:得到shell版本的initrd.img

起首,我们可以写一个剧本 init ,使得内核用该文件体系启动后可以或许直接得到一个 Bash 。

怎样定制Linux外围文件体系?

建设剧本 init

个中: /bin 目次下是常用呼吁, init 是本身写的剧本, /lib64 目次下是应用措施所依靠的动态库。

怎样定制Linux外围文件体系?

init 内容

此刻我们必要行使呼吁行,建设 bin 和 sbin 目次,向个中添加 bash 、 ls 、 rm 、 cp 、 mv 、 echo 、 cat 、 less 等基本呼吁。因为这些呼吁必要依靠 /lib64 等目次下的一些动态链接的共享库,以是必要将依靠的库拷贝到小体系对应的目次下,用 ldd 呼吁查询应用措施及其依靠的动态库。完成之后,执行:

find . | cpio -H newc -o | gzip > /boot/initrd.img

将根文件体系打包成 initrd.img 放到 /boot 目次下。启动时体系会自动执行 initrd.img 中的 init 。

费了这么大劲天生 initrd.img ,怎样测试新建的 initrd.img 呢,必要在 grub 启动设置文件傍边增进一个进口用于测试。

title CentOS 6 Mini
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64
initrd /initrd.img

这样重启之后就会呈现启动选项了。

Step2:完成挂载原体系手段

为了能挂载原体系,必需在 initrd.img 中加载原体系运行所必需的驱动模块,好比 ext4 文件体系的驱动、 scsi 装备的相干驱动等, /sbin/modinfo 共同 /sbin/insmod ,驱动放到 /module

怎样定制Linux外围文件体系?

Step3:完成拥有打点装备手段(udev)

操作打点、监控主机装备的处事措施udevd来自动加载所需的驱动模块,比我们本身实现越发靠得住。 udevd 的法则文件在 /lib/udev/ 目次下,设置文件在 /etc/udev/ 目次下,同时还必要 /etc/nsswitch.conf 设置的名称处事互换,其依靠的库为 /lib 目次下以 libnss 开头的文件,将上述文件拷贝到我们的目次下,然后行使 /sbin/start_udev 呼吁可以启动 udevd 处事。( udevd 必要挪用一些其他的体系呼吁,如 /sbin/modprobe ,可用 strace 举办跟踪获取)。

怎样定制Linux外围文件体系?

小体系的目次文件

个中: /dev 目次下是体系存放可用装备的目次, /log 是行使 strace 呼吁天生的 log 记录文件。

Step4:完成拥有login登录手段

因为 login 的机制较量伟大,涉及历程打点机制和历程组、节制台等很多方面,因此我们回收 *M2 *,将 /sbin/init 呼吁拷到小体系目次下, init 剧本改为

#!/bin/bash
exec /sbin/init

将节制权交给 /sbin/init 之后,体系启动时就必需比及它完成一系列挪用之后,进入 login界面,用户才气从头得到节制权。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读