一、前言
对于一个极简化的linux系统而言,只需要三个部分就能组成,它们分别是一个linux内核、一个根文件系统和引导。以下是本文制作linux iso镜像所用到的系统和软件:
OS: ubuntu 20
软件: xorriso
二、制作linux内核
1、首先需要去官网选择一个需要的版本下载下来,官网下载地址:https://www.php.cn/link/293835c2cc75b585649498ee74b395f5
2、利用tar将其解压,然后进入其目录中,然后配置内核,常见的配置有以下几种:
a、make defconfig - 默认配置
b、make allyesconfig - 创建能选yes就选yes的配置
c、make allnoconfig - 创建能选no就选no的配置
d、make menuconfig - 基于ncurser的图形化界面配置
这里采用命令make defconfig使用默认的即可,如下图所示:
3、然后使用make bzImage
命令编译出内核即可,如下图所示:
编译好的内核文件在arch
文件夹相应的架构文件夹下面,如下图所示:
三、制作根文件系统
1、我们这里利用busybox来制作一个根文件系统,busybox可以简单理解为一个linux工具的集合。首先还是下载busybox,官网下载地址:https://www.php.cn/link/890ff058169b5a1d1a7f07d467f1f57b
2、编译busybox与编译内核步骤基本一致,将下载好的压缩包进行解压,然后进入文件夹中,使用make defconfig配置默认编译选项,这里需要注意的是,在生成的.config
配置文件中,需要设置CONFIG_STATIC=y
,如果没有,添加即可,如下图所示:
3、然后使用make busybox install
命令编译busybox,编译好后会在当前目录下面生产一个_install
文件夹,如下图所示:
4、然后创建一个rootfs
文件夹,并将_install
文件夹下面除linuxxrc
以外的所有文件及文件夹都拷贝到rootfs
文件夹下面,最后创建dev
等文件夹,最后在根目录下面创建init
文件即可,文件内容如下图所示:
5、最后利用命令find . | cpio -R root:root -H newc -o | gzip > ../rootfs.gz
将文件系统打包,至此,一个文件系统就创建完成了,如下图所示:
四、BIOS
1、这里我们使用syslinux
来创建bios
引导的一个linux iso镜像,syslinux
官方下载地址如下:https://www.php.cn/link/364c32263dd3f0df5095b65321f3cd79
2、将下载好的syslinux
解压,然后创建文件夹isobios
,将解压后的syslinux
文件夹下面的bios/core/isolinux.bin
、bios/com32/elflink/ldlinux/ldlinux.c32
复制到isobios
文件夹下面,如下图所示:
3、在isobios
文件夹下面创建配置文件isolinux.cfg
,文件内容如下所示:
4、最后,在isobios
文件夹下面使用命令xorriso -as mkisofs -o ../testbios.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./
生成iso镜像文件,如下图所示:
5、使用虚拟机vmware
创建一个虚拟机,如下图所示,便是我们创建的一个linux iso镜像跑起来的样子。
五、UEFI
1、uefi这里采用system-boot
和syslinux
配合来制作,首先,创建两个文件夹isouefi
和tmp
,其中,isouefi
用来挂载设备,tmp
文件夹用来临时存放文件以计算大小,然后在tmp
文件夹下面创建EFI/BOOT
和loader/entries
目录,接着,将解压后的systemboot
下面的uefi_boot/EFI/BOOT/BOOTx64.EFI
文件拷贝到tmp/EFI/BOOT
目录下面,如下图所示:
2、接着,在tmp/loader
目录下面,创建文件loader.conf
配置文件,第一行表示默认配置是entries
目录下那个文件,第二行设置默认超时时间;然后在entries
文件夹下面创建相应的配置文件,这里是mll-x86_64.conf
,文件内容和bios
的差不多,不在单独细说,最后再将前面准备好的内核和文件系统拷贝到tmp
目录下面,如下图所示:
3、此时就可以根据tmp
文件夹的总大小创建一个相同大小的img
文件了,这里的tmp
是11M
,为了稳妥起见,这里创建一个12M
的img
文件,命令为truncate -s 12M uefi.img
,然后使用losetup -f
命令寻找一个当前未使用的逻辑设备,然后使用losetup
命令将我们前面创建的img
文件虚拟成改逻辑设备,接着利用mkfs.vfat
将该设备格式化成vfat
系统,接着使用mount
命令将其挂载到isouefi
文件夹下面,最后将tmp
文件夹下面所有文件及其文件夹拷贝到isouefi
目录下面,如下图所示:
4、接着利用umount
命令取消挂载,这样我们就得到一个包含内核
、文件系统
等的img
文件,接着创建一个iso
文件夹,并且在该文件夹下面将创建一个boot
文件夹,然后将img
复制到iso/boot
下面,最后利用xorriso
工具生成iso
文件即可,如下图所示:
5、最后,新建一个虚拟机,引导选择uefi,启动即可,如下图所示:
六、相关链接
github链接:https://www.php.cn/link/e32c6c0d76c602ec48a1ec030982eb85
以上是如何从零开始制作一个linux iso镜像(图文教程)的详细内容。更多信息请关注PHP中文网其他相关文章!

