翼度科技»论坛 云主机 LINUX 查看内容

如何从零开始制作一个linux iso镜像(图文教程)

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
一、前言

    对于一个极简化的linux系统而言,只需要三个部分就能组成,它们分别是一个linux内核、一个根文件系统和引导。以下是本文制作linux iso镜像所用到的系统和软件:
    OS: ubuntu 20
    软件: xorriso
二、制作linux内核

    1、首先需要去官网选择一个需要的版本下载下来,官网下载地址:https://mirrors.edge.kernel.org/pub/linux/kernel/
    2、利用tar将其解压,然后进入其目录中,然后配置内核,常见的配置有以下几种:
      a、make defconfig - 默认配置
      b、make allyesconfig - 创建能选yes就选yes的配置
      c、make allnoconfig - 创建能选no就选no的配置
      d、make menuconfig - 基于ncurser的图形化界面配置
      这里采用命令make defconfig使用默认的即可,如下图所示:

    3、然后使用
  1. make bzImage
复制代码
命令编译出内核即可,如下图所示:

    编译好的内核文件在
  1. arch
复制代码
文件夹相应的架构文件夹下面,如下图所示:

三、制作根文件系统

    1、我们这里利用busybox来制作一个根文件系统,busybox可以简单理解为一个linux工具的集合。首先还是下载busybox,官网下载地址:https://busybox.net/downloads/
    2、编译busybox与编译内核步骤基本一致,将下载好的压缩包进行解压,然后进入文件夹中,使用make defconfig配置默认编译选项,这里需要注意的是,在生成的
  1. .config
复制代码
配置文件中,需要设置
  1. CONFIG_STATIC=y
复制代码
,如果没有,添加即可,如下图所示:


    3、然后使用
  1. make busybox install
复制代码
命令编译busybox,编译好后会在当前目录下面生产一个
  1. _install
复制代码
文件夹,如下图所示:




    4、然后创建一个
  1. rootfs
复制代码
文件夹,并将
  1. _install
复制代码
文件夹下面除
  1. linuxxrc
复制代码
以外的所有文件及文件夹都拷贝到
  1. rootfs
复制代码
文件夹下面,最后创建
  1. dev
复制代码
等文件夹,最后在根目录下面创建
  1. init
复制代码
文件即可,文件内容如下图所示:


    5、最后利用命令
  1. find . | cpio -R root:root -H newc -o | gzip > ../rootfs.gz
复制代码
将文件系统打包,至此,一个文件系统就创建完成了,如下图所示:

四、BIOS

    1、这里我们使用
  1. syslinux
复制代码
来创建
  1. bios
复制代码
引导的一个linux iso镜像,
  1. syslinux
复制代码
官方下载地址如下:https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/
    2、将下载好的
  1. syslinux
复制代码
解压,然后创建文件夹
  1. isobios
复制代码
,将解压后的
  1. syslinux
复制代码
文件夹下面的
  1. bios/core/isolinux.bin
复制代码
  1. bios/com32/elflink/ldlinux/ldlinux.c32
复制代码
复制到
  1. isobios
复制代码
文件夹下面,如下图所示:

    3、在
  1. isobios
复制代码
文件夹下面创建配置文件
  1. isolinux.cfg
复制代码
,文件内容如下所示:

    4、最后,在
  1. isobios
复制代码
文件夹下面使用命令
  1. xorriso -as mkisofs -o ../testbios.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./
复制代码
生成iso镜像文件,如下图所示:

    5、使用虚拟机
  1. vmware
复制代码
创建一个虚拟机,如下图所示,便是我们创建的一个linux iso镜像跑起来的样子。

五、UEFI

    1、uefi这里采用
  1. system-boot
复制代码
  1. syslinux
复制代码
配合来制作,首先,创建两个文件夹
  1. isouefi
复制代码
  1. tmp
复制代码
,其中,
  1. isouefi
复制代码
用来挂载设备,
  1. tmp
复制代码
文件夹用来临时存放文件以计算大小,然后在
  1. tmp
复制代码
文件夹下面创建
  1. EFI/BOOT
复制代码
  1. loader/entries
复制代码
目录,接着,将解压后的
  1. systemboot
复制代码
下面的
  1. uefi_boot/EFI/BOOT/BOOTx64.EFI
复制代码
文件拷贝到
  1. tmp/EFI/BOOT
复制代码
目录下面,如下图所示:

    2、接着,在
  1. tmp/loader
复制代码
目录下面,创建文件
  1. loader.conf
复制代码
配置文件,第一行表示默认配置是
  1. entries
复制代码
目录下那个文件,第二行设置默认超时时间;然后在
  1. entries
复制代码
文件夹下面创建相应的配置文件,这里是
  1. mll-x86_64.conf
复制代码
,文件内容和
  1. bios
复制代码
的差不多,不在单独细说,最后再将前面准备好的内核和文件系统拷贝到
  1. tmp
复制代码
目录下面,如下图所示:



    3、此时就可以根据
  1. tmp
复制代码
文件夹的总大小创建一个相同大小的
  1. img
复制代码
文件了,这里的
  1. tmp
复制代码
  1. 11M
复制代码
,为了稳妥起见,这里创建一个
  1. 12M
复制代码
  1. img
复制代码
文件,命令为
  1. truncate -s 12M uefi.img
复制代码
,然后使用
  1. losetup -f
复制代码
命令寻找一个当前未使用的逻辑设备,然后使用
  1. losetup
复制代码
命令将我们前面创建的
  1. img
复制代码
文件虚拟成改逻辑设备,接着利用
  1. mkfs.vfat
复制代码
将该设备格式化成
  1. vfat
复制代码
系统,接着使用
  1. mount
复制代码
命令将其挂载到
  1. isouefi
复制代码
文件夹下面,最后将
  1. tmp
复制代码
文件夹下面所有文件及其文件夹拷贝到
  1. isouefi
复制代码
目录下面,如下图所示:


    4、接着利用
  1. umount
复制代码
命令取消挂载,这样我们就得到一个包含
  1. 内核
复制代码
  1. 文件系统
复制代码
等的
  1. img
复制代码
文件,接着创建一个
  1. iso
复制代码
文件夹,并且在该文件夹下面将创建一个
  1. boot
复制代码
文件夹,然后将
  1. img
复制代码
复制到
  1. iso/boot
复制代码
下面,最后利用
  1. xorriso
复制代码
工具生成
  1. iso
复制代码
文件即可,如下图所示:

    5、最后,新建一个虚拟机,引导选择uefi,启动即可,如下图所示:


六、相关链接

    github链接:https://github.com/windy-purple/make_linux_iso
到此这篇关于如何从零开始制作一个linux iso镜像(图文教程)的文章就介绍到这了,更多相关linux iso镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/LINUXjishu/798229.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具