制作自己的Linux_OS.doc_第1页
制作自己的Linux_OS.doc_第2页
制作自己的Linux_OS.doc_第3页
制作自己的Linux_OS.doc_第4页
制作自己的Linux_OS.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

花了几天时间做了个可以光盘启动的Linux系统,大小5.15M,功能包括Linux大多数基本命令一.系统介绍:文件系统用的是ram,速度很快,采用isoLinux光盘启动,可以方便升级kernel和更改root fs(增减Linux命令),实际上这个东西还可以做的更小,考虑到是iso所以不是很在乎空间,如果是嵌入式系统,可以考虑把root fs采用gzip -9压缩存贮.我测试了完全可以在1.44M以内解决问题. 制作方法:二.知识背景1.Linux启动首先,主板的BIOS会读取硬盘的主引导记录(MBR),MBR中存放的是一段很小的程序,他的功能是从硬盘读取操作系统核心文件并运行,因为这个小程序太小了,因此通常这个小程序不具备直接引导系统内核的能力,他先去引导另一个稍微大一点的小程序,再由这个大一点的小程序去引导系统内核(ps:这个稍微大一点的程序,就是我们平常熟知的lilo和grub,但是本系统采用的isoLinux+mkisofs). Linux系统内核被引导程序装入内核并运行后,Linux内核会检测系统中的各种硬件.并做好各种硬件的初始化工作,使他们在系统正式运行后能正常工作.之后内核做的最后一个工作是运行 /sbin下的init程序,init是英文单词initialization(初始化)的简称,init程序的工作是读取/etc/inittab文件中描述的指令,对系统的各种软硬件环境做最初化设定.最后运行getty等待用户输入用户名登录系统.所有的工作就这么简单,虽然Linux启动的时候有很多内容,看上去十分高深,但是都不过是对这个过程的扩充.明白了这个道理,你可以写一些脚本程序让他在系统启动的特定时间运行完成任务.事实上系统内核并不关心/sbin下的init是不是真的init,只要是放在/sbin下名叫init的可执行程序他都可以执行,在本系统中,我直接让系统进入/bin/bash,绕开了系统login登陆验证.2.一个操作系的构成引导程序+内核+文件系统(ps:不知道这样说确切不,但我是这么认为的)3.内核编译/docs/manuals/linux/RHL-9-Manual/custom-guide/ch-custom-kernel.html/linux/Linux%20Forum/linux/0399307373822/forum_topic其实我们这里没有这么复杂,只需要简单的几步就ok了下载内核源代码,解压到/usr/src/下面,作一个连接(ps:没搞懂为什么,manual上这么说的)cd /usr/srcln -s Linux-*-* Linux *表示你下载的内核版本号cd Linuxmake mrpropermake menuconfigmake depmeke cleanmake bzImage好了,我没有加入对modules的支持,生成的bzImage文件在usr/src/Linux/arch/i386/4.busybox1,busybox简介 busybox是一个集成了一百多个最常用Linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些Linux命令就好比是分力式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式Linux应用中,busybox有非常广的应用,另外,大多数Linux发行版的安装程序中都有busybox的身影,安装Linux的时候案ctrl+alt+F2就能得到一个控制台,而这个控制台中的所有命令都是指向busybox的链接. Busybox的小身材大作用的特性,给制作一张软盘的Linux带来了及大方便. 2,busybox的用法 可以这样用busybox #busybox ls ,他的功能就相当运行ls命令 最常用的用法是建立指向busybox的链接,不同的链接名完成不同的功能. #ln -s busybox ls #ln -s busybox rm #ln -s busybox mkdir然后分别运行这三个链接: #./ls #./rm #./mkdir就可以分别完成了ls rm 和mkdir命令的功能.虽然他们都指向同一个可执行程序busybox 但是只要链接名不同,完成的功能就不同,busybox就是这么的神奇. 目前版本是busybox1.0正式版. 3.下载/downloads/三.准备工作1.mkdir -p /mnt/myOS -作为产生我们新系统的目录2.mkdir -p /mnt/myOS/isoLinux -必需,参http:/sysL/iso.php3.安装mkisofs,可以直接下载rpm来安装,版本最新为宜 -rpm -ivh *.rpm4.编译内核,生成bzImage,cp bzImage /mnt/myOS/ -编译内核请参考,请注意一定加入RAM disk support 和initial RAM disk (initrd) support 的支持,要不然等下你的新系统肯定启动不了5.下载busybox -/downloads/四.编译busybox的配置程序和Linux内核菜单配置方式简直一模一样.熟悉用make menuconfig方式配置Linux内核的朋友很容易上手.#cp busybox-1.00.tar.gz /tmp/ada#cd /tmp/ada#tar xvfz busybox-1.00.tar.gz #cd busybox-1.00 #make menuconfig下面是需要编译进busybox的功能选项,其他的可以根据需要自选,但是同样不要太贪心. General Configuration应该选的选项 Show verbose applet usage messages Runtime SUID/SGID configuration via /etc/busybox.confBuild Options Build BusyBox as a static binary (no shared libs) 这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个Linux内核不能使他正常工作.Installation Options Dont use /usr 这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接.其他选项都是一些Linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了.配置好后退出并保存. make make install编译好后在busybox目录下生成子目录_install,里面的内容: drwxr-xr-x 2 root root 4096 11月 24 15:28 bin lrwxrwxrwx 1 root root 11 11月 24 15:28 Linuxrc - bin/busybox drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin 其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接.五.制作自己的root fs1.目录结构mkdir /mnt/myOS/rootfscd /mnt/myOS/rootfsmkdir etc usr var tmp proc home root dev 其中etc,proc和dev是一定要建的,bin和sbin不用建,因为busybox中已经有了. 其他的可以象征性的建几个就可以了.拷贝busybox #cp -R /tmp/ada/busybox-1.00/_install/* /mnt/myOS/rootfs/ 2.设备文件我是直接在redhat系统/dev目录里cp的,方法如下:#cp -R /dev/console ./ #cp -R /dev/null ./ #cp -R /dev/zero ./ 你认为需要的都cp过来3,建立etc目录下的配置文件 这个请参考我的/etc4.制作ramdisk映象文件cd /mnt/myOS/dd if=/dev/zero of=/dev/ram0 bs=1M count=4 -初始化4M内存空间mkfs.ext2 -m0 /dev/ram0 -格式化为ext2mkdir /mnt/rammount /dev/ram0 /mnt/ram -挂载到/mnt/ramcp -R rootfs/* /mnt/ram -把rootfs写入内存umount /mnt/ramdd if=/dev/ram0 of=/mnt/myOS/ramdisk.img -把内存中的内容以映象方式取出ok,这个ramdisk.img就是我们的rootfs六.整合1.kernelcp /usr/src/Linux/arch/i386/bzImage /mnt/myOS/2.rootfs已经在这个目录了,就是ramdisk.img3.isoLinuxcp isoLinux.bin isoLinux.cfg /mnt/myOS/isoLinux编辑isoLinux.cfg.写法和grub的差不多七.制作isocd /mnt/myOS目录里的东西如下: bzImage ramdisk

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论