initrd in linux 2.6.32.27
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的更多相关文章
- 【故障•监听】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 导读和注意事项 各位技术爱 ...
- 查看linux机器是32位还是64位的方法
file /sbin/init 或者 file /bin/ls/sbin/init: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dyna ...
- 如何查看linux系统是32位还是64位
1.#uname -a 如果有x86_64就是64位的,没有就是32位的 这是64位的 # uname -a Linux desktop 2.6.35-23-generic #37-Ubuntu ...
- 查看linux库文件32位还是64位
查看linux库文件32位还是64位 分类: linux2014-09-25 09:46 238人阅读 评论(0) 收藏 举报 objdump -a *.a objdump -a *.so
- linux内核学习之三:linux中的"32位"与"64位"
在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位"与"64位"的说法,类似的还有"x86"与"x86 ...
- linux中的"32位"与"64位"
linux内核学习之三:linux中的"32位"与"64位" 在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位" ...
- 【Linux】查看所使用的Linux系统是32位还是64 位的方法
查看所使用的Linux系统是32位还是64 位的方法 方法一:getconf LONG_BIT # getconf LONG_BIT 1 1 我的Linux是32位!!! 方法二:arch # arc ...
- linux gcc 区分32位或64位编译 && 请问arm存储,是以小端格式还是以大端格式?
linux gcc 区分32位或64位编译 Linux系统下程序如何区分是64位系统还是32位系统 经过对include的翻查,最后确定gcc以__i386__来 进行32位编码,而以__x86_ ...
- 在64位linux下编译32位程序
在64位linux下编译32位程序 http://blog.csdn.net/xsckernel/article/details/38045783
随机推荐
- > Raiders 项目配置
VS2010 新建一个工程,把 源码目录\Source\T3DIICHAP01中的*.h 和*.cpp文件都拷到新工程中并添加 双击 源码目录\DirectX \ dx9sdkcp.exe会自动解 ...
- jackson中的@JsonBackReference
# StackOverflowError / 无限递归 / json递归 / JsonBackReference 环境:springmvc+hibernate+json 在controller返 ...
- Interlocked单向链式栈
线程同步一大部分与原子访问(atomic access)有关, 所谓原子访问, 指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源. Interlocked单向链式栈的操作 ...
- 7系列FPGA远程更新方案-QuickBoot(转)
reference: http://xilinx.eetrend.com/d6-xilinx/article/2014-04/7009.html reference : quickboot meth ...
- 计算图 graph
tensorflow,tensor就是数据,flow就是流,tensorflow就是数据流 tensorflow是一个用计算图的形式来表示计算的编程系统,所有的数据和计算都会被转化成计算图上的一个节点 ...
- 牛客多校第五场 F take
链接:https://www.nowcoder.com/acm/contest/143/F来源:牛客网 题目描述 Kanade has n boxes , the i-th box has p[i] ...
- java基础学习之final关键字
final可以修饰类.方法.变量,一旦使用了final则将不能改变被修饰的对象的引用; 被final修饰的类不可以被继承 被final修饰的方法不可以被覆盖 被final修饰的变量一般为常量,只允许对 ...
- Mybatis学习笔记三
一.延迟加载 延迟加载即加载延迟了,并不是一次性加载完而是按需加载,感觉应该是针对多表查询而言的,即先查询单表等需要另一张表的信息时再去加载,这样能提高数据库的性能: 需要注意的是,mybatis提供 ...
- 六、在U-boot中让LCD填充纯色
1. 编译U-boot 准备好U-boot压缩包urbetter-u-boot-1.1.6-v1.0.tgz,输入命令:tar -xvf urbetter-u-boot-1.1.6-v1.0.tgz ...
- 64-65管道,rm与rmdir
听说linux根目录tmp文件夹内是临时文件.用久了会产生很多垃圾文件 请问下面的临时文件怎么维护清理?全部没用删除,还是? /tmp 公用的临时文件存储点 linux下的文件结构 /bin 二进制可 ...