分类: LINUX
2011-02-26 12:43:43
我们硬盘安装 Linux 一般会用到类似下面的命令:
kernel (hd0,2)/vmlinuz root=/dev/ram0 ramdisk_size=32000 devfs=mount,dall
我是新手刚接触有些不解,google+baidu了一下,明白了一点,记录下来,也方便一同学习的菜菜鸟战友们。
kernel 是Gurb的一个命令,用来加载Linux内核
这个(hd0,2)是指定内核所在的分区,(hd0,2)是因不同机器而异的,可以用
find /vmlinuz 来查看。这个vmlinuz不一定是相同,例如magic linux 中就是mbvmlinuz。这个因发行版本有细微的差异。
那么(hd0,2)/vmlinuz 就指定了vmlinuz这个文件的位置。
再看root=/dev/ram0.这句话是指定挂载根分区的位置。即指定根目录.每个进程都有一个根目录,最终来源就是这个root。是Linux的root文件系统所在的硬盘分区位置。
很多直接写作类似:root=/dev/hda8 这样的语句直接指定。
至于这个/dev/ram0,引用一段来自新浪Blog memonote的话来启迪下说明问题:
----------------------------------------------------------------
指定根设备是通过内核参数“root=”来完成的。以GRUB引导器的配置为例:
kernel /boot/bzImage ro ramdisk_size=65536 root=/dev/ram0
initrd /boot/initrd.img
其中 ramdisk_size=65536 说明初始RAM盘的大小为64MB,root=/dev/ram0 说明根的位置。
1. boot loader把内核以及/dev/initrd的内容加载到内存,/dev/initrd是由boot loader初始化的设备,存储着initrd。
2. 在内核初始化过程中,内核把 /dev/initrd 设备的内容解压缩并拷贝到 /dev/ram0 设备上。
3. 内核以可读写的方式把 /dev/ram0 设备挂载为原始的根文件系统。
4. 如果 /dev/ram0 被指定为真正的根文件系统,那么内核跳至最后一步正常启动。
5. 执行 initrd 上的 /linuxrc 文件,linuxrc 通常是一个脚本文件,负责加载内核访问根文件系统必须的驱动, 以及加载根文件系统。
6. /linuxrc 执行完毕,真正的根文件系统被挂载。
7. 如果真正的根文件系统存在 /initrd 目录,那么 /dev/ram0 将从 / 移动到 /initrd。否则如果 /initrd 目录不存在, /dev/ram0 将被卸载。
+++++++++++++++++++++++++++++++++++++++++++++
我来说说自己的理解:这里ram0是一 个虚拟的内存设备,是被自动创建来存储ininrd的。在内核初始化过程中,内核把 /dev/initrd 设备的内容解压缩并拷贝到 /dev/ram0 设备上。并把 /dev/ram0 设备挂载为原始的根文件系统。如果像这样指定/dev/ram0,那么/dev/ram0 被指定为真正的根文件系统。如 果没有指定,而是直接用/dev/hda8这样直接指定真正的根文件系统,那么将用默认的ram0存储initrd,并以一定的方式做转换,将根文件系统 挂载到hda8,这两种方式ram0都是要用的,不同的是,第一种直接把ram0做为根文件系统了,第二种用完了ram0,还要把根转换到hda8.
那么这样应该比较清楚了吧。(我表达能力欠缺。。大家见谅,有些语无伦次)
来看我搜索到的来自LinuxSir的一个提问 请问devfs=mount,dall 是什么意思?
是mount d盘上的iso吗?
可不可以是call或者eall |
devfs字面意思是设备文件系统,mount是挂载,dall是所有类型。
|