知识大全 制作基于软盘的Linux系统

Posted

篇首语:科学是为了那些勤奋好学的人,诗歌是为了那些知识渊博的人本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 制作基于软盘的Linux系统相关的知识,希望对你有一定的参考价值。

制作基于软盘的Linux系统  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  作者 张宏伟 欧阳平平   嵌入式Linux由一个几百KB的kernel(内核)和一些根据需要进行定制的系统模块组 成 由于Linux是开放源代码的操作系统 因此 其在嵌入式领域有其不可替代的成 本和高度灵活性等优势       将Linux系统裁减到就像DOS一样只要一张软盘就能启动 是制作嵌入式Linux的基 础 网络上有许多实现方法的介绍 但是在实践过程中都或多或少存在着一些问题 或不方便之处 我们结合自己在这方面的实践经验 详细介绍基于软盘的Linux系统 制作过程     三个基本元素一个嵌入式Linux系统只需要下面三个基本元素 引导程序 Linux微 内核(由内存管理 进程管理和事务处理构成)和初始化进程 如果要让它有更多 的功能且保持小型化 还可以加上文件系统 TCP/IP网络支持 GUI(图形用户界面) 和设计精简的应用程序 并将其放在ROM RAM FLASH或Disk On Chip中启动 由于 嵌入式Linux操作系统的高度灵活性 开发者可以很容易地对它进行定制或作适当开 发 来满足实际应用需要     将Linux 的系统裁减到只要一张软盘就能启动 不但是制作嵌入式Linux的基础 而 且自己也有广泛的应用前景 这些应用包括简单路由器管理 三层交换机管 理 floppy boot防火墙管理等 国外有专门的组织致力于这方面的工作 如 LOAF(Linux on a floopy)等组织     选择内核创建一个启动盘首先必须创建系统内核 由于软盘容量有限 因此常采用 对内核进行手工配置 去掉不必要的模块的方法来裁减内核     要想裁减内核体积 创建它时就得把不必要的功能去掉 如去掉对网络的支持和对 不必要设备的支持 但是一定要记住保留内核对RAMDISK和ext 的支持 否则启动盘 将不能工作 其过程如下      )以root超级用户登录 进入目录/usr/src/linux      )执行#make menuconfig来对内核模块进行配置(也可以在X Window中运行make xconfig)      )依次执行#make dep 和#make bzImage (如果内核不大则执行#make zImage) 执 行该命令后 将在/usr/src/linux/arch/i /boot目录下生成内核文件bzImage(或 zImage) 若配置中加入了模块的支持(选项为M) 还需要执行#make modules和 #make modules_install      )用命令#cp usr/src/linux/arch/i / boot/bzImage /boot拷贝新内核到/boot 目录 修改文件/etc/nf 加入     image = /boot/bzImagelabel = newroot =/dev/hdxx(你自己的启动硬盘分 区)read only执行命令#lilo载入新内核 #reboot重启系统 在出现 lilo: 时键 入new 若系统正常引导 则执行下一步 若不行则用老内核引导后 到步骤 )重 新配置编译内核      )插入软盘执行    #dd bs= k if=/usr/src/linux/arch/i / boot/bzImage of=/dev/fd 这样将内核 拷贝到软盘上      )用命令#ls s 将在/usr/src/linux/ arch/i /boot/bzImage 得到内核的大小 (假定为 ) 将这个大小记录下来以备后用     这样就制作了包含裁减内核的可供启动的Linux启动软盘 但是由于没有root文件系 统 使用这张软盘启动系统后 系统会显示 VFS: cannot open root device x:x 和 kernel panic: VFS: unalbe to boot root fs on x:x 的错误     root文件系统一个root文件系统必须包括支持完整Linux系统的全部东西 因此 它 至少应包括 基本文件系统结构 至少含有目录/dev /proc /bin /etc / lib /usr /tmp 最基本的应用程序 如sh ls cp mv等 最低限度的配置文 件 如rc inittab fstab等 设备 /dev/hd* /dev/ tty* /dev/fd 基本程 序运行所需的函数库     由于以上所需文件远超过 M 因此我们通常的做法是在准备好内容后将其压缩到 软盘中 当用软盘启动时 再把文件解压到内存中 形成一个虚拟盘(RAMDISK) 通过RAMDISK控制系统启动 如果你使用LILO控制启动 先检查一下LILO的配置文件 /etc/nf中定义的RAMDISK的大小     RAMDISK_SIZE = nnn创建root文件系统回到根目录或用户的缺省目录 用#mkdir flop建立工作目录flop 在这个目录下用mkdir建立以下一些目录 /dev 设备 / proc proc 文件系统所需目录 /etc 系统配置文件 /sbin 重要的系统程 序 /bin 基本应用程序 /lib 共享函数库 /mnt 装载其他磁盘节点 /usr 附加应用程序     其中/proc /mnt和/usr在此情况下都是空的 只需要用mkdir创建它们即可 其余 的目录应根据需要分别创建 下面对它们一个一个地详细叙述     /dev 这个目录中含有系统不可缺少的设备文件 你可以把现有系统中/dev的文件 拷贝过来 然后删除不必要的文件 不过一定要保留 console kmem mem null ram tty*等文件 其余的都可以根据需要删除 / etc 这个目录中含有一些必不可少的系统配置文件 一般可以包含rc d/* (系统启 动脚本) fstab(列出要登录的文件系统) inittab(包含启动过程参数) passwd (用户名和目录) group(用户组) shadow(用户加密密码) 如果不使用init作为登 录进程 而将init链接到/bin/bash 则/etc目录下可以不含有任何文件 /bin和/ sbin 该目录中包含有必不可少的应用程序 如 ls mv cat cp getty(mingettty) 也可以根据自己的需要选择 不过一定要记 住包括以下程序 init getty login mount bash /lib: 该目录中包含有你的 启动盘启动过程中所需要的共享函数库 在/lib目录下还必须有函数库装载器 这 个装载器或是ld so (对 a out 库) 或是 ld linux so (对 ELF 库) 模块如果有 一个模块化的内核 你还得必须考虑需要加载的模块 它们都位于/lib/modules 你可以把不是很重要的模块放到别的盘上 当系统启动后再加载 这样会节省启动 盘的空间     打包 )建立loop设备的临时挂接点和一个大小为 兆(大小可以调节)的临时文 件 并将其清零     #mkdir /mnt/loop >/dev/null#dd if=/dev/zero of=/tmp/loop_tmp bs= k count= >/dev/null )将loop设备与临时文件联系起来    #losetup /dev/loop /tmp/loop_tmp )Linux内核识别两种可以直接拷贝到 RAMDISK的文件系统 它们是minix 和ext ext 性能更好     #mke fs m /dev/loop >/dev/null#mke fs将会自动判断设备容量的大小并相 应地配置自身 m 参数防止它给root保留空间 这样会腾出更多的有用空间      )接着把虚拟盘挂在节点/mnt上     #mount /dev/loop /mnt/loop t ext )将制作好的root文件系统拷贝到所挂的 节点上 卸下挂接点 删除建立的挂接点 再取消loop设备与临时挂接点的联系     #cp a /tree/* /mnt/loop#umount /mnt/loop#rmdir /mnt/loop >/dev/ null#losetup d /dev/loop )压缩文件系统后 就拥有了一个压缩的root文件系 统 删除建立的临时文件     #dd if=/tmp/loop_tmp | gzip > rootfs gz#rm f /tmp/loop_tmp )检查压缩 后的root文件系统的大小 如果大了 还得去掉一些东西     #ls s /zImage|cut f d整合有了root文件系统和内核之后 最后的工作就是 把它们整合在一起     先检查总文件的大小 包括已经制作的内核和打包的root文件系统 如果超出 M 就得考虑重新创建 root文件系统所需的所有文件都准备就绪 你就可以运 行它了 运行结果应该没有错误 否则就应该仔细检查一下     真正的嵌入式Linux系统到这里基于软盘的Linux盘已经做好了 剩下的工作就是测 试这张盘的正确性 如果有问题还得从头再来 现在许多Linux的发行套件中都有厂 家做好的启动盘 它们的制做原理和以上介绍的大同小异 但是它们常常使用许多 不同的技巧 因为它们要面对更多的硬件和各种可能发生的情况     真正的基于IA应用的嵌入式Linux还必须加入GUI(图形用户界面)和设计精简的应用 程序 如网络浏览器等 GUI方面开放源代码的 国外有Microwindows(可访问 ) 国内有miniGUI(可访问) 它们的源代码 都可以在网上找到 浏览器方面用得较广的是ViewML() 它也是开 放源代码的 结合以上一些工具 再加上对硬件驱动程序的开发 就可以形成一套 嵌入式的Linux操作系统    cha138/Article/program/Oracle/201311/18410

