http://dieken-qfz.spaces.live.com/blog/cns!586D665C0DEB512D!397.entry boot loader装入kernel, 然后kernel需要执行/sbin/init, 读取 这个文件就必须先mount根文件系统, 早期是通过启动时的root= 参数告诉内核根文件系统在哪个设备上, 随着硬件和技术的发展, 现在根文件系统可能位于一个网络存储如NFS上, 可能由于RAID而 散布于多个设备上, 可能位于一个加密设备上需要提供用户名和密码, 这时root=参数就显得不够了. 为了应付...
------------------------------------------------------------------------------- 什么是ramfs? ramfs是空间规模动态变化的RAM文件系统。它非常简单,用来实现linux缓存机制(缓存page cache and dentry cache)的文件系统。 通常情况下,linux的所有文件在内存中都有缓存。需要读取的数据页从支撑存储设备(block device)中读取后,缓存于内存。在支撑存储设备中的数据页执行marked as clean操作。当虚拟文件系统需要支撑存储设...
boot loader装入kernel,然后kernel需要执行/sbin/init,读取这个文件就必须先mount根文件系统,早期是通过启动时的root=""参数告诉内核根文件系统在哪个设备上,随着硬件和技术的发展,现在根文件系统可能位于一个网络存储如NFS上,可能由于RAID而散布于多个设备上,可能位于一个加密设备上需要提供用户名和密码,这时root=参数就显得不够了。为了应付这种局面,先后出现两种机制来作为boot loader装载kernel到真正的/sbin/init执...
精通initramfs构建step by step (五):initrd 十七、配置内核支持initrd 到目前为止,我们的initramfs都由内核编译系统生成的,并链接到内核中。其实我们也可以用cpio命令生成单独的initramfs,与内核编译脱钩,在内核运行时以initrd的形式加载到内核,以增加灵活性。 首先配置内核使用单独的initrd:在 Device Driver / Block device / 配置目录下,选择 RAM filesystem and RAMdisk ( initramfs/initrd ) support 配置项;...
initramfs 加入内核,启动时, 是否需要启动参数? 按我的理解,是不需要的指定 root= ... init=... initrd=。 查看代码 init/initramfs.c -> populate_rootfs() 会解开 initramfs. 但是该函数会 使用 initrd_start 变量, 系统希望只启动 initramfs, 去哪里指定 initrd呢? 那我的理解就是错误的了?
摘自深入理解linux内核 系统启动 > 本文介绍当用户打开计算机电源之后发生的事情,也就是说,linux内核映像是如何被拷贝/加载到内存的。简而言之,我们讨论内核,继而是整个操作系统是如何启动的。 > “启动(bootstrap)”这个术语的原意是一个人要穿上靴子站起来。在操作系统中,这个术语专门表示把一部分操作系统装载到主存中并让处理器执行它,也表示内核数据结构的初始化,一些用户进程的创建以及把控制权转移到其中某个进...
使用ram disk初始化(initrd) initrd提供了在boot loader下加载ram disk的方法。该ram disk可以被作为根文件系统挂载进来,里面的程序也可以运行。然后,新的根文件系统可以从其他设备挂载。之前的根(来自initrd)可以被 转移到一个目录然后被卸载。 initrd主要设计用来使系统启动于两个条件,一个是内核来自于非常小的驱动器,一个是额外的模块需要从initrd中加载。 当使用initrd,典型的系统启动顺序如下:...
我把一台服务器数据用tar压缩后直接在另外一台新装的linux系统上解压出来替换。重启后无法进入系统提示:unmouning old /dev unmount old /proc unmount old /sys switchoot:mout faile:no uch file or directory