简陋版:单纯替换,裁剪
先来个简陋版,目的:安装ISO后系统会自带我们需要的工具、驱动
(一):安装官方OS
下载Centos官方包,我这里下载的是CentOS-7.4-x86_64-DVD-1708.iso
然后安装在服务器上(用来定制ISO的服务器)
根据自己的需求选择安装,我这里选择的是minimal安装
注:制作出来的ISO会沿用现在的选择,也就是说制作出来的ISO只要没问题,就会在选择"install centos"后自动检查软件依赖并安装和设置用户(是的,账户&密码也会和现在安装所选择/设置的一样)。
(二):设置网络
因为是最小化安装,此时网络是没有自动起来的(记得插网线哦)。
可以使用“ip a
”命令查看网络端口,使用dhclient
命令自动获取ip。
最小化安装是没有ifconfig命令的,使用yum search ifconfig
命令可以看到安装net-tools.x86_64就可以了(先不安装)
设置网络: vi /etc/sysconfig/network-scripts/ifcfg-<port>
根据 ip a/addr/address
命令的结果
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: wwp0s30u4i8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 8e:53:3a:f6:95:4f brd ff:ff:ff:ff:ff:ff
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:e0:ec:f4:43:9a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.110/24 brd 192.168.1.255 scope global dynamic eno1
valid_lft 6330sec preferred_lft 6330sec
inet6 fe80::2e0:ecff:fef4:439a/64 scope link
valid_lft forever preferred_lft forever
可以看到网口是eno1,所以vi /etc/sysconfig/network-scripts/ifcfg-eno1
把最后一行的ONBOOT=no改为ONBOOT=yes
这样每次开机就会自动获取ip了
(三)安装制作ISO的工具
yum -y install createrepo mkisofs isomd5sum rsync
(四)建立 image-making-directory
(1)创建 ISO制作目录
mkdir -p /root/iso/CentOS7.4-evglow
(2)挂载官方ISO启动盘(假设是/dev.sdb4)
mkdir /mnt/usb
mount /dev/sdb4 /mnt/usb
(3)把官方镜像里的文件同步到image-making-directory
rsync -a /mnt/usb/ /root/iso/CentOS7.4-evglow/
可以使用 ll -a查看目录,其中
total 216
drwxr-xr-x. 9 root root 8192 Dec 31 1969 .
drwxr-xr-x. 3 root root 19 Jan 19 02:19 ..
-rwxr-xr-x. 1 root root 14 Sep 6 2017 CentOS_BuildTag
-rwxr-xr-x. 1 root root 29 Sep 6 2017 .discinfo
drwxr-xr-x. 3 root root 8192 Sep 6 2017 EFI
-rwxr-xr-x. 1 root root 227 Aug 31 2017 EULA
-rwxr-xr-x. 1 root root 18009 Dec 10 2015 GPL
drwxr-xr-x. 3 root root 8192 Sep 6 2017 images
drwxr-xr-x. 2 root root 8192 Jan 19 2020 isolinux
drwxr-xr-x. 2 root root 8192 Sep 6 2017 LiveOS
drwxr-xr-x. 2 root root 81920 Jan 19 2020 Packages
drwxr-xr-x. 2 root root 8192 Jan 19 2020 repodata
-rwxr-xr-x. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7
-rwxr-xr-x. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-Testing-7
drwxr-xr-x. 2 root root 8192 Jan 18 23:47 System Volume Information
-rwxr-xr-x. 1 root root 3120 Jan 19 2020 TRANS.TBL
-rwxr-xr-x. 1 root root 354 Sep 6 2017 .treeinfo
isolinux directory: store the installation interface information when the CD is booted;
images directory: necessary boot image files;
Packages directory: install packages and information;
repodata directory: packages dependency information.
(五)安装自己想加进去的包/tool
(1)配置yum
主要是为了保存rpm包(要放进我们定制的ISO里面)
vi /etc/yum.conf
keepcache=0改为keepcache=1
保存缓存的rpm包
(2)尽情安装
yum install -y net-tools.x86_64 vim i2c-tools gcc 等等
也可以安装自己制作的rpm包
rpm -ivh evglow-1.0.0-1.x86_64.rpm
或yum install -y evglow-1.0.0-1.x86_64.rpm
可以把自己要安装的驱动写成一个rpm包,安装该rpm包时自动编译安装
(六)替换Packages/里的文件
官方包有4G多大(这样vfat32格式的U盘就不能拷贝了),主要是里面存放了很多rpm包,我们用不到这么多,所以在服务器上安装好需要的rpm后,根据当前安装的rpm列表去裁剪Packages/目录
(1) 生成当前的rpm列表
rpm -qa >> /root/install.log
(2)根据该列表放置rpm包
先把原来的删了
rm -f /root/iso/CentOS7.4-evglow/Packages/*
然后