前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >定制你的全功能ISO系统

定制你的全功能ISO系统

作者头像
用户1456517
发布2019-03-05 16:13:07
1.4K0
发布2019-03-05 16:13:07
举报
文章被收录于专栏:芝麻实验室

引言

上一篇中,我们实现了基于anaconda的网络安装,能够较快速的自定义系统安装,但是anaconda受限于图形界面和网络环境(虽然可以走CD-ROM安装,但并非每1台主机都是有光驱的),因此,在这种场景下,我们需要的可能是一套不依赖于网络环境,足够快速且可深度定制的无人值守式系统安装方案,即定制化的全功能ISO系统安装文件。

需要什么

1台Linux主机;不小于10GB的磁盘空间;Centos镜像文件(以CentOS 6为例);定制好的kickstart文件。 注:红帽系Linux系统的自动化安装基本都依赖于ks文件,该文件可通过system-config-kickstart生成,如您没有现成的ks文件,请点此参考这篇文章。

具体实现

1. 首先,我们需要创建用于制造目标ISO文件的工作目录

代码语言:javascript
复制
[root@DataCenter ~]# mkdir /diy

2. 挂载并复制光盘或官方ISO中所有文件到该工作目录。请注意:这一步较易出错,如果您使用cp /mnt/iso/* /diy拷贝文件,请务必额外复制.discinfo及.treeinfo文件,因为如果执行cp /source/* /target命令将不会复制隐藏文件,进而导致最后制作系统 ISO文件失败。

代码语言:javascript
复制
[root@DataCenter ~]# mount /dev/sr1 /mnt/iso
[root@DataCenter ~]# cp -r /mnt/iso/ /diy/mu  
[root@DataCenter mu]# cd /diy/mu/
[root@DataCenter mu]# ls -al           #查看拷贝后的文件是否全
total 288
dr-xr-xr-x 7 root root   4096 Sep 17 20:44 .
drwxr-xr-x 3 root root     16 Sep 17 20:43 ..
-r--r--r-- 1 root root     14 Sep 17 20:43 CentOS_BuildTag
-r--r--r-- 1 root root     31 Sep 17 20:44 .discinfo  => 容易漏拷贝的隐藏文件
dr-xr-xr-x 3 root root     35 Sep 17 20:43 EFI
-r--r--r-- 1 root root    212 Sep 17 20:43 EULA
-r--r--r-- 1 root root  18009 Sep 17 20:43 GPL
dr-xr-xr-x 3 root root     95 Sep 17 20:43 images
dr-xr-xr-x 2 root root    198 Sep 17 20:43 isolinux
dr-xr-xr-x 2 root root 176128 Sep 17 20:44 Packages
-r--r--r-- 1 root root   1359 Sep 17 20:44 RELEASE-NOTES-en-US.html
dr-xr-xr-x 2 root root   4096 Sep 17 20:44 repodata
-r--r--r-- 1 root root   1706 Sep 17 20:44 RPM-GPG-KEY-CentOS-6
-r--r--r-- 1 root root   1730 Sep 17 20:44 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r-- 1 root root   1730 Sep 17 20:44 RPM-GPG-KEY-CentOS-Security-6
-r--r--r-- 1 root root   1734 Sep 17 20:44 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r-- 1 root root   3380 Sep 17 20:44 TRANS.TBL
-r--r--r-- 1 root root    338 Sep 17 20:44 .treeinfo  => 容易漏拷贝的隐藏文件

3. 删除TRANS.TBL文件(该文件后面会重新生成)

代码语言:javascript
复制
[root@DataCenter mu]# find -name TRANS.TBL -exec rm -rf {} \;
[root@DataCenter mu]# find -name TRANS.TBL -ls

4. 备份repodata目录下的包组关系文件到当前路径下(以-comps.xml结尾的xml文件)。我们将依赖该文件重建YUM仓库元文件

代码语言:javascript
复制
[root@DataCenter mu]# cp repodata/*-comps.xml .
[root@DataCenter mu]# ls
43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-c
omps.xml
CentOS_BuildTag
EFI
EULA
GPL
images
isolinux
Packages
RELEASE-NOTES-en-US.html
repodata
RPM-GPG-KEY-CentOS-6
RPM-GPG-KEY-CentOS-Debug-6
RPM-GPG-KEY-CentOS-Security-6
RPM-GPG-KEY-CentOS-Testing-6

5. 删除旧的repodata元文件目录

代码语言:javascript
复制
[root@DataCenter mu]# rm -rf repodata

6. 重建YUM仓库元文件

代码语言:javascript
复制
[root@DataCenter mu]# yum -y install createrepo
[root@DataCenter mu]# mkdir repodata
[root@DataCenter mu]# cp ./*-comps.xml repodata/
[root@DataCenter mu]# tree repodata/
repodata/
└── 43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_
64-comps.xml

0 directories, 1 file
[root@DataCenter mu]# createrepo -g repodata/43d8fd068164b0f042845474d6a2226
2798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml ./  # -g选项用于指定包组文件名
Spawning worker 0 with 1620 pkgs
Spawning worker 1 with 1620 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@DataCenter mu]# tree repodata/
repodata/
├── 1cde788f77b08a7eb3dfdba12fa384a5f0214147a717a1e2d4504368037fba90-c6-x86_
64-comps.xml.gz
├── 43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_
64-comps.xml
├── 5b50885f24e9b94cb694cc069cde6fc1b1c78f0e24d5faefe34d2656cb501d6e-other.x
ml.gz
├── 81c42f20b1f15d927008dfd8d3a7c354aade77d489a4641aa4ad30f69cd2cdde-primary
.sqlite.bz2
├── 8926b9aebeab445c95ab5a812a218a1ea5f5841e2f53df1bc186704fef7b8cdf-filelis
ts.xml.gz
├── 97b397de22894936fd4f9c824c57a935d3ffe2cb2f6b269086436ff1ca24c08d-primary
.xml.gz
├── dc92ef7fb537858e5c76c840346bde3f9561415a04714c6f4dc0f8716b596cc5-filelis
ts.sqlite.bz2
├── f6b1dfab3efff3942f7383de117a3195c4c9bc3c54bc168e9d5c5a4d0a4621bc-other.s
qlite.bz2
└── repomd.xml

0 directories, 9 files

7. 将定制好的ks文件复制到当前工作目录下。需要注意的是,由于我们的目标是完全离线安装,因此所有的文件都将包含在ISO文件内部,因此必须保证ks文件中,yum安装包源必须为cdrom,另,如果您希望使用字符模式安装,请将ks文件中的graphical改为text,从而实现真正的无人值守式快速安装(强烈推荐)。

代码语言:javascript
复制
[root@DataCenter mu]# cp /var/ftp/ks/ks6-{desktop,mini}.cfg ks/
[root@DataCenter mu]# tree ks/
ks/
├── ks6-desktop.cfg
└── ks6-mini.cfg

0 directories, 2 files

8. 定制启动菜单。

代码语言:javascript
复制
[root@DataCenter mu]# vim isolinux/isolinux.cfg
default vesamenu.c32
timeout 600
display boot.msg

menu title Welcome to use System Install Program!  by: XiaoMu

label Centos6 Mini
  menu label Automic Install Centos6 ^Mini
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks/ks6-mini.cfg

label Centos6 Desktop
  menu label Automic Install Centos6 ^Desktop
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks/ks6-desktop.cfg

label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue

label local
  menu label Boot from ^local drive
  menu default
  localboot 0xffff

9. 生成ISO文件

代码语言:javascript
复制
[root@DataCenter mu]# cd
[root@DataCenter ~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "XiaoMu_CentOS 6.9 x86_
64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /diy/XiaoMu_Centos6_boot.iso /diy/mu
[root@DataCenter ~]# ll -h /diy/
total 3.8G
dr-xr-xr-x 8 root root 4.0K Sep 17 21:14 mu
-rw-r--r-- 1 root root 3.8G Sep 17 22:03 XiaoMu_Centos6_boot => 生成是ISO文件

10. 将生成的ISO文件烧录到U盘等存储设备即可,也可以直接用该ISO文件引导,如果没有操作失误应该看到和笔者一样的界面。

makeISO
makeISO

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/09/17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档