广告
返回顶部
首页 > 资讯 > 操作系统 >Linux系统中怎么开启Initrd文件系统
  • 200
分享到

Linux系统中怎么开启Initrd文件系统

2023-06-12 22:06:54 200人浏览 独家记忆
摘要

linux系统中怎么开启Initrd文件系统,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。initial RAM diskLinux初始RAM磁盘(initrd)是在系统引

linux系统中怎么开启Initrd文件系统,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

initial RAM disk

Linux初始RAM磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM磁盘卸载,并释放内存。在很多嵌入式Linux系统中,initrd 就是最终的根文件系统。本文将探索 Linux 2.6 的初始 RAM磁盘,包括如何创建以及如何在Linux内核中使用。
什么是初始 RAM 磁盘

初始RAM磁盘(initrd)是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。initrd与内核绑定在一起,并作为内核引导过程的一部分进行加载。内核然后会将这个 initrd文件作为其两阶段引导过程的一部分来加载模块,这样才能稍后使用真正的文件系统,并挂载实际的根文件系统。
initrd 中包含了实现这个目标所需要的目录和可执行程序的最小集合,例如将内核模块加载到内核中所使用的 insmod 工具
在桌面或服务器Linux 系统中,initrd 是一个临时的文件系统。其生存周期很短,只会用作到真实文件系统的一个桥梁。在没有存储设备的嵌入式系统中,initrd 是永久的根文件系统。本文将对这两种情况进行探索。

Initrd开启步骤

下面来看下如何打开initrd,这里我使用的是debian5操作系统

创建一个目录,将/boot/initrd.img-2.6.18-6-amd64 复制到该目录下.

代码如下:


root@192.168.30.68:tmp# mkdir initrd
root@192.168.30.68:tmp# cd initrd/
root@192.168.30.68:initrd# ls
root@192.168.30.68:initrd# cp /boot/initrd.img-2.6.18-6-amd64 .
root@192.168.30.68:initrd# ls
initrd.img-2.6.18-6-amd64


2.将initrd文件名改为.gz文件,将其解压缩.

代码如下:


root@192.168.30.68:initrd# file initrd.img-2.6.18-6-amd64 #发现该文件是一个gzip压缩过的文件
initrd.img-2.6.18-6-amd64: gzip compressed data, from Unix, last modified: Thu Sep 24 18:21:40 2009
root@192.168.30.68:initrd# mv initrd.img-2.6.18-6-amd64 initrd.img-2.6.18-6-amd64.gz
root@192.168.30.68:initrd# file initrd.img-2.6.18-6-amd64.gz
initrd.img-2.6.18-6-amd64.gz: gzip compressed data, from Unix, last modified: Thu Sep 24 18:21:40 2009
root@192.168.30.68:initrd# gunzip initrd.img-2.6.18-6-amd64.gz


3.使用file发现解压缩过后的文件是一个cpid格式,是一种备份格式,使用cpio,参数'i' 代表解包 与'd' 代表在需要时自动建立第一层目录.

代码如下:


