genisoimage制作CentOS7自定义安装镜像

1.安装自定义镜像工具

1.1安装

yum -y install createrepo mkisofs openssl rsync syslinux

2.挂载镜像

2.1创建挂载点

mkdir /mnt/cdrom

2.2挂载

# 上传镜像到/home/baseISO目录下
mount -o loop /home/baseISO/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom/

2.3同步

同步/mnt/cdrom/下的文件到/home/ISO/

mkdir /home/ISO
/usr/bin/rsync -a /mnt/cdrom/ /home/ISO/

3.ks.cfg文件自定义

3.1复制ks.cfg文件

cp /root/anaconda-ks.cfg /root/ks.cfg

3.2密码生成

# -1: md5加密
# -salt: 加盐
# 盐: Wkajs
# pass: password
openssl passwd -1 -salt Wkajs password

3.3编辑ks.cfg文件

  #  vim /root/ks.cfg
  #version=DEVEL
  # System authorization information
  auth --enableshadow --enablemd5
  # Use CDROM installation media
  cdrom
  # Use graphical install 图形化界面式安装
  # graphical
  # Use text install  文本式安装
  text
  # Run the Setup Agent on first boot
  firstboot --enable
  # 启用会忽略其他硬盘
  ignoredisk --only-use=sda
  # Keyboard layouts
  keyboard --vckeymap=us --xlayouts='us'
  # System language
  lang en_US.UTF-8
  
  # Network information
  network  --bootproto=dhcp --device=eth0  --ipv6=auto --activate
  network  --hostname=localhost.localdomain
  
  # Root password
  rootpw --iscrypted  $1$8q7ORxjl$v8yGB70WIHiLjNcaJRdCh.
  # System services
  services --disabled="chronyd"
  # System timezone
  timezone Asia/Shanghai --isUtc --nontp
  # Partition clearing information
  clearpart --all --initlabel
  
  # System bootloader configuration
  bootloader --append=" crashkernel=512M " --location=mbr  --boot-drive=sda
  # Clear the Master Boot Record
  zerombr
  %addon com_redhat_kdump --enable --reserve-mb='512M'
  %end
  part /boot --asprimary --fstype="ext4" --size=500 --ondisk=sda
  # uefi模式需要
  part /boot/efi --asprimary --fstype="efi" --size=120 --ondisk=sda
  #----------------------以下是创建lvm逻辑卷---------------------
  # 创建第一个物理卷PV分区,序号是01,大小为剩余所有空间
  # --size=1 --grow参数是以剩余所有空间来分区
  part pv.01 --size=1 --grow --ondisk=sda
  # 创建一个逻辑卷组名,名字为vg_sytem,包含在物理卷PV.01
  volgroup virt pv.01
  # 创建一个LV逻辑卷,挂载到/  ,从vg_system组中创建,大小为10000M,LV的名字是lv_root
  logvol / --fstype="ext4" --vgname=virt --size=1 --grow --name=vg-root
  # 创建第二个物理卷PV分区,序号是02,大小为剩余所有空间
  #part pv.02 --size=1 --grow --ondisk=sdb
  #创建一个逻辑卷组名,名字为vg_mvtech,包含在物理卷PV.02
  #volgroup data pv.02
  #创建一个LV逻辑卷,挂载到/data  ,从vg_data组中创建,LV的名字是lv_data
  #logvol /data --fstype="ext4" --vgname=vg_data --size=1 --grow --name=volume-data
  
  
  # 最小化安装
  %packages
  @^minimal
  @core
  kexec-tools
  %end
  
  reboot

4.ISO文件目录

4.1目录

# tree /home/ISO/ -d
/home/ISO/
├── EFI
│   └── BOOT
│       └── fonts
├── images
│   └── pxeboot
├── isolinux
├── LiveOS
├── Packages
└── repodata

4.2复制ks.cfg到isolinux

cp /root/ks.cfg /home/ISO/isolinux

4.3修改isolinux.cfg文件

# vim /home/ISO/isolinux/isolinux.cfg
label linux
  menu label ^Install CentOS 7
  menu default
  kernel vmlinuz
  append initrd=initrd.img  ks=cdrom:/isolinux/ks.cfg net.ifnames=0 biosdevname=0 quiet

describe: net.ifnames=0 biosdevname=0 禁用自动设备命名规则,恢复传统的 ethx 设备名称

5.生成iso文件

5.1制作iso仅支持传统的BIOS启动

# mkisofs制作
mkisofs \
-o CentOS-7-9.iso \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
-boot-info-table -R -J -v -T /home/ISO


此命令创建了一个基本的ISO镜像,主要用于传统的BIOS启动:

  • -b isolinux/isolinux.bin 指定了BIOS引导加载程序。
  • -c isolinux/boot.cat 提供了引导目录。
  • -R -J 保证了Rock Ridge和Joliet扩展,支持Linux文件属性和长文件名。
  • -T 设置时间戳为协调世界时。
  • -v 提供了详细的输出信息。
  • -T /home/ISO 指定了要打包的目录。

5.2制作iso兼容UEFI和BIOS启动

使用mkisofs制作

