返回顶部
首页 > 资讯 > 操作系统 >怎么定制Linux外围文件系统
  • 517
分享到

怎么定制Linux外围文件系统

2023-06-16 09:06:59 517人浏览 独家记忆
摘要

这篇文章主要介绍怎么定制linux外围文件系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!思路利用原有系统复制必备部件到新存储器利用 initrd.img 机制在 RAM Disk&n

这篇文章主要介绍怎么定制linux外围文件系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

思路

  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 Miniroot (hd0,0)kernel /vmlinuz-2.6.32-642.el6.x86_64initrd /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/bashexec /sbin/init

将控制权交给 /sbin/init 之后,系统启动时就必须等到它完成一系列调用之后,进入 login界面,用户才能重新获得控制权。

/sbin/init 的过程大致分为三块:***块是udevd加载驱动模块、文件系统检查和根切换,相关配置在 /etc/rc.sysinit 中;第二块是启动各项服务,相关配置在 /etc/rc.d/ 目录下;第三块是登录部分,需要调用 /sbin/mingetty 和 /bin/login 等命令。将上述所涉及的命令及文件拷贝到小系统对应的目录下,并对配置进行修改。

由于小系统启动之后 initrd.img 作为临时根文件系统直接在内存中运行,而我们小系统不需要进行根切换,故将 /etc/rc.sysinit 中 remount\_needed() 函数体注释掉,这样就不会根切换了。

由于系统采用了全新的 Upstart 启动方式( /sbin/init 程序已经改由 upstart 软件包提供),将与 Upstart 启动相关的配置文件拷贝至小系统目录下:

/etc/inittab 配置默认运行级别/etc/init/rcS.conf 加载rc.sysinit脚本,完成系统初始化任务/etc/init/rc.conf 兼容脚本,负责各运行级别的调用处理/etc/init/rcS-sulogin.conf 为单用户模式启动/sbin/sushell环境/etc/init/control-alt-delete.conf 控制终端下的Ctrl+Alt+Del热键操作/etc/init/start-ttys.conf 配置tty终端的开启数量、设备文件/etc/sysconfig/init 控制tty终端的开启数量、终端颜色方案/etc/init/tty.conf 控制tty终端的开启

将 bootmini/etc/inittab 的运行优先级改为2,那么系统启动时 /sbin/init 将执行 bootmini/etc/rc.d/rc2.d/ 目录下以 S 开头的文件,将一些不需要开启的服务文件名改为 K 开头。

在 bootmini/etc/rc.d/rc.local 文件中可以加入用户需要系统开机启动后自动执行的操作。

login 程序基于认证体系 PAM , 配置文件在 /etc/pam.d/ 目录下,相关库文件有 /lib64/security/ 及其依赖的库文件; login 还涉及用户组管理 /bin/chgrp 、 /bin/chown 、 /bin/chmod 等,保存用户名的文件 /etc/passwd 、 /etc/group ,用户密码文件为 /etc/shadow 。其他一些涉及的文件可通过 strace 来帮助分析。

可在真机上运行的完整版小系统

部分目录文件:

怎么定制Linux外围文件系统

/etc

怎么定制Linux外围文件系统

/bin

怎么定制Linux外围文件系统

/sbin

怎么定制Linux外围文件系统

/usr/bin

怎么定制Linux外围文件系统

/usr/sbin

至此,文件系统算是可以跑了。

以上是“怎么定制Linux外围文件系统”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: 怎么定制Linux外围文件系统

