快捷搜索:  
精通initramfs构建stepbystep(十)

精通initramfs构建stepbystep(十)

二十九、toolchain 在init ramfs中使用uclibc库,关键是构建uclibc的工具链toolchain。构建uclibc 的 toolchain 有两种主要方式:(1)用buildroot工具( http://buildroot.uclibc.org/)自动构建,这也是uclibc的官方标准做法。(2)用CLFS Embedded手册的方法手工创建。目前CLFS Embedded还在开发中,可在http://cross-lfs.org/view/clfs-embedded/x86/中查...

精通initramfs构建stepbystep(九)

精通initramfs构建stepbystep(九)

二十七、直接把cpio打包文件编译进内核 如果我们有一个已经做好的cpio格式的init ramfs,可以在内核编译时直接编译进内核。回忆一下第一节的内容,我们在内核配置参数中的init ramfs sources配置项下输入构建init ramfs的目录路径。其实我们也可以直接输出现成的init ramfs的文件名,这样在内核编译时,就可以把它编译进内核了。 使用这种方法,有两点需要注意: (1)cpio文件不能压缩。一般作为initrd的cpio文件都经过了压缩,所以编译前需要先把压缩过的文件解压。...

精通initramfs构建stepbystep(八)

精通initramfs构建stepbystep(八)

二十五、udev的coldplug模式 内核在启动时已经检测到了系统的硬件设备,并把硬件设备信息通过sysfs内核虚拟文件系统导出。sysfs文件系统由系统初始化脚本挂载到/sys上。udev扫描sysfs文件系统,根据硬件设备信息生成热插拔(hotplug)事件,udev再读取这些事件,生成对应的硬件设备文件。由于没有实际的硬件插拔动作,所以这一过程被称为coldplug。我们的init ramfs就是利用这一机制,加载硬件设备的驱动程序模块。 udev完成coldplug操作,需要下面三个程序: u...

精通initramfs构建stepbystep(七)

精通initramfs构建stepbystep(七)

二十二、内核模块支持 到目前为止,我们在构建init ramfs时还没有涉及内核模块的支持,所用到的硬件驱动程序都是直接编译到内核中。现在我们就看看如何使init ramfs支持内核模块。 首先,内核配置要支持模块,并支持内核模块的自动加载功能:在内核配置菜单中的激活下面的配置项,编译进内核 Load module support / Enable loadable module support / Automatic kernel loading ; 然后把需要的硬件驱动程序配置模块形式,比如把我的机...

精通initramfs构建stepbystep(六)

精通initramfs构建stepbystep(六)

二十、switch_root 命令 除了基于init ramfs的系统(如第四节的mini linux),通常init ramfs都是为安装最终的根文件系统做准备工作,它的最后一步需要安装最终的根文件系统,然后切换到新根文件系统上去。以往的基于ramdisk 的initrd 使用pivot_root命令切换到新的根文件系统,然后卸载ramdisk。但是init ramfs是rootfs,而rootfs既不能pivot_root,也不能umount。为了从init ramfs中切换到新根文件系统,需要作如...

精通initramfs构建stepbystep(五)

精通initramfs构建stepbystep(五)

十七、配置内核支持initrd 到目前为止,我们的init ramfs都由内核编译系统生成的,并链接到内核中。其实我们也可以用cpio命令生成单独的init ramfs,与内核编译脱钩,在内核运行时以initrd的形式加载到内核,以增加灵活性。 首先配置内核使用单独的initrd:在 Device Driver / Block device / 配置目录下,选择 RAM filesystem and RAMdisk ( init ramfs/initrd ) support 配置项;再到 General...

精通initramfs构建stepbystep(四)

精通initramfs构建stepbystep(四)

十一、自动生成/dev下的设备文件 上节用chroot方法试验busybox时,为了简单,是用“绑定”的方式把主机的/dev中的设备文件映射到image目录下的dev目录。在init ramfs上,这种方法显然不能使用。 生成系统的设备文件,现在通常都是用udev动态生成,而init ramfs为了做到通用,动态生成的要求是必须的。在busybox中有一个mdev命令,就是用来动态生成设备文件,填充到/dev目录的。 在系统启动时,用 mdev -s 命令可以根据内核的sysfs文件系统在/dev目录中...

精通initramfs构建stepbystep(三)

精通initramfs构建stepbystep(三)

七、什么是busybox busybox号称是嵌入式Linux中的瑞士军刀——小巧、功能齐全。它把许多常用的Linux命令都集成到一个单一的可执行程序中,只用这一个可执行程序(即busybox)加上Linux内核就可以构建一个基本的Linux系统。busybox程序非常小巧,包含全部命令可执行文件大小也只有750多K。busybox是完全模块化的,可以很容易地在编译时增加、删除其中包含的命令。 由于busybox的这些特点,它广泛应用于LiveCD、应急修复盘、安装盘等系统中。我们也是以它为基础,构建i...

精通initramfs构建stepbystep(二)

精通initramfs构建stepbystep(二)

四、什么是rootfs和ramfs 所有的2.6版本linux内核都有一个特殊的文件系统rootfs,是内核启动的初始始根文件系统,init ramfs的文件会复制到rootfs。如果把init ramfs比作种子,那么rootfs就是它生长的土壤。大部分linux系统正常运行后都会安装另外的文件系统,然后忽略rootfs。 rootfs是ramfs文件系统的一个特殊实例。ramfs是一种非常简单的文件系统,是基于内存的文件系统。ramfs文件系统没有容量大小的限制,它可以根据需要动态增加容量。 ram...

精通initramfs构建stepbystep(一)

精通initramfs构建stepbystep(一)

一、init ramfs是什么 在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件。当内核启动时,会从这个打包文件中导出文件到内核的rootfs文件系统,然后内核检查rootfs中是否包含有init文件,如果有则执行它,作为PID为1的第一个进程。这个init进程负责启动系统后续的工作,包括定位、挂载“真正的”根文件系统设备(如果有的话)。如果内核没有在rootfs中找到init文件,则内核会按以前版本的方式定位、挂载根分区,然后执行/sbin/init程序完成系统的后续初始化工作...

linux下磁盘lvm挂在显示容量问题

linux下磁盘lvm挂在显示容量问题

linux as 4 update 5 通过HBA卡挂载了一个30T磁盘柜,分别/sda1、/sda2、/sda3、/sda4、/sda5/,每个大小5.7T.除sda5 3.7t. 我把/sda2、/sda3、/sda4、/sda5制作了lvm后显示为20.64t(是正确的),然后在根目录下建lvm目录。 把/dev/lv00/vg00挂到/lvm中,用df -h 显示容量这lvm只有4.7T,是怎么回事? [root@oracle lvm]# lvdisplay /dev/sdc: read fai...

网站载入测试:Firefox3.5Beta4完胜IE8

网站载入测试:Firefox3.5Beta4完胜IE8

上月中旬,微软在一份文档中宣称,根据对全球25大网站(据comScore)载入速度的测试,IE8比Google Chrome 1.0、Firefox 3.0.5都要快,但根据第三方机构的测试,微软完全没有胜算,而且Firefox随着不断升级领先优势也越来越大。 BetaNews当时就利用浏览器载入时间计时器WebMonkey进行了重复测试,同样是打开25大网站,并加上BetaNews.com自己,结果当时最新的Firefox 3.0.7平均比IE8快13%,尚处于测试阶段的Firefox 3.1 Bet...