Linux系统依靠防火墙来保护未经授权的网络访问。 这些软件障碍控制网络流量,允许基于预定义的规则来阻止数据包。 他们主要在网络层操作,他们管理

确定Linux系统是台式机还是笔记本电脑对于系统优化至关重要。本指南概述了简单的命令以识别您的系统类型。 hostnamectl命令:此命令提供了一种检查系统机箱的简洁方法

Linux服务器TCP/IP连接数限制调整指南 Linux系统常用于服务器和网络应用,管理员经常会遇到TCP/IP连接数达到上限的问题,导致用户连接错误。本文将指导您如何提升Linux系统中的最大TCP/IP连接数。 TCP/IP连接数理解 TCP/IP (传输控制协议/互联网协议)是互联网的基本通信协议。每个TCP连接都需要系统资源。当活动连接过多时,系统可能会拒绝新的连接或速度变慢。 通过增加允许的最大连接数,可以提高服务器性能并处理更多并发用户。 检查当前Linux连接数限制 在更改设置之

SVG(可扩展的矢量图形)文件是徽标和插图的理想选择,因为它们的可重复性而没有质量损失。 但是,PNG(便携式网络图形)格式通常可以更好地与网站和应用程序兼容。本指南d

Livecode:跨平台发展革命 LiveCode是一种编程语言,于1993年首次亮相,简化了每个人的应用程序开发。 它的高级,类似英语的语法和动态键入使得可以轻松地创建强大的应用程序

本指南提供了一个分步过程,用于通过Linux命令行重置故障USB设备。 使用这些命令简化了对无响应或断开USB驱动器的故障排除。 步骤1:识别您的USB设备 首先,我

在Linux上暂时设置静态IP地址对于网络故障排除或特定的会话配置是无价的。 本指南详细介绍了如何使用命令行工具来实现此目的,并指出更改并非跨重启

Linux以其强大的命令行工具集而闻名,这些工具允许用户高效地与系统交互。虽然许多Linux用户熟悉诸如ls、cd或grep之类的常用命令,但还有一些鲜为人知但极其有用的命令和快捷方式可以简化并提高生产力。 我们很高兴分享我们关于“鲜为人知的Linux命令”的最新五篇文章,其中包含50多个你可能不知道的命令。 您可能也喜欢: 11个鲜为人知的实用Linux命令——第一部分 10个鲜为人知的Linux命令——第二部分 10个鲜为人知的Linux命令——第三部分 10个鲜为人知的有效Linux命令


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

记事本++7.3.1
好用且免费的代码编辑器

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Atom编辑器mac版下载
最流行的的开源编辑器