« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9694679 建立时间:2004年12月20日 |

| |
[linux kernel]CF卡上作linux  原创空间, 文章收藏
邢红瑞 发表于 2009/10/26 18:23:05 |
借到一块CF卡,准备装linux,发现是vfat格式,只好找PQmagic,格式化为ext2或ext3。然后,把usb接到linux 设备上,根目录建立boot文件夹,下面建立grub文件夹,拷贝文件e2fs_stage1_5 ,stage1,stage2。然后运行grub --no-curses --no-floppy出现 root (hd1,0) (hd1 - 第2个硬盘,从0开始编号;后面的0表示第一个分区;正常情况下会显示分区的信息)setup (hd1) quit然后copy grub.conf menu.lst到/boot/grub,拷贝 initrd-2.6.9-67.EL.img vmlinuz-2.6.9-67.EL和System.map-2.6.9-67.EL到/boot下面。注意grub的配置文件是menu.lst而不是grub.conf。menu.lst 内容default=0timeout=5
title Red Hat Enterprise Linux AS (2.6.9-67.EL) root (hd0,0) kernel /boot/vmlinuz-2.6.9-67.EL ro root=LABEL=/ rhgb quiet initrd /boot/initrd-2.6.9-67.EL.img注意: 1).外部存储器若只有Flash卡(去掉硬盘和光驱),在BIOS中设置第一启动设备值为:HDD-0;2).外部存储器若包含硬盘和Flash卡(去掉光驱),在BIOS中设置第一启动设备值为:HDD-1,即硬盘会占用HDD-0;3).grub将CF卡编号为hd0, 将硬盘编号为hd1, 这与BIOS的识别相反;4).而进入Linux系统后,CF卡设备名为/dev/hdc, 而IDE硬盘设备名为/dev/hda;
其中主要是initrd文件
initrd 是一个 ram disk 的 image. 一般是压缩过的.它存在的主要目的是在内核启动时加载它,安装其中的驱动.总的来说分这几步a.内核启动时加载 initrd img, mount 为 / b.依 /linuxrc 的指令执行, 一般有扫描系统硬件,从 当前文件系统中找到驱动安装之.c.挂载系统中真正的 /
细说就是:开机 bios 代电自检, 依 bios 指定的启动盘(如 hd1), 找到 头 416 字节引导程序,执行之(顺便说如果是lilo引导linux的话, 在#lilo 时就写入了这416字节,但仅这416字节是不够用来引导 linux 的,因此叫它 stage1 还有一个 stage2 就是我们看到的选系统的 lilo 菜单部分), 然后出现 选系统的菜单 选了 linux 后, lilo 依 liloconf 中指定的位置找到 内核 启动之,之后 initrd 内亮登场:1.内核依 指定的 initrd 文件加载它, 解压之到 /etc/ram0 [内存] 中(一般initrd 采用 bz bz2 算法,内核是知道如何处理的)2. mount ram0 作为 / 文件系统(可能是内核支持的ext2),这样做的目的是为了读取 initrd 中的内容.3.initrd 文件系统一般有一个 /linuxrc 的文件,一般是一个 sh 脚本, kernel 执行之4. 扫描系统,发现新硬件,在 initrd 文件系统中找到相应驱动安装之.5. 加载真正的 / 文件系统, 而将原有的 / 系统 (initrd 解压后对应的) 如下处理:a.如果真正的 / 文件系统下有 /initrd 这个目录,则由原来的/ mount 到此处b.没有则umount 掉(此时如果有进程还在用initrd 中的文件,会报错)6.找到 /etc/init 执行之,依 /etc/inittab 初始化系统 到此initrd 使令结束
inintrd 单独拿出来压缩成一个文件和内核放一起,而不是真正文件系统中的一个 目录,initrd能做的事情很多,initrd就是一个微型的linux系统,就象前面说的,它可以解决驱动的问题,经过了grub引导内核,再未执行init进程前就开始读取initrd所以可以在initrd中加载系统所需要的特殊驱动。以供init继续引导系统另外在liveCD中也是非常重要的,负责检查出将光盘挂载哪里,进行压缩文件系统的解压初始化,加载特殊模块,然后通过pivot_root chroot 将系统挂载到正常的根分区,开始init引导。
其实他就是一个简单的gz文件# mkdir temp ; cd temp# cp /boot/initrd-2.6.14.2.img initrd-2.6.14.2.img.gz# gunzip initrd-2.6.14.2.img.gz# cpio -i --make-directories < initrd-2.6.14.2.img
结果会生成一个很小的根文件系统,如清单 3 所示。在 ./bin 目录中有一组很少但却非常必要的应用程序,包括 nash(即 not a shell,是一个脚本解释器)、insmod(用来加载内核模块)和 lvm(逻辑卷管理工具)。
默认的 Linux initrd 目录结构 # ls -la#drwxr-xr-x 10 root root 4096 May 7 02:48 .drwxr-x--- 15 root root 4096 May 7 00:54 ..drwxr-xr-x 2 root root 4096 May 7 02:48 bindrwxr-xr-x 2 root root 4096 May 7 02:48 devdrwxr-xr-x 4 root root 4096 May 7 02:48 etc-rwxr-xr-x 1 root root 812 May 7 02:48 init-rw-r--r-- 1 root root 1723392 May 7 02:45 initrd-2.6.14.2.imgdrwxr-xr-x 2 root root 4096 May 7 02:48 libdrwxr-xr-x 2 root root 4096 May 7 02:48 loopfsdrwxr-xr-x 2 root root 4096 May 7 02:48 proclrwxrwxrwx 1 root root 3 May 7 02:48 sbin -> bindrwxr-xr-x 2 root root 4096 May 7 02:48 sysdrwxr-xr-x 2 root root 4096 May 7 02:48 sysroot#
|
|
回复:CF卡上作linux 原创空间, 文章收藏
````````(游客)发表评论于2011/12/14 17:55:11 |
以下引用chris在2009-11-1 19:34:52的评论:白痴的问一下,什么是CF卡。不要吐血啊,大哥!google^查查 |
|
» 1 »
|