制作自己的Linux系统与启动光盘

1、step1 准备 isolinux.bin 和工作目录

在准备制作 ISO 的目录里添加一个子目录,比如 isolinux/ ,然后放入 isolinux.cfg 和一个对所有光盘都一样的 isolinux 提供的引导介质 isolinux.bin。isolinux.bin 可以这样得到,访问syslinux 的官方网站(如下),下载它所提供的syslinux-4.04.tar.bz2 文件,目前最新版为4.04。

http://www.syslinux.org/wiki/index.php/ISOLINUX#What_is_ISOLINUX.3F

当然还要放入相应的 kernel, initrd 等等,目录结构如下:

清单 1. CD_root 目录结构


|---isolinux

| |---isolinux.bin

| |---isolinux.cfg

|---kernel (OS 内核)

|---initrd (文件系统)

|---readme

Kernel为需要引导的操作系统内核,此处选择Linux内核,内核的获取可以通过编译适当的Linux内核版本得到,本文采用的是3.10.61版。内核可以根据自己的需要进行适当的裁剪,在此不累述。记住,在编译的时候一定要选择x86_64的体系结构,因为本文是基于x86_64体系结构镜像讲解的,如果您不知道怎么选择CPU体系结构,可以参考下面的写法:

# make ARCH=x86_64 menuconfig  //启动menuconfig配置菜单时,需提前安装ncurses

# make

编译完成后在arch/x86/boot中会生成内核镜像bzImage。将其拷贝到CD_root(制作iso的根目录)中,当然您也可以专门建立相关的文件夹来存放内核和文件系统,区别只是在配置isolinux.cfg时的路径问题(可参考下一小节)。

除了内核镜像外,还需要文件系统。本节采用busybox制作文件系统,并生成ramdisk镜像文件ramdisk.img。关于ramdisk文件的制作方法见章节:文件系统,其中有一小节专门讲解了如何制作根文件系统。

2.2 step2 配置 isolinux.cfg


prompt 1

timeout 100

default myBIOSiso

label myBIOSiso

kernel /bzImage

append initrd=/ramdisk.img load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=60000 rw root=/dev/ram

【 别外  append initrd=/ramdisk.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64       ###(CentOS\x207\x20x86_64为镜像的id,其中\x20代表空格。其定义在mkisofs命令加上-V “CentOS 7 x86_64”)】

配置 isolinux.cfg

这里只做了简单的配置。注意,这里的文件系统是ramdisk.img,经过笔者试验,发现使用压缩镜像ramdisk.img.gz时,会出现找不到该文件的错误,当笔者将压缩文件重命名为ramdisk.gz后,问题得以解决。所以,此处笔者推荐使用append initrd=/ramdisk.gz load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=60000 rw root=/dev/ram。这样做出来的引导盘会很小。笔者本次制作出来的iso镜像大小为5M,当然,如果需要,您还可以做得更小。

除此之外,利用isolinux还可以添加诸如菜单等内容。更多使用方法可以参考syslinux中的说明文档,同时笔者将在下一小节泛讲菜单的相关内容。

2.3 step3 制作 BIOS 平台可启动光盘


#mkisofs -o output.iso -b isolinux/isolinux.bin -c \

isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-tableCD_root

制作 BIOS 平台可启动光盘的命令

制作 iso 的时候要使用 -b 参数,用来指定 isolinux.bin 所在的路径,-c 参数的那个文件(boot.cat)是自动生成的,不用关心,其余参数都是固定的。这里的路径都是相对于光盘的根目录而言,和制作光盘时的工作目录没有关系。

完成后,会在当前目录(也可以指定)生成iso镜像光盘文件,文件名为output.iso。

接下来可以在虚拟机中验证生成的iso文件是否可以启动linux。首先安装VMware6.0,然后新建一个虚拟机,内存和硬盘都不必选得很大,要知道我们的内核是非常小的,选择256M的内存,硬盘1G(可以更小,因为这样的操作不需要硬盘,只要内存足够就可以了),完成后,将生成的iso加载到虚拟机的光驱中,启动虚拟机,成功会出现如下图的相似信息。

