logo资料库

基于Linux源代码及Busybox源代码制作精简可启动内核镜像方法.doc

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
一、需要准备的东西
Linux内核源代码
Busybox源代码
Unetbootin工具
二、制作Linux内核镜像及内存虚拟盘根文件系统
Linux内核镜像文件bzImage的编译制作
基于Busybox的根文件系统虚拟盘initrd.gz的制作
三、利用unetbootin工具制作可启动U盘
unetbootin工具的获取与安装
unetbootin使用
四、制作可启动的光盘镜像与磁盘镜像
制作一个基于grub引导的ttylinux LiveCD
制作一个基于grub引导的ttylinux 磁盘镜像
五、基于Qemu模拟器的运行
1,基于如下命令运行刚才制作的ttylinux可启动光盘镜像
2,以下为启动界面
3,以下为基于Qemu模拟器的ttylinux运行界面
六、基于Bochs X86 PC模拟器的运行
1,基于如下命令运行刚才制作的ttylinux可启动光盘镜像
2,以下为在Bochs模拟器中的启动界面
3,以下为基于Bochs模拟器的ttylinux运行界面
基于 Linux 源代码及 Busybox 源代码制作精简可启动内核镜 像技术实验方法总结 熊海泉 一、需要准备的东西 ..........................................................................................................................1 Linux 内核源代码 ....................................................................................................................... 1 Busybox 源代码 ...........................................................................................................................1 Unetbootin 工具 ...........................................................................................................................2 二、制作 Linux 内核镜像及内存虚拟盘根文件系统......................................................................2 Linux 内核镜像文件 bzImage 的编译制作 ............................................................................... 2 基于 Busybox 的根文件系统虚拟盘 initrd.gz 的制作 ..............................................................3 三、利用 unetbootin 工具制作可启动 U 盘 ......................................................................................5 unetbootin 工具的获取与安装 ....................................................................................................5 unetbootin 使用 ............................................................................................................................5 四、制作可启动的光盘镜像与磁盘镜像 ..........................................................................................6 制作一个基于 grub 引导的 ttylinux LiveCD.............................................................................6 制作一个基于 grub 引导的 ttylinux 磁盘镜像.........................................................................7 五、基于 Qemu 模拟器的运行 ..........................................................................................................8 1,基于如下命令运行刚才制作的 ttylinux 可启动光盘镜像.................................................8 2,以下为启动界面 ....................................................................................................................8 3,以下为基于 Qemu 模拟器的 ttylinux 运行界面 ................................................................. 9 六、基于 Bochs X86 PC 模拟器的运行 ............................................................................................9 1,基于如下命令运行刚才制作的 ttylinux 可启动光盘镜像.................................................9 2,以下为在 Bochs 模拟器中的启动界面..............................................................................10 3,以下为基于 Bochs 模拟器的 ttylinux 运行界面 ...............................................................10 一、需要准备的东西 Linux 内核源代码 下载地址 http://www.kernel.org/pub/linux/kernel/v2.6/ 这里下载的是 linux-2.6.36.2.tar.bz Busybox 源代码 下载地址 http://www.busybox.net/
这里下载的是 busybox-1.18.0.tar.bz2 Unetbootin 工具 下载地址 http://unetbootin.sourceforge.net/ 这里可以在 Fedora 13 中直接用下面的命令行安装: #yum install unetbootin 二、制作 Linux 内核镜像及内存虚拟盘根文 件系统 Linux 内核镜像文件 bzImage 的编译制作 1、bzImage 的制作 将下载下来的内核源代码压缩包拷贝到/study/目录下,然后进入到这个目录将 其解压,命令如下: #tar jxvf linux-2.6.36.2.tar.bz2 然后创建一个目录,用来保存编译内核产生的目标文件 #mkdir linux-2.6.36.2-obj linux-2.6.36.2-obj 现在是一个空目录,在编译内核时会将目标文件输出保存到 这个目录下。 然后我们开始编译 linux 内核编译配置,输入如下所示的命令: #cd /study/linux-2.6.36.2(进入到内核源码树目录) #make O=/study/linux-2.6.36.2-obj menuconfig (配置内核) 这里首先将宿主机的/boot 目录下的 config-2.6.33.3-85.fc13.x86_64 这个 配置文件拷贝到/study/linux-2.6.36.2-obj/.config,作为下面内核编译配置的 基础。 #cp /boot/config-2.6.33.3-85.fc13.x86_64 /study/linux-2.6.36.2-obj/.config 配置内核时,里面的选项有很多,如果不确定的话就将所有选项都编译进内 核,当然最好能针对性的配置内核,这样产生出的内核镜像不至于太大。还有一
点就是配置时一定要将选定的选项编译进内核,而不要编译成模块,也就是说在 前面带有 M 选项时,要么直接静态编译进内核,要么去掉。同时,为了支持 initrd 内存盘文件系统,有两个选项是必须的。 一个是 General Setup –> Initial RAM filesystem and RAM disk support 另一个是 Device Drivers –> Block Devices –> RAM block device support 这个选项的子选项保持默认就可以了,如下图所示: 然后退出配置界面,在退出时会提示你是否保存刚才的配置,选择 yes 就可 以了(因为我们在配置时指明了 O=/study/linux-2.6.36.2-obj 目录,所以配置 文件会保存到这个目录下,文件名为.config) 然后在 linux-2.6.36.2 目录下执行 #make mrproper 接下来我们开始编译内核: #make O=/study/linux-2.6.36.2-obj –j 16 (生成内核镜像,采用多线程编译,4 核八线 程故开启-j 16 选项,加快编译速度) 通常,我们编译内核是为了更新内核,但这里我们只是为了编译出一个内核 镜像,所以就不调用 make install 命令来安装内核了。 好!内核编译完成,我们将编译好的内核镜像拷贝到主目录下,以供后面使 用。 # cp /study/linux-2.6.36.2-obj/arch/x86/boot/bzImage /study/bootdisk (拷贝到此目 录下将来由 unetbootin 制作启动盘) 基于 Busybox 的根文件系统虚拟盘 initrd.gz 的制作 接下来我们开始编译 busybox。(我的 busybox-1.18.0.tar.bz2 存放到了/study 目录下) #tar jxvf busybox-1.18.0.tar.bz2 (解压 busybox 压缩包) #cd busybox-1.18.0 (进入到解压后的 busybox 源码目录) #make menuconfig (配置 busybox)
注意配置时,一定要选择静态链接选项,该选项位于: Busybox Settings –> Build Options –> Build Busybox as a static binary #yum install libselinux-static libsepol-static glibc-static(具体根据系统可能还需 要其它的包,这是我的系统中需要安装的几个包,是链接 busybox 所需要的) 接下来,我们安装 busybox #make install (busybox 默认安装到了其源码树目录的名字为_install 的目录中) #cd _install (进入安装了 busybox 的目录) 当我们进入了 busybox 后发现了熟悉的 linux 目录结构,但只有这些是不够的还 需要手工添加一些基本的配置文件。 这时,我们处在/root/busybox-1.18.0/_install 目录下。 好了,开始我们的配置 #mkdir proc sys etc dev (创建四个空目录,linux 内核需要) #cd dev #mknod console c 5 1 (创建一个控制台字符设备文件) #mknod null c 1 3 (创建一个 0 设备文件) #cd .. #cd etc # vim fstab (输入如下图内容) proc /proc proc defaults sysfs /sys sysfs defaults 0 0 0 0 #mkdir init.d # vim init.d/rcS (输入如下内容) #!/bin/sh Mount -a #chmod +x init.d/rcS (给 rcS 文件加上可执行权限) #vim inittab (输入如下内容) ::sysinit:/etc/init.d/rcS console::respawn:-/bin/sh ::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount –a -r #cd .. #pwd (打印当前目录) /study/busybox-1.18.0/_install 此时表明我们处在 busybox 安装文件的根目录下 #rm linuxrc (删除 linuxrc 链接文件) 然后新创建一个指向 busybox 文件的链接文件,如下图所示: #ln –sv bin/busybox init ‘init’->‘bin/busybox’ 我们输入如下图所示命令来创建 initrd 镜像. #find .| cpio –quiet –H newc –o |gzip -9 –n >/study/bootdisk/initrd.gz 至此就得到了两个镜像文件: bzImage : linux 内核镜像文件 initrd.gz : 内存盘根文件系统镜像文件 三、利用 unetbootin 工具制作可启动 U 盘 unetbootin 工具的获取与安装 unetbootin 使用 通过下面的命令打开 unetbootin,一定要加-showcustom=y 选项,否则不会 出现自定义那个选项 #unetboot -showcustom=y
在自定义里面选择内核为刚才我们制作的 bzImage,initrd 为刚才制作的 initrd.gz。我这里是把它们安装在了 U 盘上,这样方便携带。 然后确定,就会把我们刚才的东西装在 U 盘上,最后会出现一个重启的画面, 你就可以重新启动,把启动项改为从 U 盘启动,就可以进入自己制作的 linux 了。 四、制作可启动的光盘镜像与磁盘镜像 制作一个基于 grub 引导的 ttylinux LiveCD 1、创建 livecd 目录作为制作 LiveCD 的根的目录,并在其中创建 grub 所需 的目录 # mkdir -pv /study/livecd/{ttylinux,boot/grub} 2、复制 grub 可引导的光盘所需的引导程序 # cp -rv /usr/share/grub/x86_64-redhat/* /study/livecd/boot/grub
3、将编译制作好的内核镜像 bzImage 以及内存虚拟盘根文件系统 initrd.gz 复制到/study/live/ttylinux 目录下 4、为 grub 建立配置文件 # vim /study/livecd/boot/grub/grub.conf 添加如下内容: default timeout 0 10 title ttylinux for Bochs & Qemu (Made by Xiong Haiquan) root (cd) kernel /ttylinux/bzImage load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=8192 ro root=/dev/ram0 initrd /ttylinux/initrd.gz 5、在/study 目录下执行如下命令,创建 livecd 镜像: # mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o ttylinux.iso livecd 好了,到此为止一个 grub 引导的 ttylinux.iso 光盘镜像,可以在 Bochs 和 Qemu 中运行启动。 制作一个基于 grub 引导的 ttylinux 磁盘镜像
五、基于 Qemu 模拟器的运行 1,基于如下命令运行刚才制作的 ttylinux 可启动光盘镜像 ../qemu-0.13.0/x86_64-softmmu/qemu-system-x86_64 –cdrom ttylinux.iso –boot d 2,以下为启动界面
分享到:
收藏