root@192.168.30.68:initrd# file initrd.img-2.6.18-6-amd64
initrd.img-2.6.18-6-amd64: ASCII cpio arcHive (SVR4 with no CRC)
root@192.168.30.68:initrd# cpio -id < initrd.img-2.6.18-6-amd64
32912 blocks
root@192.168.30.68:initrd# ls
bin  conf  etc  init  initrd.img-2.6.18-6-amd64  lib  lib64  sbin  scripts
root@192.168.30.68:initrd# rm initrd.img-2.6.18-6-amd64
rm: remove regular file `initrd.img-2.6.18-6-amd64'? y
root@192.168.30.68:initrd# ls
bin  conf  etc  init  lib  lib64  sbin  scripts


也可以直接通过zcat读取gzip格式的文件,再将读出来的结果由pipeline交给cpio解开

代码如下:


root@192.168.30.68:initrd# zcat initrd.img-2.6.18-6-amd64 | cpio -id
32912 blocks
root@192.168.30.68:initrd# ls
bin  conf  etc  init  initrd.img-2.6.18-6-amd64  lib  lib64  sbin  scripts


以上就是initrd文件打开后的目录架构,当kernel启动加载initrd时,并没有任何系统的目录架构,这时会先以initrd所提供的目录当做是系统的暂时目录.

其中有个lib目录:里面存放着许多的模块,即现在系统所有的模块,这代表目录中所存放的模块都是开机所必须加载的模块.例如当kernel加载Initrd之后,initrd将会加相应的网络模块驱动,以便让我们进入操作系统能够识别到网卡.

代码如下:


root@192.168.30.68:initrd# lsmod | grep bnx2  #本机网络驱动
bnx2                  183048  0
root@192.168.30.68:initrd# find . -name 'bnx2*' #initrd里bnx2对应的模块
./lib/modules/2.6.18-6-amd64/kernel/drivers/net/bnx2.ko
./lib/firmware/bnx2-09-4.0.5.fw
./lib/firmware/bnx2-06-4.0.5.fw


假如临时又添加了一块最新的网卡,希望在开机时加载,这时只要修改initrd文件的内容在打个包就可以了,比起重新编译kernel或者安装操作系统要方便多了.


下面介绍如何让将修改后的initrd文件再重新打包起来.

在修改后的文件目录下,使用find将所有的文件列出来,再通过pipeline,把所有清单交给cpio指令.cpio用到的参数'c'代表用新的SVR4可移植格式.'o'代表建立文件.最后用gzip以最佳的压缩效率'-9'压缩(默认是-6),使用'>'导出.

代码如下:


root@192.168.30.68:initrd# ls
bin  conf  etc  init  lib  lib64  sbin  scripts
root@192.168.30.68:initrd# find | cpio -co | gzip -9 > initrd.img-2.6.18-6-amd64
32884 blocks
root@192.168.30.68:initrd# ls
bin  conf  etc  init  initrd.img-2.6.18-6-amd64  lib  lib64  sbin  scripts
root@192.168.30.68:initrd# file initrd.img-2.6.18-6-amd64
initrd.img-2.6.18-6-amd64: gzip compressed data, from Unix, last modified: Tue May 14 13:50:26 2013, max compression


2.将该文件copy到/boot/下.重启机器生效.

此外在initrd被kernel加载后的开机流程,是依照initrd文件中的一个init文件,由它所提供的脚本一步一步往下做,包括实体硬盘加载实际的操作系统也是由这个文件提供的.

代码如下:


root@192.168.30.68:initrd# ls
bin  conf  etc  init  lib  lib64  sbin  scripts
root@192.168.30.68:initrd# cat init
#!/bin/sh

代码如下:


echo "Loading, please wait..."

代码如下:


[ -d /dev ] || mkdir -m 0755 /dev
[ -d /root ] || mkdir -m 0700 /root
[ -d /sys ] || mkdir /sys
[ -d /proc ] || mkdir /proc
[ -d /tmp ] || mkdir /tmp
mkdir -p /var/lock
mount -t sysfs -o nodev,noexec,nosuid none /sys
mount -t proc -o nodev,noexec,nosuid none /proc

代码如下:


# Note that this only becomes /dev on the real filesystem if udev's scripts
# are used; which they will be, but it's worth pointing out
tmpfs_size="10M"
if [ -e /etc/udev/udev.conf ]; then
   . /etc/udev/udev.conf
fi
mount -t tmpfs -o size=$tmpfs_size,mode=0755 udev /dev
[ -e /dev/console ] || mknod -m 0600 /dev/console c 5 1
[ -e /dev/null ] || mknod /dev/null c 1 3
> /dev/.initramfs-tools
mkdir /dev/.initramfs

代码如下:


# Export the dpkg architecture
export DPKG_ARCH=
. /conf/arch.conf

代码如下:


# Set modprobe env
export MODPROBE_OPTIONS="-qb"

代码如下:


# Export relevant variables
export ROOT=
export ROOTDELAY=
export ROOTFLAGS=
export ROOTFSTYPE=
export break=
export init=/sbin/init
export quiet=n
export readonly=y
.....

关于Linux系统中怎么开启Initrd文件系统问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网操作系统频道了解更多相关知识。

--结束END--

本文标题: Linux系统中怎么开启Initrd文件系统

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux系统中怎么开启Initrd文件系统
    Linux系统中怎么开启Initrd文件系统,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。initial RAM diskLinux初始RAM磁盘(initrd)是在系统引...
    99+
    2023-06-12
  • Linux initrd系统怎么掌握
    本篇内容主要讲解“Linux initrd系统怎么掌握”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux initrd系统怎么掌握”吧!定义主目录(root)的路径mkrootdev指令是...
    99+
    2023-06-16
  • Linux系统怎么打开ISO文件
    这篇文章将为大家详细讲解有关Linux系统怎么打开ISO文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ISO文件其实就是光盘的镜像文件,刻录软件可以直接把ISO文件刻录成可安装的系统光盘,ISO文件一...
    99+
    2023-06-28
  • Linux系统中怎么开启防火墙
    本篇文章给大家分享的是有关Linux系统中怎么开启防火墙,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、service方式  查看防火墙状态:  [root@centos6 ...
    99+
    2023-06-28
  • Linux系统怎么开启FTP服务
    这篇文章主要介绍Linux系统怎么开启FTP服务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!FTP用于互联网上控制文件的双向传输的过程,主要用做服务器程序文件的上传和下载。1. 首先服务器要安装ftp软件,查看是否...
    99+
    2023-06-28
  • Linux系统怎么开启Telnet服务
    这篇文章给大家介绍Linux系统怎么开启Telnet服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Telnet协议简介:Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议。Tel...
    99+
    2023-06-28
  • linux系统中怎么查找文件
    今天给大家介绍一下linux系统中怎么查找文件。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。Linux系统中查找文件有两个方法:第一种方法是就是使用find命...
    99+
    2023-06-28
  • Linux系统中怎么加密文件
    这篇文章主要讲解了“Linux系统中怎么加密文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统中怎么加密文件”吧!在Linux系统安装时选择使用EFS首先将介绍一个非常简单的方...
    99+
    2023-06-17
  • Linux系统中怎么创建文件
    Linux系统中怎么创建文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。对应英文:touch命令:touch [目录名]作用:如果文件不存在,新建文件Linu...
    99+
    2023-06-28
  • Linux系统中怎么拷贝文件
    Linux系统中怎么拷贝文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先,无论本地还是远程,需要移动或拷贝的文件较多且都不太大时,用cp命令和mv命令效率较低,可以先使用...
    99+
    2023-06-12
  • Linux系统中怎样开启ssh服务
    今天就跟大家聊聊有关Linux系统中怎样开启ssh服务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SSH服务简介:SSH是专门为远程登录会话与其他网络服务提供的一种安全性协议。通过...
    99+
    2023-06-28
  • Linux系统文件系统及文件基础是怎么样的
    这篇文章将为大家详细讲解有关Linux系统文件系统及文件基础是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。学习Linux,重难点在于掌握不同类别的文件系统及其作用。通过对Linux...
    99+
    2023-06-05
  • Linux系统中怎么重启MySQL
    这篇文章主要介绍“Linux系统中怎么重启MySQL”,在日常操作中,相信很多人在Linux系统中怎么重启MySQL问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统中怎么重启MySQL”的疑惑有所...
    99+
    2023-06-28
  • Linux系统中怎么启动nginx
    这篇文章主要介绍了Linux系统中怎么启动nginx的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux系统中怎么启动nginx文章都会有所收获,下面我们一起来看看吧。Nginx简介:Nginx (engi...
    99+
    2023-06-28
  • Linux系统中怎么统计文件夹下文件数量
    这篇文章主要讲解了“Linux系统中怎么统计文件夹下文件数量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统中怎么统计文件夹下文件数量”吧!一种是:代码如下:ls -l |gre...
    99+
    2023-06-10
  • 【Linux】文件系统
    ​🌠 作者:@阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们...
    99+
    2023-09-09
    linux 服务器 运维 文件系统
  • Linux系统怎么管理文件
    在Linux系统中,可以使用以下命令来管理文件:1. ls:列出当前目录下的文件和子目录。例如:`ls` 或 `ls -l`2. c...
    99+
    2023-10-12
    linux
  • Linux系统中的文件系统路径是什么
    这篇文章主要讲解了“Linux系统中的文件系统路径是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统中的文件系统路径是什么”吧!1、Linux文件系统是从/开始的;在Linu...
    99+
    2023-06-12
  • 怎么在Linux系统中查找文件
    本篇文章为大家展示了怎么在Linux系统中查找文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。linux查找文件1.1 find命令Linux find 命令是所有 Linux 命令中最有用的一个...
    99+
    2023-06-16
  • Linux系统中怎么执行python文件
    本篇内容主要讲解“Linux系统中怎么执行python文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统中怎么执行python文件”吧!方法:在.py文件的第一行加上下面的任意一行...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作