首页服务器Linux服务器 Linux外围文件系统的定制方法

Linux外围文件系统的定制方法

前言 一般来说,我们所说的Linux系统指的是各种基于Linux Kernel和GNU Project的操作系统发行版。为了掌握Linux操作系统的使用,了解 Linux操作系统的运作过程,理解内核与外围…

前言

一般来说,我们所说的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*。

思路

  • 利用原有系统复制必备部件到新存储器
  • 利用initrd.img机制在RAM Disk中测试
  • 搭配原文件内核和模块启动

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
本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/fwq/Linux/9627.html
上一篇如何利用多核CPU来加速你的Linux命令(GNU Parallel)
下一篇 Linux shell环境下Zabbix Api的使用
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部