易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 3727|回复: 0
收起左侧

CentOS7全自动安装光盘制作

[复制链接]
发表于 2016-11-20 13:21:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x

CentOS7全自动安装光盘制作详解

1 复制光盘文件

1)挂载iso镜像

创建目录用于挂载光盘:

[size=1em]1

- L# L1 }% ]3 \6 M  I# p
[size=1em][size=1em]mkdir /root/centos7
( `6 d* C/ @) n3 ~6 ]' n* {" o! [) B% g# o" s0 i3 @9 j

0 j6 c' I2 G. g
. Z: z. ^6 B$ s. |& }

挂载iso镜像

[size=1em]1

6 T0 n7 d$ e' Q/ m1 U1 w! N& g
[size=1em][size=1em]mount -o loop CentOS-7.0-1406-x86_64-DVD.iso/root/centos71 g  N: i  j. d9 a( W% L0 _, Q
5 |( Y/ V3 w: j9 X" v1 p

8 ]0 z& B+ I( R8 z$ J- B  D9 H
6 C3 u* ~8 ~4 @7 v2 m

2)复制光盘文件到编辑目录进行编辑

因为挂载上iso镜像是只读的,如果要编辑,需要将文件复制出来,再编辑。

首先创建编辑目录:

[size=1em]1
* M2 z# S% B$ x; P
[size=1em][size=1em]mkdir /root/centos7_iso
  U+ C6 J. m5 S% k, A- d- S+ }# Y
, @' ?; o$ j2 j" h

4 X  u) I& S; Q( s
$ Q8 g4 O, H. x9 D* v% V$ \

复制光盘文件:

[size=1em]1

* M8 _2 X' c' c$ B& b2 V) Q7 Z
[size=1em][size=1em]cp -rf /root/centos7/* /root/centos7_iso/
+ u1 C& V( T! o% P, p7 n" C7 U/ l# M
1 p. V; X! G* ]# ?. n' h2 `9 w
! j1 c# Q0 ^# n  q

diskinfo文件需求单独拷贝下:

[size=1em]1
3 S! t( ^: o2 @0 @
[size=1em][size=1em]cp /root/centos7/.discinfo /root/iso
  k- j6 ~8 u8 ~6 N- J0 c- P4 l% `' W7 E# _( n3 v  {/ T
' I: ]3 c/ j& f  w3 |
4 h& @# W$ |5 ]/ z' r7 \

2 编辑ks.cfg文件

系统安装的时候,按照ks.cfg文件的内容进行安装,我们把ks.cfg文件放到isolinux目录下:

[size=1em]1

3 h! w% x' }+ h9 e! H: o( E- d/ M; w
[size=1em]2

' S" r$ o$ B# {" o5 z) A5 C
[size=1em][size=1em]cd /root/centos7_iso/isolinux
' [5 L7 Q& ?8 C% \" p: `, s1 V( D[size=1em]vim ks.cfg! y+ V( V" c: P% r

: L- ]" _/ C. l1 J. y$ Z
7 O* u  i$ ?8 q: f7 x$ @
) r4 K' r" {7 c5 p& G) |6 g/ T

我的ks.cfg文件内容如下:

[size=1em]1
6 M. r/ U6 t- m: {- a5 O
[size=1em]2
2 b! m/ l5 n# F5 ?. j
[size=1em]3
% O6 {8 \- [0 a% a" u0 o7 F* F
[size=1em]4

9 \( U4 `7 V4 B. X9 X- i
[size=1em]5
$ P1 S; Z# {! K
[size=1em]6
; y& t8 x$ H5 |! d) ]5 q' C# w
[size=1em]7

% G3 t9 P0 y- B8 G. N
[size=1em]8
, ^2 ?# M  k/ b0 e3 T. r, }2 {
[size=1em]9

3 v# F2 A5 I7 r9 I6 R
[size=1em]10

9 y6 w" f9 v0 M  m
[size=1em]11

8 M1 [& x6 g2 O+ m1 y
[size=1em]12
: \3 |  R- U0 }8 @$ o7 v! _, A
[size=1em]13
# ?  p& s; \' H6 S- H
[size=1em]14

6 e5 \- w" X6 b3 [
[size=1em]15

3 r' l, I' |2 t: [( Y9 |# D5 k: l
[size=1em]16

: z+ Q! u8 q% U) c" |
[size=1em]17

. U& _& L+ {5 x8 c4 X6 E; y
[size=1em]18
' ^7 D5 |- x8 o9 r0 @; l
[size=1em]19

% H' G( d7 q  L1 K, @: d
[size=1em]20

# [8 B" q+ m* t' J
[size=1em]21

! b9 G5 t% p! k0 A* ?
[size=1em]22

& R6 ~% c2 W6 \/ M
[size=1em]23

+ l' F0 I- X8 ]2 E4 d. f
[size=1em]24
8 X4 b7 q  I2 E5 g4 T
[size=1em]25
! ~6 u5 T6 ~& Z: ]! }/ f6 I
[size=1em]26
: V/ E* e3 }- }3 V& `3 W; C
[size=1em]27
  G. h5 v! N" `, o
[size=1em]28
* f' N4 F# ^2 U6 o
[size=1em]29
6 u9 g: a& X- x& e7 I8 U) [% J6 Q# t
[size=1em]30

7 w5 }, a; U7 H7 O" V/ o3 S  T6 F
[size=1em]31
- X! n  t" d/ s) E* }  G0 C( @
[size=1em]32

4 Y# _" ?; k" @. Y* I: ^5 o8 V. A
[size=1em]33

/ L7 W0 B: m7 Z/ j9 e7 X" x
[size=1em]34
5 x7 z5 m* k! d  L1 T+ D
[size=1em]35
. Y# R. A+ s+ M. j" k
[size=1em]36
. E; ~9 z1 L1 {' l! j3 e7 J6 I
[size=1em]37

$ t4 _/ V- h  ^+ d. u. D5 q
[size=1em]38

9 A0 U+ X  Y2 U% z& O0 u
[size=1em]39

5 j4 ?: @7 d) z- L, d
[size=1em]40
) r0 ~; n; `; ?; @8 p
[size=1em]41

# b9 ~: m! f# Q& @" w  p
[size=1em]42
2 i! y8 I# J) J$ |
[size=1em]43
4 w  Q- z( K, e1 Q9 Z4 L! E
[size=1em]44

9 E0 D: V5 W( o2 m1 E
[size=1em]45
4 v0 a( U1 M2 y# S
[size=1em]46
: }' E  i' {3 A" G, E/ Z6 U
[size=1em]47

. u% z) r. K2 y+ g& C
[size=1em]48
6 Z0 `7 w" L- ?5 z2 e% `/ ?2 K" U
[size=1em]49
. c& G! G$ u5 R
[size=1em]50
- H0 A) l0 t, V9 g; _9 p7 g5 Z
[size=1em]51

2 z5 s9 J9 s8 c! `- ?  w
[size=1em]52

  W" y. d8 A% U# s; Q1 E0 j0 [& z
[size=1em]53
- {* ?* ?* j/ b
[size=1em]54
+ X+ y% v; `% {3 {" |9 \
[size=1em]55

7 c% ?8 q/ ^6 X7 G" \
[size=1em]56

; j; F" G# \( T# v0 d
[size=1em][size=1em]#version=RHEL/CentOS7 by xiaoli110
% m1 A  J. f7 }5 J- F4 D4 O[size=1em]install' s/ S% T9 s, V) X
[size=1em]# Keyboard layouts% p' N5 L/ ]6 |& o# n8 j
[size=1em]keyboard 'us'% l9 o" e, v2 |* ^
[size=1em]# Reboot after installation
  C8 z3 u1 z3 B' W' M6 ^[size=1em]reboot
+ [" `: g2 g! i* L[size=1em]# Run the Setup Agent on first boot
: D  d& @1 t0 O" r7 n' _[size=1em]firstboot --enable& I+ {% e  V* o0 N( B$ S) V7 r
[size=1em]ignoredisk --only-use=sda  g  T3 X3 ]1 P4 @4 E5 {
[size=1em]# Keyboard layouts
' |9 i  e& u% |. d( e" t# z[size=1em]keyboard --vckeymap=us --xlayouts='cn'  @+ r% m3 n& t7 p5 E
[size=1em]# System language
+ L6 B9 Z* P8 z6 m/ `[size=1em]lang zh_CN.UTF-8. b5 s6 E. L* L1 L4 u% ^
[size=1em]# Network information+ L2 X6 H% s. P3 K, H9 e
[size=1em]#network --bootproto=dhcp --device=enp2s0 --onboot=off --ipv6=auto$ Q% Z% K+ M& `3 [4 r
[size=1em]#network --bootproto=dhcp --device=enp3s0 --onboot=off --ipv6=auto# L# ^+ e& i) y& t6 g* I: g
[size=1em]#network --hostname=localhost.localdomain# f3 t$ |+ |1 [4 s3 S  B+ m
[size=1em]# Root password
$ v5 X0 d" y; J! M2 g; x[size=1em]rootpw --iscrypted 111111111111111111111111111
8 x7 c2 D1 s& r5 K9 j) O% y0 A' Y[size=1em]# System timezone5 ^% {, Y% T3 w5 j) C; R7 `3 A
[size=1em]timezone Asia/Shanghai# ^- n" ?: ~: n* o7 B. F
[size=1em]# System language
* G" K% L+ ^- y) ~9 I6 Y# z/ z[size=1em]lang zh_CN
' M& l3 S, R  |9 J  K[size=1em]# Firewall configuration$ I. d% p  b* ~% N
[size=1em]firewall --enabled --ssh4 Q! {% L/ \7 G! P
[size=1em]  
4 b. S" y, a. N7 D1 ~2 I' T[size=1em]# System authorization information3 N: r7 `% ^1 l4 d8 A8 t; `- v* W
[size=1em]auth --useshadow  --passalgo=sha512
" Q9 S# [$ Z( X) L  @[size=1em]# Use CDROM installation media' q* t2 D$ k) n! c! F! v
[size=1em]cdrom
! a- Q' }% a7 z' e/ l[size=1em]# Use graphical install; Y' y. P% q* ]8 E
[size=1em]graphical
* Y( t# ^. W$ c5 ~( P" j1 y[size=1em]# SELinux configuration
: v0 w6 H; O& K8 f) H[size=1em]selinux --disabled1 a( _" I, }. P& {1 T
[size=1em]# Do not configure the X Window System
3 H: _; g. e. }[size=1em]skipx
7 M6 I# p! r$ F8 z) k# N[size=1em]# System bootloader configuration
6 s6 Z: |3 b! K[size=1em]bootloader --location=mbr
, \! p& @6 l8 d- f" E[size=1em]# Clear the Master Boot Record
- n  O& A: F4 \7 ^: `) t2 i; _0 W[size=1em]zerombr
& w! g1 Y- ]. {+ s. Z- h[size=1em]# Partition clearing information
% N* _7 F( S* T8 s5 X( c[size=1em]clearpart --all* G: I8 [  u, X8 p9 P7 y
[size=1em]# Disk partitioning information4 x' n3 ~  l' _/ Z( p
[size=1em]part /boot --fstype="xfs"--size=500% ]3 O# r  K/ s% G5 o
[size=1em]part /boot/efi --fstype="xfs"--size=5008 J; Z; N9 c. \/ S. c
[size=1em]part swap --fstype="swap"--size=16000; c  `  a! b- J: Z& J& ?) Q' s1 P
[size=1em]part / --fstype="xfs" --grow--size=1
0 q9 b& [$ ?/ K7 j; C) E- N" s- n[size=1em]  
; f) [* J7 J9 b) E4 w[size=1em]%packages6 ]5 G7 S/ K. l" P% o
[size=1em]@base
* O/ u* W3 |3 C+ j% J: ]( e3 H! W[size=1em]@core( X8 B# K/ Y, L! F" z+ Z- S  E' }
[size=1em]@development9 }' ~, v" H" J3 J4 Z( B
[size=1em]@hardware-monitoring
2 }2 v; p( J0 W+ I[size=1em]@performance" F, f: j! p! r% m* I4 D4 [
[size=1em]@remote-system-management
5 l. B! V; x/ v. b& H2 G6 ~[size=1em]%end
$ f1 ?# G2 i8 z& V: ~" |
- N6 z% U! p+ i, Z& p* I

7 f+ D0 z$ X# f" T2 q7 T  C: I7 C
! y9 R4 _; f/ d+ g$ M( W

; P8 S+ Q- `1 |- Q4 v7 E0 y

注意:

1)因为CentOS7系统网卡规则更复杂,为了ks.cfg更通用,最好ks.cfg不用制定网卡配置。

2)为了兼容mbr方式和EFI方式,同时创建了/boot和/boot/efi分区。

3配置mbr引导方式

编辑isoliuux目录下的isolinux.cfg文件,添加自己的内容,在isolinux.cfg文件中label linux下面添加自己的label:

[size=1em]1

1 x& i+ y  `% [$ o# m1 M  i
[size=1em]2

4 G5 P' k' E, @8 L
[size=1em]3

5 S8 v, s& W+ A! \, o
[size=1em]4

2 I( i9 R. ~5 k% }; W
[size=1em]5

/ g' n8 y+ b% w# c- E
[size=1em]6

1 j5 A0 Y/ C) B' B% s2 K
[size=1em]7
: W/ K9 _. J8 Y9 |
[size=1em]8
1 c4 F& Y  _) J. D
[size=1em]9

2 R* z5 Z7 t5 B* d. A2 K
[size=1em][size=1em]label linux6 n* h4 z2 a/ j
[size=1em] menu label ^Install CentOS 79 j! q4 W" N$ A7 z9 ]; l  T, W3 ~
[size=1em] kernel vmlinuz
) J; I9 M. |- b[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 quiet
% ?% ^$ D9 z6 \4 o9 \+ c8 W4 M' a[size=1em]  / Y6 ]4 f8 Q. q! F) O& `' E! f/ \
[size=1em]label custom
: w3 a  Y# s& }6 V, T5 f[size=1em] menu label ^Custom CentOS 7 by xiaoli110
; u, j+ i# A; ?* W  r[size=1em] kernel vmlinuz
3 V9 v2 }7 `  Y2 B# ?[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 inst.ks=cdrom:/isolinux/ks.cfg
" a1 w4 v! X0 y, ]% J! w. ?1 h) M/ ?5 H; d- w

, K- @' m7 E5 N- M4 y+ ]

& q# P+ W& r) Y

注意点:

1)memu label 后面的内容是在光盘引导起来菜单的内容,^后面的字母是菜单的快捷键;

2)通过inst.ks关键字指明ks.cfg文件位置;

3)inst.stages2标识的是系统按照介质位置,这里使用hd:LABEL表明寻找的是label为CENTOS7的安装介质,使用LABEL关键字的好处是可以精确指定安装介质,为什么label是CENTOS7,是因为我在制作光盘镜像的时候指定的,方法在后面有介绍。

4 配置EFI引导方式

1)EFI简介

EFI可扩展固件接口(ExtensibleFirmware Interface 的缩写),是英特尔主导推出的一种替代BIOS的升级方案。最早由英特尔开发,于2005年将此规范格式交由UEFI论坛来推广与发展,后来并更改名称为Unified EFI(UEFI)。UEFI论坛于2007年1月7日释出并发放2.1版本的规格,其中增加与改进了加密编码(cryptography)、网络认证(network authentication)与用户接口架构(User Interface Architecture)。

EFI是用模块化,C语言风格的参数堆栈传递方式,动态链接的形式构建的系统,较BIOS而言更易于实现,容错和纠错特性更强,缩短了系统研发的时间。

EFI在概念上非常类似于一个低阶的操作系统,并且具有操控所有硬件资源的能力。

2)配置EFI引导

进入光盘目录EFI/BOOT/,编辑grub.cfg文件,添加自己的菜单:

[size=1em]1
" h3 [, l9 C" Y% Q  v1 T  y
[size=1em]2
) h/ [# X+ m" T/ Y+ V
[size=1em]3

2 s# n; _5 n9 [' X3 h& [
[size=1em]4

( ~5 a" ]( R, H2 z" p' ?
[size=1em]5
) q/ T) Q. ~! R7 S( k
[size=1em]6

( U4 H6 [* u% l/ e/ I/ }# |
[size=1em]7
8 \5 b) M3 [5 t7 Z7 h# O% M- F- g
[size=1em]8

3 V3 _+ ?: f+ H
[size=1em][size=1em]menuentry 'Install CentOS 7' --class fedora--class gnu-linux --class gnu --class os {% X" ?+ z0 I6 J$ s
[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CENTOS7 quiet! R( C5 V% C) u$ ~, w; Y! q
[size=1em]       initrdefi /images/pxeboot/initrd.img4 |4 C% N1 Z8 S6 [- S3 D! j1 N* G) t. E+ u
[size=1em]}
* a& Y! g: w( Y9 l5 I; J: H[size=1em]menuentry 'Install CentOS 7 custom byxiaoli110' --class fedora --class gnu-linux --class gnu --class os {
: r/ I* D  N) h, [) P" X  i5 s& S[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.ks=cdrom:/isolinux/ks.cfginst.stage2=hd:LABEL=CENTOS7 quiet8 n0 S$ t& S( L1 l3 U0 l
[size=1em]       initrdefi /images/pxeboot/initrd.img4 [" A' O* E/ Y# s" S7 ?! ^" W
[size=1em]}
9 O+ E1 O# p  Q- }6 f+ p3 w! z
& x# c& w7 V$ {5 H1 f6 N9 l

5 O$ Z$ T& ^! U4 }
$ `3 J4 f, y. Q/ L4 H& n

和mbr方式类似,指明ks.cfg文件位置和安装源位置。

5 生成iso镜像

经过我踩过多个坑,成功的生成镜像,并且能在EFI和mbr环境安装的镜像生成命令如下:

[size=1em]1

( _. f# R) i2 e- O# s# x, e
[size=1em]2
% d6 G* y/ E* i3 C- o2 }
[size=1em]3

2 m# r, _4 c/ s+ o( o, ^) e  [
[size=1em]4

+ C2 a0 t( ?- o" o  p: t2 e
[size=1em][size=1em]genisoimage -v -cache-inodes -joliet-long -R -J -T -V CENTOS7 -o /root/centos7.iso    \# M8 H3 p0 q: Z. k5 a- _, g" \
[size=1em]-c isolinux/boot.cat    -bisolinux/isolinux.bin      \
6 L- x9 I! l3 G8 m7 X0 F! f' g  A) B[size=1em]-no-emul-boot -boot-load-size 4-boot-info-table    \
* ?" }/ I6 p, x' U$ \[size=1em]-eltorito-alt-boot     -b images/efiboot.img       -no-emul-boot .4 M9 i6 E+ K, J8 @2 A  r" y
) R5 q; t( s5 L
* K5 g# N6 A! ~# M* [6 L. r
- u* M  o% N& @  Q4 t) @

6 M$ A0 H8 [2 h. p

(1)中间踩过的几个坑:

1)制作镜像要使用CentOS7的系统,不要使用CentOS6的系统,因为两者系统的genisoimage命令的版本不一样,6的系统制作出来的iso不能在efi环境启动;


1 y! Y* ^( y9 I: S5 [$ p! a

2)如果要在efi启动,需要添加如下参数:


9 Q* _7 ~7 _6 J2 d' B
[size=1em]1
7 C; ~6 a8 i, S# n
[size=1em][size=1em] -eltorito-alt-boot     -bimages/efiboot.img       -no-emul-boot  y: h' ^  k6 f2 B9 e

( Z' A0 e9 V( V1 b% e5 a
6 Y6 w0 g5 Q$ d0 G" s
7 n* U1 e) ]- E

3)通过-V参数指定光盘label


0 E  c* b: |5 X' `1 @$ d5 q

(2)genisoimage命令参数简介

-o 指定映像文件的名称。

-b指定在制作可开机光盘时所需的开机映像文件。

-c 制作可开机光盘时,会将开机映像文件中的no-eltorito-catalog全部内容作成一个文件。

-no-emul-boot  非模拟模式启动。

-boot-load-size 4   设置载入部分的数量。

-boot-info-table 在启动的图像中现实信息。

-joliet-long   使用 joliet 格式的目录与文件名称,长文件名支持。

-R 或 -rock    使用 Rock RidgeExtensions 。

-J 或 -joliet    使用 Joliet 格式的目录与文件名称。

-v 或 -verbose    执行时显示详细的信息。

-T 或-translation-table    建立文件名的转换表,适用于不支持 Rock Ridge Extensions 的系统上。

(3)genisoimage、mkisofs、xorrios几个命令的区别

说起genisoimage和mkisofs,其实里面是有点故事的。

最早的时候,Linux系统使用cdrtools工具来管理iso及光盘,mkisofs是cdrtools里面的一个工具,后来cdrtools更好了了授权许可,从GPL修改为CDDL许可,开源社区又推出了一套基于GPL的工具,cdrkit,mkisofs也被genisoimage去掉,现在系统中的mkisofs实际是genisoimage的软连接:

[size=1em]1
+ A. S" j; J  `! J6 q( Z% T
[size=1em]2

( y- s( B7 k) y3 J
[size=1em]3
4 w' a6 u( G' R* |9 g% T
[size=1em]4

5 G2 m' {9 G1 R, b- e5 I* d1 V. }
[size=1em][size=1em]ls -l /usr/bin/mkisofs
1 R" u: q% h# x, j6 K, x1 m[size=1em]/usr/bin/mkisofs ->/etc/alternatives/mkisofs3 J1 \6 q/ P0 F# |6 O# s4 f
[size=1em]ls -l /etc/alternatives/mkisofs
& [0 M; R0 s. K( P- h& _: W[size=1em]/etc/alternatives/mkisofs ->/usr/bin/genisoimage
: v: I& D) J# I/ ]- h
7 T- @7 D7 n: d3 x9 i$ h

' U, I% {6 z7 t# Y1 z

  _% |% Y: A/ i  t, U7 y

xorrios是另外一个比较流行的制作iso镜像的工具,并且有一个参数-asmkisofs可以和mkiso命令兼容。


- w/ A( Q1 n! i  x/ y
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 23:50 , Processed in 0.068928 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表