本站首页    管理页面    写新日志    退出


«April 2019»
123456
78910111213
14151617181920
21222324252627
282930


公告

戒除浮躁,读好书,交益友


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:邢红瑞的blog
日志总数:523
评论数量:1142
留言数量:0
访问次数:9244109
建立时间: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#  


阅读全文(8612) | 回复(3) | 编辑 | 精华
 


回复:CF卡上作linux
原创空间,  文章收藏

````````(游客)发表评论于2011-12-14 17:55:11

以下引用chris在2009-11-1 19:34:52的评论:白痴的问一下,什么是CF卡。不要吐血啊,大哥!google^查查


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:CF卡上作linux
原创空间,  文章收藏

Tintin发表评论于2009-11-1 19:34:52

白痴的问一下,什么是CF卡。不要吐血啊,大哥!

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:CF卡上作linux
原创空间,  文章收藏

真不准发表评论于2009-10-28 23:03:33

不错,收藏一下,说不定会用到

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.046 second(s), page refreshed 144255535 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号