2.6.32.27可以不指定initrd选项

如果指定initrd选项,则自动调用initrd内的linuxrc或init进行一切必要的初始化。Kernel启动参数全部会作为变量传递给这两个脚本。如root=,init=,等等。

未指定initrd选项

如果未指定root选项或指定为空,则kernel会自动将第一个分区挂载为/。

如果指定root选项,则挂载指定设备为/。

指定非法的root选项或init选项,都将导致kernel panic。

指定initrd选项

由initrd来负责挂载/和执行init。

Cpio.gz格式的initramfs,kernel将其临时挂载为/ (但不知是如何挂载的)。

Ext2.gz格式的initrd,会作为/dev/ram0设备,kernel将其临时挂载为/ (type为extN),但是不要在启动参数中使用root=/dev/ram0,否则会出现无法读写/dev/initctl的情况,/sbin/init无法正常启动。

Initrd=initramfs_data.cpio.gz (lfs-6.3 liveCD自带)

不指定root或指定root为空时,mount cd到.root并最终作为/加载,而如果cd不存在,则新建一个sh,并等待用户插入cd和退出,这是一个死循环。可利用这种途径实现不进入最终文件系统而是进入initramfs进行调试(实质上只要在启动过程中执行另一个sh实例即可)。

该initramfs不支持nfs

该initramfs默认指定init=/sbin/init

Initrd=initrd (自编的ext2.gz)

行为完全由自己指定

Initrd(extN.gz)的制作:

解压:

gzip解压后,mount为extN类型即可

压缩:

dd if=/dev/zero of=$IMAGE bs=1k count=8000

losetup /dev/loopM $IMAGE

mount -t extN /dev/loopM $MOUNT_POINT

#copy files to $MOUNT_IMAGE

(cd $MOUNT_IMAGE; tar cf - .) | (cd $MOUNT_POINT; tar xf -)

umount $MOUNT_POINT

losetup -d $LOOP_DEVICE

gzip -9 < $IMAGE > $INITRD

Initramfs(cpio.gz)的制作:

解压:

cpio –i < initramfs

压缩:

find . | cpio -o -H newc | gzip > /boot/initramfs_data.cpio.gz  #必须加上-H newc的选项

CHROOT (with my initrd)

Directly startup without pause

无initctl错误,能启用newfs,之后可改变runlevel,exit重启bash

#!/bin/sh

cd /new_root

echo "Running pivot_root..."

pivot_root /new_root /new_root/initrd

echo "Running init..."

exec chroot . /sbin/init 3 2>&1

.,有linuxrc [错误,无initctl错误,能启用newfs,之后可改变runlevel,exit重启bash

[sh], chroot: not found

exec,同.。

exec chroot /new_root /sbin/init 3

最开始有一个initctl错误,能启用newfs,之后可改变runlevel,exit重启bash

chroot /new_root /sbin/init 3

initctl错误,不能启用newfs, exit 到被中止的linuxrc继续,同directly

exec chroot /new_root /bin/sh

启用newfs, cd不进root目录,可执行文件找不到路径,/sbin/runlevel输出3 4,exit 到被中止的linuxrc继续,同directly

chroot /new_root /bin/sh

启用newfs, cd不进root目录,可执行文件找不到路径,/sbin/runlevel输出3 4,exit到bbsh和oldfs

 

initrd in linux 2.6.32.27的更多相关文章

  1. 【故障•监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe

    [故障|监听]TNS-12518.TNS-00517和 Linux Error:32:Broken pipe 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱 ...

  2. 查看linux机器是32位还是64位的方法

    file /sbin/init 或者 file /bin/ls/sbin/init: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dyna ...

  3. 如何查看linux系统是32位还是64位

    1.#uname -a 如果有x86_64就是64位的,没有就是32位的 这是64位的  # uname -a  Linux desktop 2.6.35-23-generic #37-Ubuntu ...

  4. 查看linux库文件32位还是64位

    查看linux库文件32位还是64位 分类: linux2014-09-25 09:46 238人阅读 评论(0) 收藏 举报 objdump -a  *.a objdump -a  *.so

  5. linux内核学习之三:linux中的"32位"与"64位"

    在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位"与"64位"的说法,类似的还有"x86"与"x86 ...

  6. linux中的"32位"与"64位"

    linux内核学习之三:linux中的"32位"与"64位" 在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位" ...

  7. 【Linux】查看所使用的Linux系统是32位还是64 位的方法

    查看所使用的Linux系统是32位还是64 位的方法 方法一:getconf LONG_BIT # getconf LONG_BIT 1 1 我的Linux是32位!!! 方法二:arch # arc ...

  8. linux gcc 区分32位或64位编译 && 请问arm存储,是以小端格式还是以大端格式?

    linux gcc 区分32位或64位编译   Linux系统下程序如何区分是64位系统还是32位系统 经过对include的翻查,最后确定gcc以__i386__来 进行32位编码,而以__x86_ ...

  9. 在64位linux下编译32位程序

    在64位linux下编译32位程序 http://blog.csdn.net/xsckernel/article/details/38045783

随机推荐

  1. mysql 内置函数和sql server 内置函数的区别

    以下函数均没有对参数做说明,使用的使用需要了解其参数内容 数据库 sql server mysql oracle 举例 获得当前系统时间 getdate() now() sysdate  注意不是函数 ...

  2. Centos常用快捷键

    终端快捷键  tab=补全 ctrl+a=开始位置 ctrl+e=最后位置 ctrl+k=删除此处至末尾所有内容 ctrl+u=删除此处至开始所有内容 ctrl+d=删除当前字母 ctrl+w=删除此 ...

  3. error: illegal character '\ufeff' 的解决方案

    今天使用scalac 命令编译scala文件的时候,出错了,出现如下错误提示:

  4. 8.2 C++标准输出流对象

    参考:http://www.weixueyuan.net/view/6408.html 总结: iostream头文件,包含了该头文件后,我们就可以直接使用这些对象,包含标准的输出流对象cout.ce ...

  5. 7.8 C++容器适配器

    参考:http://www.weixueyuan.net/view/6405.html 总结: 容器适配器是用基本容器实现的一些新容器,这些容器可以用于描述更高级的数据结构. 容器适配器有三种:sta ...

  6. 7.6 C++基本序列式容器效率比较

    参考:http://www.weixueyuan.net/view/6403.html 总结: 对于vector而言,它只是一个可以伸缩长度的数组 对于deque而言,它是一个可以操作头部和尾部的并且 ...

  7. 第三节 java 函数的封装方法 以及 访问封装内容

    从我们的选择排序和冒泡排序里我们可以看到有很多相同的代码, 我们 可以把这些相同的代码提取出来封装为方法:比如我们的判 断交换和遍历输出: 抽取1: public static void PanDua ...

  8. Linux文件系统命令 mkdir/rmdir

    命令名:mkdir 功能:创建一个文件夹,和touch的区别是,touch是创建一个文件,后面可以跟绝对路径和相对路径 eg: mkdir ren 命令名:rmdir 功能:删除一个文件夹

  9. ORACLE CASE WHEN 及 SELECT CASE WHEN的用法

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  10. vue-router + ElementUI实现NavMenu 导航菜单 选中状态的切换

    elemen-ui官方网站:http://element.eleme.io/#/zh-CN/component/menu 新手小白利用vue+element-ui尝试搭建后台管理系统, 效果是这样的, ...