本文链接: https://lsjlt.com/news/283067.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么定制Linux外围文件系统
    这篇文章主要介绍怎么定制Linux外围文件系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!思路利用原有系统复制必备部件到新存储器利用 initrd.img 机制在 RAM Disk&n...
    99+
    2023-06-16
  • Linux外围文件系统的定制方法
    前言 一般来说,我们所说的linux系统指的是各种基于Linux Kernel和GNU Project的操作系统发行版。为了掌握Linux操作系统的使用,了解 Linux操作系统的运作过程,理解内核与外围支撑系统的关系,...
    99+
    2022-06-04
    linux文件系统类型 linux文件系统 linux外围文件系统
  • Linux系统怎么复制文件夹下的全部文件到另外文件夹
    这篇文章主要讲解了“Linux系统怎么复制文件夹下的全部文件到另外文件夹”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统怎么复制文件夹下的全部文件到另外文件夹”吧!在Linux系...
    99+
    2023-06-13
  • Linux系统怎么删除指定文件
    Linux系统怎么删除指定文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。命令格式:      find  指定的文件夹/ -name...
    99+
    2023-06-28
  • Linux系统中怎么查找指定文件
    这篇文章主要讲解了“Linux系统中怎么查找指定文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统中怎么查找指定文件”吧!-name 必须用到的选项。表明要求系统按照文件名查找...
    99+
    2023-06-10
  • Linux系统下怎么制作ISO镜像文件
    这篇文章主要介绍“Linux系统下怎么制作ISO镜像文件”,在日常操作中,相信很多人在Linux系统下怎么制作ISO镜像文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统下怎么制作ISO镜像文件...
    99+
    2023-06-10
  • 怎么在Linux上复制文件/文件夹到远程系统
    这篇文章将为大家详细讲解有关怎么在Linux上复制文件/文件夹到远程系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。从一个服务器复制文件到另一个服务器,或者从本地到远程复制是 Linux 管理员的日常任...
    99+
    2023-06-16
  • Linux系统单个文件夹大小怎么限制
    这篇文章主要讲解了“Linux系统单个文件夹大小怎么限制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统单个文件夹大小怎么限制”吧!Linux下由于某些用途需要限制个别文件夹大小...
    99+
    2023-06-12
  • Linux系统怎么管理文件
    在Linux系统中,可以使用以下命令来管理文件:1. ls:列出当前目录下的文件和子目录。例如:`ls` 或 `ls -l`2. c...
    99+
    2023-10-12
    linux
  • Linux系统文件系统及文件基础是怎么样的
    这篇文章将为大家详细讲解有关Linux系统文件系统及文件基础是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。学习Linux,重难点在于掌握不同类别的文件系统及其作用。通过对Linux...
    99+
    2023-06-05
  • linux系统怎么查看文件指定行的数据
    这篇文章主要介绍“linux系统怎么查看文件指定行的数据”,在日常操作中,相信很多人在linux系统怎么查看文件指定行的数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux系统怎么查看文件指定行的数据...
    99+
    2023-06-13
  • Linux系统中怎么开启Initrd文件系统
    Linux系统中怎么开启Initrd文件系统,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。initial RAM diskLinux初始RAM磁盘(initrd)是在系统引...
    99+
    2023-06-12
  • 怎么监控Linux文件系统事件
    这篇文章将为大家详细讲解有关怎么监控Linux文件系统事件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。历史简介在 inotify 之前有 dnotify。不幸的是,dnotify 有局限性,用户需要更好...
    99+
    2023-06-16
  • Linux系统怎么隐藏文件夹和文件
    这篇文章主要介绍“Linux系统怎么隐藏文件夹和文件”,在日常操作中,相信很多人在Linux系统怎么隐藏文件夹和文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统怎么隐藏文件夹和文件”的疑惑有所...
    99+
    2023-06-13
  • Linux系统复制文件的命令是什么
    这篇文章主要为大家分析了Linux系统复制文件的命令是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux系统复制文件的命令是什么”的知识吧。用法1...
    99+
    2023-06-28
  • 【Linux】文件系统
    ​🌠 作者:@阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们...
    99+
    2023-09-09
    linux 服务器 运维 文件系统
  • Linux系统中怎么拷贝文件
    Linux系统中怎么拷贝文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先,无论本地还是远程,需要移动或拷贝的文件较多且都不太大时,用cp命令和mv命令效率较低,可以先使用...
    99+
    2023-06-12
  • Linux系统中怎么加密文件
    这篇文章主要讲解了“Linux系统中怎么加密文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统中怎么加密文件”吧!在Linux系统安装时选择使用EFS首先将介绍一个非常简单的方...
    99+
    2023-06-17
  • linux怎么挂载根文件系统
    要挂载Linux的根文件系统,可以按照以下步骤进行操作:1. 在启动过程中,进入 GRUB 菜单。在大多数 Linux 发行版中,按...
    99+
    2023-09-06
    linux
  • Linux系统怎么执行.exe文件
    小编给大家分享一下Linux系统怎么执行.exe文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!.exe文件是windows中的执行程序。1、安装需要的软件包:...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作