如何从零开始制作一个linux iso镜像(图文教程)
<h2>一、前言</h2><p>    对于一个极简化的linux系统而言,只需要三个部分就能组成,它们分别是一个linux内核、一个根文件系统和引导。以下是本文制作linux iso镜像所用到的系统和软件:</p>
<p>    OS: ubuntu 20<br />
    软件: xorriso</p>
<h2>二、制作linux内核</h2>
<p>    1、首先需要去官网选择一个需要的版本下载下来,官网下载地址:<a rel="external nofollow" target="_blank" href="https://mirrors.edge.kernel.org/pub/linux/kernel/">https://mirrors.edge.kernel.org/pub/linux/kernel/</a></p>
<p>    2、利用tar将其解压,然后进入其目录中,然后配置内核,常见的配置有以下几种:<br />
      a、make defconfig - 默认配置<br />
      b、make allyesconfig - 创建能选yes就选yes的配置<br />
      c、make allnoconfig - 创建能选no就选no的配置<br />
      d、make menuconfig - 基于ncurser的图形化界面配置<br />
      这里采用命令make defconfig使用默认的即可,如下图所示:</p>
<p style="text-align: center"><img alt="1.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310115.png" /></p>
<p>    3、然后使用<code>make bzImage</code>命令编译出内核即可,如下图所示:</p>
<p style="text-align: center"><img alt="2.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310116.png" /></p>
<p>    编译好的内核文件在<code>arch</code>文件夹相应的架构文件夹下面,如下图所示:</p>
<p style="text-align: center"><img alt="3.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310117.png" /></p>
<h2>三、制作根文件系统</h2>
<p>    1、我们这里利用busybox来制作一个根文件系统,busybox可以简单理解为一个linux工具的集合。首先还是下载busybox,官网下载地址:<a rel="external nofollow" target="_blank" href="https://busybox.net/downloads/">https://busybox.net/downloads/</a></p>
<p>    2、编译busybox与编译内核步骤基本一致,将下载好的压缩包进行解压,然后进入文件夹中,使用make defconfig配置默认编译选项,这里需要注意的是,在生成的<code>.config</code>配置文件中,需要设置<code>CONFIG_STATIC=y</code>,如果没有,添加即可,如下图所示:</p>
<p style="text-align: center"><img alt="4.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310118.png" /></p>
<p style="text-align: center"><img alt="7.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310119.png" /></p>
<p>    3、然后使用<code>make busybox install</code>命令编译busybox,编译好后会在当前目录下面生产一个<code>_install</code>文件夹,如下图所示:<br />
</p>
<p style="text-align: center"><img alt="5.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310120.png" /><br />
</p>
<p style="text-align: center"><img alt="6.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310221.png" /></p>
<p>    4、然后创建一个<code>rootfs</code>文件夹,并将<code>_install</code>文件夹下面除<code>linuxxrc</code>以外的所有文件及文件夹都拷贝到<code>rootfs</code>文件夹下面,最后创建<code>dev</code>等文件夹,最后在根目录下面创建<code>init</code>文件即可,文件内容如下图所示:</p>
<p style="text-align: center"><img alt="8.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310222.png" /></p>
<p style="text-align: center"><img alt="9.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310223.png" /></p>
<p>    5、最后利用命令<code>find . | cpio -R root:root -H newc -o | gzip > ../rootfs.gz</code>将文件系统打包,至此,一个文件系统就创建完成了,如下图所示:</p>
<p style="text-align: center"><img alt="10.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310224.png" /></p>
<h2>四、BIOS</h2>
<p>    1、这里我们使用<code>syslinux</code>来创建<code>bios</code>引导的一个linux iso镜像,<code>syslinux</code>官方下载地址如下:<a rel="external nofollow" target="_blank" href="https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/">https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/</a></p>
<p>    2、将下载好的<code>syslinux</code>解压,然后创建文件夹<code>isobios</code>,将解压后的<code>syslinux</code>文件夹下面的<code>bios/core/isolinux.bin</code>、<code>bios/com32/elflink/ldlinux/ldlinux.c32</code>复制到<code>isobios</code>文件夹下面,如下图所示:</p>
<p style="text-align: center"><img alt="11.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310225.png" /></p>
<p>    3、在<code>isobios</code>文件夹下面创建配置文件<code>isolinux.cfg</code>,文件内容如下所示:</p>
<p style="text-align: center"><img alt="12.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310226.png" /></p>
<p>    4、最后,在<code>isobios</code>文件夹下面使用命令<code>xorriso -as mkisofs -o ../testbios.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./</code>生成iso镜像文件,如下图所示:</p>
<p style="text-align: center"><img alt="13.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310227.png" /></p>
<p>    5、使用虚拟机<code>vmware</code>创建一个虚拟机,如下图所示,便是我们创建的一个linux iso镜像跑起来的样子。</p>
<p style="text-align: center"><img alt="14.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310328.png" /></p>
<h2>五、UEFI</h2>
<p>    1、uefi这里采用<code>system-boot</code>和<code>syslinux</code>配合来制作,首先,创建两个文件夹<code>isouefi</code>和<code>tmp</code>,其中,<code>isouefi</code>用来挂载设备,<code>tmp</code>文件夹用来临时存放文件以计算大小,然后在<code>tmp</code>文件夹下面创建<code>EFI/BOOT</code>和<code>loader/entries</code>目录,接着,将解压后的<code>systemboot</code>下面的<code>uefi_boot/EFI/BOOT/BOOTx64.EFI</code>文件拷贝到<code>tmp/EFI/BOOT</code>目录下面,如下图所示:</p>
<p style="text-align: center"><img alt="15.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310329.png" /></p>
<p>    2、接着,在<code>tmp/loader</code>目录下面,创建文件<code>loader.conf</code>配置文件,第一行表示默认配置是<code>entries</code>目录下那个文件,第二行设置默认超时时间;然后在<code>entries</code>文件夹下面创建相应的配置文件,这里是<code>mll-x86_64.conf</code>,文件内容和<code>bios</code>的差不多,不在单独细说,最后再将前面准备好的内核和文件系统拷贝到<code>tmp</code>目录下面,如下图所示:</p>
<p style="text-align: center"><img alt="16.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310330.png" /></p>
<p style="text-align: center"><img alt="17.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310331.png" /></p>
<p style="text-align: center"><img alt="18.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310332.png" /></p>
<p>    3、此时就可以根据<code>tmp</code>文件夹的总大小创建一个相同大小的<code>img</code>文件了,这里的<code>tmp</code>是<code>11M</code>,为了稳妥起见,这里创建一个<code>12M</code>的<code>img</code>文件,命令为<code>truncate -s 12M uefi.img</code>,然后使用<code>losetup -f</code>命令寻找一个当前未使用的逻辑设备,然后使用<code>losetup</code>命令将我们前面创建的<code>img</code>文件虚拟成改逻辑设备,接着利用<code>mkfs.vfat</code>将该设备格式化成<code>vfat</code>系统,接着使用<code>mount</code>命令将其挂载到<code>isouefi</code>文件夹下面,最后将<code>tmp</code>文件夹下面所有文件及其文件夹拷贝到<code>isouefi</code>目录下面,如下图所示:</p>
<p style="text-align: center"><img alt="19.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310333.png" /></p>
<p style="text-align: center"><img alt="20.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310334.png" /></p>
<p>    4、接着利用<code>umount</code>命令取消挂载,这样我们就得到一个包含<code>内核</code>、<code>文件系统</code>等的<code>img</code>文件,接着创建一个<code>iso</code>文件夹,并且在该文件夹下面将创建一个<code>boot</code>文件夹,然后将<code>img</code>复制到<code>iso/boot</code>下面,最后利用<code>xorriso</code>工具生成<code>iso</code>文件即可,如下图所示:</p>
<p style="text-align: center"><img alt="21.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310335.png" /></p>
<p>    5、最后,新建一个虚拟机,引导选择uefi,启动即可,如下图所示:</p>
<p style="text-align: center"><img alt="22.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310336.png" /></p>
<p style="text-align: center"><img alt="23.png" src="https://img.jbzj.com/file_images/article/202111/2021111809310437.png" /></p>
<h2>六、相关链接</h2>
<p>    github链接:<a rel="external nofollow" target="_blank" href="https://github.com/windy-purple/make_linux_iso">https://github.com/windy-purple/make_linux_iso</a></p>
<p>到此这篇关于如何从零开始制作一个linux iso镜像(图文教程)的文章就介绍到这了,更多相关linux iso镜像内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章,希望大家以后多多支持琼殿技术社区!</p>
頁:
[1]