相关参考

知识大全 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(七)

基于Linux和MiniGUI的嵌入式系统软件开发指南(七)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(六)

基于Linux和MiniGUI的嵌入式系统软件开发指南(六)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(八)

基于Linux和MiniGUI的嵌入式系统软件开发指南(八)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 一张软盘上的Linux或小Linux的文件组成

一张软盘上的Linux或小Linux的文件组成  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一

知识大全 向基于Linux的OracleRAC10g集群添加新节点

向基于Linux的OracleRAC10g集群添加新节点  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 自己动手写操作系统(二)

    上一期我讲述了如何在软盘的启动扇区写一些代码然后再从软盘启动的过程制作好一个启动扇区在切换到保护模式之前我们还应该知道如何使用BIOS中断BIOS中断是一些由BIOS提供的为了使操作系统的创建

知识大全 用Java制作网络文件下载系统

用Java制作网络文件下载系统  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于Linux操作

知识大全 自己动手写操作系统(三)

    在上两期中(自己动手写操作系统)我向大家讲述了如何使用Linux提供的开发工具在软盘的启动扇区写一些代码以及如何调用BIOS的问题现在这个操作系统已经越来越接近当年LinusTorvalds的

知识大全 如何制作Red Hat Linux急救盘组

如何制作RedHatLinux急救盘组  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用急救盘

知识大全 linux下的应用开发起步--简化蚂蚁制作(三)

   C前面看了一大段是不是有点云里雾里的啊?是有点罗嗦但是俗话说万事总是开头难OK现在总算可以写主程序文件了      下面就是antc文件    #includeanth  #includesig