值得注意的是,我们的根文件系统存在于内存之中,所以您会看到在加载ramdisk1.img时需要一定的时间。在此,简单梳理一下整个启动过程。首先,BIOS完成第一阶段的引导,虚拟机从光驱启动,isolinux会加载内核镜像到虚拟机内存中,然后加载文件系统(ramdisk)到内存中,将执行权限交给Linux内核,内核启动然后加载文件系统。

至此,就可以利用虚拟机验证自己修改的内核和根文件了。当然,这只是一个极为简略和粗糙的启动光盘,用于学习Linux内核和文件系统是相当有益的,你不用担心这会损害您的电脑的目前的状态,因为所有的东西都在内存之中。

在后面的章节中,笔者会介绍更加丰富的启动功能,以及如何从硬盘启动我们制作的Linux系统。

时间: 2024-10-08 03:23:41

制作自己的Linux系统与启动光盘的相关文章

Linux系统快速启动方案

=========================        基本常识       ========================= Linux系统基本启动流程: 1. CPU从ROM(如果有的话)的0x0地址开始读取代码,执行loader: 2. Loader初始化ram,从rom中拷贝uboot或kernel的镜像到ram的指定地址并执行: 3. Uboot(如果有)拷贝kernel镜像和dtb文件到ram的指定地址,并运行kernel: 4. 设置bootargs会被覆盖,kerne

Linux系统开机启动原理

我理解的linux系统开机顺序如下,如有分歧,可一起探讨. Linux系统开机启动的顺序是: BIOS自检,检查硬件,选择引导介质如光盘or硬盘orU盘等等. 进入bootloader,它是写在硬盘最前面的部分,大小是512字节.由446字节的mbr和64字节的DPT和2字节的返回码组成. bootloader会去读取/boot/grub/grub.conf,然后根据配置文件寻找/boot分区下面的内核文件vmlinuz.....及内核辅助文件initrd......以及加载根分区 读取/etc

Linux系统的启动

Linux系统的启动:1.上电以后,BIOS(Basic Input Output System)加电自检,检测硬件设备,然后按照CMOS上的顺序依次搜索相关的可引导的硬件设备. 2.加载主引导程序:主引导程序主要是为了加载次引导程序到内存中运行. 3.加载次引导程序:加载次引导程序后,其在内存中跑起来,进而加载Linux的内核. 4.Linux内核映像:加载linux内核后,次引导程序便会依据/boot/grub.conf配置文件中所设置的信息,从/boot/所在的分区上读取linux内核映像

Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with

Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with 摘要 Linux系统下安装完MySQL,启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with... Linux系统下装完MySQL,然后重启动时报错: 解决方法:  查看cat /etc/h

Linux系统无法启动故障解决方案

Linux系统无法启动故障解决方案 2011-09-27 09:42 佚名 比特网 我要评论(0) 字号:T | T 不管你多么喜爱你的Linux系统机器,有时候你都必须恢复你的系统.是的,即使一台Linux系统机器也可能遭受系统崩溃:不管是由于视频配置错误.内核更新出错.或是由于init脚本配置错误,这种情况都是必然的. AD:2014WOT全球软件技术峰会北京站 课程视频发布 当你的心爱的linux系统出现故障的时候,你是如何来解决的呢?没有操作系统能够确保100%可靠.终有一天,即使Lin

Linux系统开机启动时的工作原理

Linux系统开机启动时的工作原理也是深入了解Linux系统核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了.在BIOS将系统的控制权交给硬盘第一个扇区之后,就开始由Linux来控制系统了. 启动第二步--读取MB

Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with

Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with 摘要 Linux系统下安装完MySQL,启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with... Linux系统下装完MySQL,然后重新启动动时报错: 解决方法:  查看cat /etc

腾讯云Linux系统中启动自己安装的tomcat

腾讯云Linux系统中启动自己安装的tomcat 首先通过工具查看一下安装的tomcat的位置 进入命令行之后输入以下指令: 此时,tomcat已经启动了.

详解linux系统的启动过程及系统初始化

一.linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检 -->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader)-->主引导设置加载其 BootLoader-->Kernel初始化-->initrd—>/etc/init进程加载/etc/inittab,其进程流 程图如下: 二.剖析详细启动过程 ⑴. POST开机自检:电脑主机打开电源的时候,随后会听到滴的一声,系统启动开始了开机