# mkisofs制作
mkisofs \
-o /home/ISO/CentOS-7-9.iso \
-v -cache-inodes -joliet-long -R -J -T -V centos7 -c isolinux/boot.cat -b isolinux/isolinux.bin \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-eltorito-alt-boot \
-b images/efiboot.img \
-no-emul-boot /home/ISO

这个命令不仅包含了上述的基本功能,还额外添加了对EFI引导的支持:

  • -cache-inodes 可能用于加速ISO创建过程。
  • -joliet-long 明确指出了使用Joliet长文件名。
  • -V centos7 设置了ISO的卷标为centos7。
  • -eltorito-alt-boot 和 -b images/efiboot.img 表示创建一个用于EFI引导的El Torito替代引导条目,efiboot.img是EFI系统的引导映像。
  • 其他参数如-R-J-T-c isolinux/boot.cat-b isolinux/isolinux.bin-no-emul-boot-boot-load-size 4-boot-info-table 与第一个命令相同,但在这个上下文中与EFI支持相结合。

genisoimage 制作

# genisoimage 制作
genisoimage  \
-joliet-long \
-o CentOS-7-9.iso \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
-boot-info-table -R -J -v -cache-inodes -T -eltorito-alt-boot \
-e images/efiboot.img -no-emul-boot /home/ISO

这条命令是使用genisoimage工具来创建一个兼容传统BIOS和UEFI启动方式启动的ISO镜像文件,具体参数含义如下:

  • -joliet-long: 启用Joliet扩展以支持长文件名。Joliet是一种ISO 9660扩展,允许在ISO镜像中使用长达103个字符的文件名,支持Unicode字符集,提高了文件名的国际化能力。加上-Long表示使用最长文件名限制。

  • -o CentOS-7-9.iso: 指定输出的ISO镜像文件名为CentOS-7-9.iso

  • -b isolinux/isolinux.bin: 设置ISO的引导扇区文件为isolinux/isolinux.bin。这是在传统BIOS环境下用于启动安装程序的引导加载器。

  • -c isolinux/boot.cat: 指定ISO的目录文件(Catalog文件)为isolinux/boot.cat,该文件包含了ISO中文件的索引信息,有助于启动时快速定位文件。

  • -no-emul-boot: 禁用模拟引导模式,直接使用原始的引导扇区格式,而非模拟软盘或硬盘的引导方式。

  • -boot-load-size 4: 设置引导加载扇区的大小为4个扇区。引导加载扇区的数量决定了引导加载程序的大小,这里通常足够装载大部分引导加载程序。

  • -boot-info-table: 在ISO中包含一个引导信息表,该表提供了启动菜单等信息,对于自定义引导流程很有用。

  • -R: 启用Rock Ridge扩展,使得ISO镜像可以包含Unix/Linux文件系统的特性,如权限、符号链接等。

  • -J: 启用Joliet文件系统支持,与前面的-jolet-long一起确保长文件名支持。

  • -v: 详细模式,输出更多操作过程中的信息,方便监控和调试。

  • -cache-inodes: 使用inode缓存,可能提高ISO创建时的效率,特别是在文件系统中有很多小文件的情况下。

  • -eltorito-alt-boot: 添加一个替代的El Torito引导条目,这是为了支持EFI引导。通常用于UEFI启动,因为EFI系统需要一个特定的引导文件来启动。

  • **-e images/efiboot.img: 指定EFI引导映像文件为images/efiboot.img,这是EFI系统启动所需的引导加载程序。

  • -no-emul-boot: 再次禁用模拟引导,对于EFI部分也是适用的。

  • /home/ISO: 指定ISO镜像中包含的文件和目录的来源路径,所有这个目录下的内容将会被打包进ISO。

要兼容uefi模式需修改文件

 # vim EFI/BOOT/grub.cfg
 # 修改内容
 menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
      linuxefi /images/pxeboot/vmlinuz ks=cdrom:/isolinux/ks.cfg net.ifnames=0 biosdevname=0   quiet
      initrdefi /images/pxeboot/initrd.img
  }
  #下面内容可注释,只保留当前install选项
  ...

5.3Hybird模式

isohybrid -v /home/ISO/CentOS-7-9.iso

notice: isohybrid command not found,需要安装syslinux.命令: yum -y install syslinux

describe: 采用“hybird模式”(混合模式),操作系统可以直接刻录成物理光盘,也可以直接做成可引导的U盘

这个命令是用来使ISO镜像具有“Hybrid”特性。Hybrid ISO镜像是一种特殊的ISO格式,它结合了传统ISO 9660 CD/DVD镜像的特性与可引导USB闪存盘(USB闪存盘)的特性。执行这个命令后,位于/home/ISO/目录下的CentOS-7-9.iso镜像会被修改,使其既可以像常规ISO那样被刻录到光盘使用,也能够直接写入USB闪存盘并从USB设备引导启动。

Hybrid ISO的主要优势在于灵活性和兼容性,它使得同一份ISO镜像在多种介质和启动方式下都能工作,无需用户额外制作USB启动盘或光盘的特定版本。这对于系统部署、应急恢复或没有物理光驱的现代设备尤其有用。

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值