找回密码
 注册
查看: 3731|回复: 0

CentOS7全自动安装光盘制作

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2016-11-20 13:21:34 | 显示全部楼层 |阅读模式

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

1 复制光盘文件

1)挂载iso镜像

创建目录用于挂载光盘:

[size=1em]1
  M% E8 N8 h1 h  ]* i0 c/ |6 {
[size=1em][size=1em]mkdir /root/centos74 m& I* x5 o; ?0 C7 r; q
: X' g$ ^7 D, H# _6 C
* |0 d  N" ?& v% R% J

& V0 a+ s  G$ o

挂载iso镜像

[size=1em]1
% d7 p, K) n; m- B
[size=1em][size=1em]mount -o loop CentOS-7.0-1406-x86_64-DVD.iso/root/centos7/ A4 |8 H; y9 n
% n, U3 P7 V8 s6 m- z. w1 |; r8 l( j3 v

, p4 a. q3 x6 y) i" D0 C
  {1 {1 y& k: u$ K. b7 W

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

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

首先创建编辑目录:

[size=1em]1
/ c, t, J/ b) Q3 _, X& I; ^6 w, _
[size=1em][size=1em]mkdir /root/centos7_iso
' H1 v4 B; ^+ ^' `
8 |/ N- a, e5 o

( U6 u) v2 Q' E4 i* i$ O( B$ S6 S

1 F: Q- S/ V) _. H+ y8 ~  Z

复制光盘文件:

[size=1em]1
/ |; C$ P2 {" b. M3 y$ \8 `
[size=1em][size=1em]cp -rf /root/centos7/* /root/centos7_iso/
  L6 |+ G2 v) r6 M# v: B8 M' a& L$ t
. H1 Q- Z7 y- E7 X1 P( d
  t4 Q; V* v. g" C( R

diskinfo文件需求单独拷贝下:

[size=1em]1
9 D2 ]" |8 J7 }* j5 G
[size=1em][size=1em]cp /root/centos7/.discinfo /root/iso& `1 W( m/ Y' L8 j# q$ F
; x& W: w/ u# y2 |& s+ d: W
: ^; f  N2 y7 i% O2 B

% g2 f+ X( e& E6 h& o. \

2 编辑ks.cfg文件

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

[size=1em]1
! U' k# C0 G& ^# x# O
[size=1em]2
! F+ v% W- i! l8 _, L( y
[size=1em][size=1em]cd /root/centos7_iso/isolinux
+ u3 d# w/ B% S[size=1em]vim ks.cfg! J/ u5 i! [2 M$ u; {
0 M' z; h! g8 {- L2 ?
1 E2 \" V' x6 L$ Z9 d

# [0 Z) i7 l% Q) c' c7 g8 P

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

[size=1em]1
8 I# D0 x8 r+ F% l1 t
[size=1em]2

+ }1 L& k: M. V3 w, n& O
[size=1em]3
# c5 ~; X$ K# V* D8 i8 p& j' O
[size=1em]4
0 g- T. o* q, v) ]: K; n1 J8 K. Y
[size=1em]5
- p- `3 M1 x8 e# @. E# ]1 \
[size=1em]6
8 J% A9 Z) a4 i9 I) {+ ^
[size=1em]7

  V$ {1 C+ }: K5 K
[size=1em]8
7 }0 _) K) K7 m# d# y; c# ]7 @6 U; }
[size=1em]9
. n5 C: }6 p5 y/ U0 p/ K
[size=1em]10
: W+ \3 L2 A6 C& U% S0 V( x3 c* F
[size=1em]11

1 |& N$ D- i$ o6 e% I" u9 s
[size=1em]12
: w0 O! W$ z" z; E8 T" y
[size=1em]13

. _6 [& K0 j! }' }9 s
[size=1em]14

8 l( u( {" Y7 E; |4 d" P
[size=1em]15

  r7 i# }4 v5 G0 N
[size=1em]16
# q. X% e: P4 E; X  I/ K
[size=1em]17
) i' ^$ h; m) F& q( ?. V
[size=1em]18

% X  c) ~! U* _, a* ?( {* W+ |
[size=1em]19

) D; G! D4 S+ i% Z  p& S, `- @
[size=1em]20

4 L7 n3 Z2 S4 k& L, A4 T
[size=1em]21

- o8 f7 w3 w0 ]
[size=1em]22

' E) W5 l9 t  B' W
[size=1em]23

3 V2 I7 y4 f- `: I' U  C5 y
[size=1em]24

# i1 E. K3 K1 J' J& q4 n
[size=1em]25
9 X3 N. G" v, Z& _, d4 {
[size=1em]26

" P5 ]4 N5 ?2 ]% a
[size=1em]27
/ n$ F9 T" V' a3 l
[size=1em]28
1 [" Z/ I9 n% h0 z0 b% \
[size=1em]29

$ D: e' S, {, p5 W
[size=1em]30
# v' X* I2 c- |7 U
[size=1em]31

* t3 S# Z. d7 m. r  N0 |
[size=1em]32

0 M4 c1 _/ g: }& W9 ~
[size=1em]33

1 k6 u0 j1 u9 v& C) x
[size=1em]34

2 N, F* r) F& R) s+ P( d
[size=1em]35

5 K( `" H0 O- c" C
[size=1em]36
. B4 W7 |2 G" a( k- O1 ?* @' ?
[size=1em]37

3 t, ?* O; }( {1 X% ]
[size=1em]38

- J( S7 A1 s3 @& l
[size=1em]39
* [) N* [7 Q3 {! {+ u6 r- K1 k8 r
[size=1em]40

3 @5 h7 j* I# H. z) W6 c
[size=1em]41

3 @8 [5 o, c/ ~' C
[size=1em]42
/ G3 ^( r5 q- K* E* h+ o
[size=1em]43

$ a8 ~% G$ O) i' p$ n" X4 ?5 R
[size=1em]44
8 T3 [4 I3 X/ o, r2 B/ \
[size=1em]45
& w6 g0 [4 A& R$ k( I2 I3 W
[size=1em]46
; L* e3 k( C% E9 ^4 c' b8 H( `/ X
[size=1em]47

+ C7 B% E2 F) Q, h
[size=1em]48

7 F1 A: B7 t% w4 o7 I
[size=1em]49
% ?% z) W9 X( S# I8 Z2 W+ c
[size=1em]50

+ C* \* q) S2 z7 I; z. e
[size=1em]51
  C" q7 A! e( V5 |
[size=1em]52
2 f) k& G5 D0 O! \! X* ~
[size=1em]53
( R& @3 l% W% C7 P; {( A
[size=1em]54
( }5 K' ^7 J8 P) |
[size=1em]55
% _( a9 k$ {6 x0 ^+ `( K
[size=1em]56

% M( v$ b2 d8 N( p; ?" {! H
[size=1em][size=1em]#version=RHEL/CentOS7 by xiaoli1100 h; N" \" {7 @% _9 P8 f% J( E
[size=1em]install* \+ u6 c- i4 N2 `
[size=1em]# Keyboard layouts
9 a, e) Q8 a$ s9 F& Q- `( R) Q* _' O[size=1em]keyboard 'us'8 T- S8 k- G1 y5 N
[size=1em]# Reboot after installation* W! x$ }# L* o# C! g
[size=1em]reboot
! i* R( n/ z( k% p: X[size=1em]# Run the Setup Agent on first boot
- _3 m7 j  _. P' j8 F; F[size=1em]firstboot --enable8 t( Q9 W. ^2 p  c) ~' B% P
[size=1em]ignoredisk --only-use=sda
) K  `* W2 q, x- S- s. Y[size=1em]# Keyboard layouts, Y' x: |" o% ?% c5 t, z, B& O% D  l
[size=1em]keyboard --vckeymap=us --xlayouts='cn'9 p, c! E4 G/ ^; q8 g
[size=1em]# System language6 @9 I' }: l4 _" z4 c2 D
[size=1em]lang zh_CN.UTF-8) s6 E9 d3 O- P; j2 l
[size=1em]# Network information
# u+ l, L# O% b2 M[size=1em]#network --bootproto=dhcp --device=enp2s0 --onboot=off --ipv6=auto5 k: ?; M$ t) n. |: I0 j
[size=1em]#network --bootproto=dhcp --device=enp3s0 --onboot=off --ipv6=auto
" N* Z" a& x/ p[size=1em]#network --hostname=localhost.localdomain
: B" ]# G) E; l2 E4 h[size=1em]# Root password- J' _/ z9 |: Y, c4 s  [
[size=1em]rootpw --iscrypted 111111111111111111111111111
' M3 l7 q& {+ _# U- S1 N* b$ a[size=1em]# System timezone. l/ X! Y( r- D8 m% P
[size=1em]timezone Asia/Shanghai  Y% ?) }5 _  X/ v  h, N
[size=1em]# System language
0 D  I( X) _2 x[size=1em]lang zh_CN/ a, T( C" f) Q- g$ X  R
[size=1em]# Firewall configuration3 v! V+ |, c" |/ u) }- Z
[size=1em]firewall --enabled --ssh8 y9 H, c* G, c( L
[size=1em]  
4 v/ m- ^9 C% V0 b[size=1em]# System authorization information; z' j# L; `, _7 f( [- s+ F; C
[size=1em]auth --useshadow  --passalgo=sha512; R: N6 ]( w/ \
[size=1em]# Use CDROM installation media. @' L  V. k- O# O
[size=1em]cdrom
" b' f; F; }+ b+ l[size=1em]# Use graphical install6 P8 x/ Q% R% m8 k  V; q
[size=1em]graphical' g8 ]4 d5 k" z
[size=1em]# SELinux configuration* w7 A' l6 v" f" v5 Y( d5 K
[size=1em]selinux --disabled- w6 J, p9 q$ [* N& n% b
[size=1em]# Do not configure the X Window System* `: a9 `, K- S
[size=1em]skipx5 t" d& J/ g1 w6 r& l9 ^5 `6 w9 y
[size=1em]# System bootloader configuration
8 @1 v2 o. _! K6 ^! k4 n- B# N) K[size=1em]bootloader --location=mbr
  P4 r" d3 W) r! ^[size=1em]# Clear the Master Boot Record: B2 V* p2 Q% X4 b& S
[size=1em]zerombr
) }* I$ I+ O  o7 ~6 s+ L* t2 ~9 W[size=1em]# Partition clearing information
: V5 q% j# s, ?+ J/ e8 i[size=1em]clearpart --all
6 D+ O8 s7 j5 I4 Z. q' b[size=1em]# Disk partitioning information
  v( v8 T  x0 T8 W7 ?[size=1em]part /boot --fstype="xfs"--size=5004 W" x/ P5 k( @; M, c' s4 B
[size=1em]part /boot/efi --fstype="xfs"--size=500
( ]6 f  e4 o) E: H* }& |[size=1em]part swap --fstype="swap"--size=160006 R8 A* A. N" S% a# e5 b- k0 z& }" ~
[size=1em]part / --fstype="xfs" --grow--size=1
! M) R% a, e1 s$ T/ Q/ o[size=1em]  9 M$ T6 E: O  |& O; A. m/ K3 Q
[size=1em]%packages; }8 V9 K1 T6 l  Q
[size=1em]@base" g7 T9 R- T9 j( b
[size=1em]@core3 `8 ]# t" O& ?7 x
[size=1em]@development
  X/ l% Q8 G9 _. S  B[size=1em]@hardware-monitoring- W  Z4 ], |9 w& N$ o1 c: @
[size=1em]@performance
7 x. V; T0 u, ?+ d[size=1em]@remote-system-management
- w+ S1 \4 l1 ~+ J" P* K6 \[size=1em]%end/ Q2 c1 e7 N# k

. Z0 r: _( \5 o  W7 ]
0 J# U% A2 @: b8 N/ L
0 n' d4 I! J4 H" M+ i5 I' G* ]

$ F& U, k3 `: @( Y7 U

注意:

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
9 a7 M4 U4 N1 K
[size=1em]2

: O2 x: K% Y( V; K5 R- t1 M; U
[size=1em]3

/ }# ]: o3 s* k3 n$ ~# X) T
[size=1em]4

& a& B1 J8 V$ P! j' _' G
[size=1em]5
6 E: E* N" q1 Q9 p8 r4 M, [) ^  J
[size=1em]6
9 T5 Q, O; l' r
[size=1em]7
9 e8 X- R4 {4 w& Y1 j: f0 ]
[size=1em]8
* w4 T" }/ Y/ N( c# S0 K
[size=1em]9
* Z7 s$ E  ?* q/ y
[size=1em][size=1em]label linux
* g% K; ?1 }. Z9 @, q- ^[size=1em] menu label ^Install CentOS 7& D& R6 b7 F0 u' a& Y5 T3 N$ X& i
[size=1em] kernel vmlinuz/ ?+ P8 Z: x- `2 A
[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 quiet8 I  x) i  l8 v/ n# i
[size=1em]  
( ?+ \% @& g1 k0 T; k+ u[size=1em]label custom( b% P0 E' z, m% x  {
[size=1em] menu label ^Custom CentOS 7 by xiaoli1108 D; Q# H+ h. G- }
[size=1em] kernel vmlinuz
( P8 d: G) u( k* G: b6 i[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 inst.ks=cdrom:/isolinux/ks.cfg
! D# s4 m5 {$ i2 _( q. ]
. `, [. H) |! ?6 n1 f' k! Q& g
) A5 U5 J3 O, N5 j& l; u8 s

! F" `1 }# \9 ?  ?* u/ [0 k  t

注意点:

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
6 N1 K6 P. v& q+ Z" F5 `! ^
[size=1em]2

; P/ S4 r, R$ Q% @. P1 W
[size=1em]3

! P7 V; X! H; w% {& W
[size=1em]4
2 S5 C" C' |( i+ L9 j2 c
[size=1em]5

1 s( M$ G# z# ?% F- S/ \1 J4 Q
[size=1em]6

$ W7 U+ |0 a" D! f; h$ v# h2 N
[size=1em]7
. E+ \8 M. T- y! x2 C
[size=1em]8
* J0 Y( I9 t3 X
[size=1em][size=1em]menuentry 'Install CentOS 7' --class fedora--class gnu-linux --class gnu --class os {* H7 n; L9 f4 x! ~3 Q. N
[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CENTOS7 quiet
4 c2 \$ T* l% y1 I, v% F[size=1em]       initrdefi /images/pxeboot/initrd.img
6 i1 n7 P! e- r2 o6 a/ x[size=1em]}& c. \: A9 n, s) n
[size=1em]menuentry 'Install CentOS 7 custom byxiaoli110' --class fedora --class gnu-linux --class gnu --class os {
5 M; r* j' P& Y( c" S9 P[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.ks=cdrom:/isolinux/ks.cfginst.stage2=hd:LABEL=CENTOS7 quiet8 l) {( F2 K. U7 G& \/ S* ~
[size=1em]       initrdefi /images/pxeboot/initrd.img
* W/ J4 }/ V6 |6 u4 T, j[size=1em]}0 a4 o: `/ O6 \8 ~8 d

' u+ E* @7 E! O) ~* V) ^

% G9 v* E$ r2 z" ?3 F3 O! X/ \

2 ?* m! Y. [  i6 \" g$ y  T& |: E! f

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

5 生成iso镜像

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

[size=1em]1

, x) i* u6 }( v7 \8 U
[size=1em]2
8 m4 z* J# o9 o" u; M$ W4 D
[size=1em]3

& t5 U8 F# I8 Q$ m
[size=1em]4
1 n7 t+ b# Z8 X" x  d: M9 s+ a/ N
[size=1em][size=1em]genisoimage -v -cache-inodes -joliet-long -R -J -T -V CENTOS7 -o /root/centos7.iso    \/ _: [2 m$ q, G1 H1 _. k% R0 b
[size=1em]-c isolinux/boot.cat    -bisolinux/isolinux.bin      \# T) x, S0 v" v* |( f5 u$ j; X
[size=1em]-no-emul-boot -boot-load-size 4-boot-info-table    \
& ]4 ^4 d+ u" }' F- o+ H: }[size=1em]-eltorito-alt-boot     -b images/efiboot.img       -no-emul-boot .
7 _4 U0 A# C% ^% g  n+ k
- U+ N1 k' \4 q, \# C( n7 Z" _

' }- J' f' i' }* A8 z* @
/ X$ ~8 b  {: _6 Q) Z& ?, \, w) H6 f

, }, N1 ?/ u8 {' H

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

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

0 W2 r* a, q0 V9 w8 Z% A7 w/ [

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

! ?( _2 s9 h% O3 u( h  ^
[size=1em]1

/ V! n- V+ j$ j) y" ]: X  b
[size=1em][size=1em] -eltorito-alt-boot     -bimages/efiboot.img       -no-emul-boot
3 w7 U1 u+ c* s$ q% V6 O3 a6 C5 B: ^
  B! o+ T- I1 N. `6 C; l/ \% b6 J
# c- n9 w6 ]2 X; _2 T0 [
8 b& ?. h' M  P: X& D5 [, ~

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


, C  U! u5 X2 V. q  X

(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
9 d* D* X! {! k. }8 c
[size=1em]2
) ?5 W1 ~3 F6 W, o0 l
[size=1em]3
4 T& Y! Q# u: r, H4 h# V
[size=1em]4
# y: u; C' q# e+ I8 Z
[size=1em][size=1em]ls -l /usr/bin/mkisofs8 c+ k+ M; o" b$ {3 d% R# m
[size=1em]/usr/bin/mkisofs ->/etc/alternatives/mkisofs
, x. ^1 {0 d; a2 E9 \[size=1em]ls -l /etc/alternatives/mkisofs2 g, G4 g' l, ?/ ^. [' {7 t
[size=1em]/etc/alternatives/mkisofs ->/usr/bin/genisoimage
2 G- u3 q3 L( _4 P* d# Z1 P( e1 r, a! u/ ?$ B0 L( S8 U4 I, |

" a1 _7 G+ ]5 l3 u) X. z# O
& U7 ?) q0 S( {

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


. S9 p7 k) C7 l7 p# n' K2 p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 03:22 , Processed in 0.034482 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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