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

CentOS7全自动安装光盘制作

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

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

1 复制光盘文件

1)挂载iso镜像

创建目录用于挂载光盘:

[size=1em]1
1 I6 A! A( n3 a, D; }
[size=1em][size=1em]mkdir /root/centos70 U# M7 }- O4 [) h% \

+ S) k' i1 @' i$ e3 O4 B
6 F4 ]: s! j! [% j1 a. S* m6 H  B

$ q; W/ t0 t/ m" Z4 Q  m

挂载iso镜像

[size=1em]1
" H; r3 B0 ~. K* b  Y4 Y% X6 Y
[size=1em][size=1em]mount -o loop CentOS-7.0-1406-x86_64-DVD.iso/root/centos72 ~, v0 ?9 s& \: A5 [. m2 M
: y1 c1 A, ?9 W

0 s" S  r/ ~3 v6 ?
( z) _" Y, I' X& m  \

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

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

首先创建编辑目录:

[size=1em]1

* y; |$ q# |- n7 z
[size=1em][size=1em]mkdir /root/centos7_iso
, u& r) t) j$ L: _6 F
5 F6 [2 n7 H9 A1 |) @) S: J, T

* ?" c( `2 y+ h' p$ j0 L; r" Y
6 U% S4 S( S) }0 I+ k5 M

复制光盘文件:

[size=1em]1

2 V& Q4 o( H$ l1 w8 ~' E
[size=1em][size=1em]cp -rf /root/centos7/* /root/centos7_iso/0 ]+ c  R% ~9 _  r; z& u9 p$ K

  j1 Q4 K- a6 }! R: S
$ ]1 F. r! o. e1 o
1 e* A1 Y( K3 Z/ M1 Z$ m

diskinfo文件需求单独拷贝下:

[size=1em]1
; h5 X+ K+ E4 w$ _; ]5 v! }
[size=1em][size=1em]cp /root/centos7/.discinfo /root/iso
. j" u; O1 g3 P4 `! H  p) S5 {! P1 @) h4 e% ^  r8 M+ j
# }* L/ G. ?/ ^2 t4 }3 m( ]; i

' ]. j& V4 Q  s% v" k* s

2 编辑ks.cfg文件

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

[size=1em]1

: C- b6 X* v! T8 _
[size=1em]2
- m2 R; _+ D0 K
[size=1em][size=1em]cd /root/centos7_iso/isolinux
. M' N# ^3 Y1 J& G0 O[size=1em]vim ks.cfg# V* b# n  S# r( m0 n) v

' K, }) S: i, w4 \9 q

' r8 G. V( _+ `& l# G' A
( H& f* M! L1 r/ C" w9 L) p/ n

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

[size=1em]1

; @' t- O5 b1 P% d# k. S8 Q) P
[size=1em]2
7 C1 A6 s/ o9 |' v/ M6 n
[size=1em]3
1 ]; A8 r2 R8 t. X% C; A, X, V5 Y- ~6 u
[size=1em]4

' n% O2 w( q$ m* L7 h: U4 n" T  |  W
[size=1em]5
& |( w0 A( v4 k1 x1 k% n, j' O
[size=1em]6

$ y- G4 t: I0 I5 D' P2 b" @3 s
[size=1em]7

4 O( u9 x- H$ s' G
[size=1em]8
& {- b& I9 B$ R& `/ X+ p) t
[size=1em]9

+ P& w$ P1 F6 g% X# t
[size=1em]10
& }" a, S4 h# L% d$ ~5 D
[size=1em]11

: Z! Q1 ?9 G) o- `
[size=1em]12

5 C+ M4 [  \( H$ i( f
[size=1em]13

/ K. @' e7 k) }) f
[size=1em]14

0 O6 [0 \9 _$ W7 |+ I
[size=1em]15

! c. `, T' T9 w
[size=1em]16

1 A/ h. j% Z5 z( L+ @& y9 p' M  x
[size=1em]17

! j7 u3 h! |# q/ `
[size=1em]18

' I& k( {! }* }8 A( |9 h
[size=1em]19

3 G9 T( L/ [: _6 g+ Q: p- m5 [
[size=1em]20

. f+ W9 z3 k5 V4 ~0 a7 ]5 Z
[size=1em]21

8 L( i$ y4 E. F; l9 L) R
[size=1em]22

6 ~; J' j5 y" X2 M; q: A; e$ }
[size=1em]23

3 u. e0 q+ ?2 \' N
[size=1em]24

+ m& c% ^: v$ `) [" z" \. c% K
[size=1em]25
7 p& s7 c" E% |. E; `
[size=1em]26

3 U) o' U% r& u3 L9 p/ T- N7 Y8 h  r
[size=1em]27
  s7 H+ G3 J8 A% R8 f& d9 B2 Y
[size=1em]28
( A  u7 J/ Y0 B3 I
[size=1em]29

3 v' c) ~1 V& s5 w( D) J
[size=1em]30

8 i) h8 S  `' K* K: r! p
[size=1em]31
, l: L3 `3 ~8 m* @+ W; n) w( j* T1 A
[size=1em]32
9 T: ~- o4 l$ I' z6 L5 f0 s) ^
[size=1em]33

, U1 l+ O; _6 X# a+ z
[size=1em]34

' C8 k+ }: i4 ]
[size=1em]35

- K- j3 W# A! b, A
[size=1em]36

$ o( _/ D- F; ]+ X  u& i
[size=1em]37

* N3 h  S! A" ~7 Q
[size=1em]38
) P- B  G# R9 J3 g, p3 ^- g5 z
[size=1em]39

  K5 I: M" D' U! ~! a
[size=1em]40
( T, s4 o  ]0 b( ]' L* I
[size=1em]41

2 G; U  j0 f1 E. G+ H
[size=1em]42

$ E7 c' [' E7 q
[size=1em]43

, s0 L- ~6 x7 Z/ F, f
[size=1em]44
+ s2 O& ~$ e& y2 ^  w% D: v7 P
[size=1em]45

/ d4 w+ z  g, o' R; T4 j
[size=1em]46

" {, h* l/ ?# m2 l- X
[size=1em]47
4 A' u- o" c2 ?% t0 j
[size=1em]48

2 ]6 G$ C- R# @) x% P
[size=1em]49
8 Y- W! ~4 T5 p9 a! q
[size=1em]50
# b; U1 s8 D/ w7 ?. B# {. Q
[size=1em]51

4 f" H9 q9 X, b( Q" x, o7 `
[size=1em]52

* f' b1 v+ }* s$ q9 g" Y( v
[size=1em]53
5 u8 W, k. B( n. d
[size=1em]54

% d4 t8 r8 O- P9 N. y0 S0 n- N
[size=1em]55
1 C" W  s) q# M# W
[size=1em]56

# }+ a& {) G: i8 g- [
[size=1em][size=1em]#version=RHEL/CentOS7 by xiaoli110
+ R( T! @' V/ ?[size=1em]install' z5 p  x# q" z+ Y: f2 {
[size=1em]# Keyboard layouts
: B8 \7 t' W* `+ w[size=1em]keyboard 'us'
7 q2 v; ]1 j1 \( q& ?- |8 f% j[size=1em]# Reboot after installation
( c) G/ r/ d3 s2 h[size=1em]reboot
# ^" Z! y2 s+ s* R4 _; E  m[size=1em]# Run the Setup Agent on first boot
7 U5 s: j& W1 z4 ?/ u, g[size=1em]firstboot --enable
4 t4 V, \2 l: M( {1 Z. B! r[size=1em]ignoredisk --only-use=sda; P7 n8 h. x/ {2 k/ g0 [
[size=1em]# Keyboard layouts6 d. z' n* ?0 F0 Z1 P, G3 {. t
[size=1em]keyboard --vckeymap=us --xlayouts='cn'. F  O( {. {- I9 s  g2 k/ O) |3 `4 B
[size=1em]# System language$ T3 m) ~$ P7 b6 F) F
[size=1em]lang zh_CN.UTF-8: U* _+ s8 _4 D" Z& r4 F! [; X
[size=1em]# Network information
* K, w; ~# {5 C[size=1em]#network --bootproto=dhcp --device=enp2s0 --onboot=off --ipv6=auto# R$ `9 q0 s+ k
[size=1em]#network --bootproto=dhcp --device=enp3s0 --onboot=off --ipv6=auto1 E* F* Y& A1 k/ l' t5 R
[size=1em]#network --hostname=localhost.localdomain' R) G4 B, c8 G6 K- J
[size=1em]# Root password! X; J1 f, Q/ [: H; I& P+ X
[size=1em]rootpw --iscrypted 1111111111111111111111111115 m5 f- s) c0 W* X) j+ F
[size=1em]# System timezone, K& u1 U1 A8 U( a% L1 W3 t; c
[size=1em]timezone Asia/Shanghai
! h' L( N( }5 y2 M% m* k2 e6 s[size=1em]# System language: [" s# O, X. ]. Z6 q6 B
[size=1em]lang zh_CN
5 ]1 V9 E0 Z; V% w$ B[size=1em]# Firewall configuration
, [% x$ K  ?  d; F$ Z5 ?. Z[size=1em]firewall --enabled --ssh8 w$ [  D8 M- f! i' k  c; _
[size=1em]  
9 t: m8 n9 F* q& N2 X[size=1em]# System authorization information4 G3 r, H8 D2 r9 V' s( o
[size=1em]auth --useshadow  --passalgo=sha512
& G7 v' |, F% N[size=1em]# Use CDROM installation media1 B; q6 ]7 z4 b: q1 ]. B! ~; k
[size=1em]cdrom
9 \0 B- G* d; A9 `% @# w& h[size=1em]# Use graphical install& n9 z- d" w9 W, u9 I: b
[size=1em]graphical. D7 b" t: N9 i' I: a
[size=1em]# SELinux configuration' L# p% ^* I0 l7 A. i
[size=1em]selinux --disabled
' g- {2 Q& H3 [7 Y1 T" J8 [; F, U[size=1em]# Do not configure the X Window System
2 m8 |: X4 d: _: j4 z' n[size=1em]skipx
" M, q) c; k' W/ L3 B[size=1em]# System bootloader configuration
2 t/ [7 ]. C, ~& b- Q" {5 R  x[size=1em]bootloader --location=mbr+ t% ]+ J$ E1 C3 T5 `* S
[size=1em]# Clear the Master Boot Record& E0 R3 D5 ?# D
[size=1em]zerombr& R2 g: w1 h6 c. n- r
[size=1em]# Partition clearing information
6 k5 y& Y) ?# Z5 F0 c7 u( Q6 o[size=1em]clearpart --all
; q! D( q  N8 G8 V& U3 O" @* b) O[size=1em]# Disk partitioning information% H3 ?8 c: [: y) \  X9 t, ]
[size=1em]part /boot --fstype="xfs"--size=5001 P. J' `) }  X$ a) }  C$ H
[size=1em]part /boot/efi --fstype="xfs"--size=500
1 ~  b0 ^) y! c! r0 a[size=1em]part swap --fstype="swap"--size=16000% M: P# j8 [+ g" C* w! X! g2 R
[size=1em]part / --fstype="xfs" --grow--size=16 k& f8 `' A0 k- @' L
[size=1em]  2 T. s. C5 C3 b% b
[size=1em]%packages7 U- K" z4 h: p# X+ a) U: O+ I/ z
[size=1em]@base8 D, ]8 J/ D7 D1 o8 d, B* |2 N  s
[size=1em]@core
; D3 S+ E) T1 M: F  L[size=1em]@development
( F: [- X5 [8 ~$ O[size=1em]@hardware-monitoring5 e4 w& d0 W1 y  f+ c
[size=1em]@performance. g2 _8 G+ \. u8 h3 u
[size=1em]@remote-system-management  g1 N& ]; @& u9 B7 y4 H, A# V& P
[size=1em]%end; j) T5 O: t' I5 r( `6 x
4 T; n0 A  h2 s- Q! m' T

* F3 N$ F& [; \* Z; t

: {- L5 j' {- O2 e3 O
' P7 X- U5 j6 ~7 f( p$ ~# l  ^

注意:

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

0 Q' [4 Z3 i3 v9 e" S2 u2 {
[size=1em]2

/ E, }% W! P' j- z% m! v
[size=1em]3

1 u/ L2 M1 W2 T: I# U0 _' y7 z
[size=1em]4
( M0 @% U9 Y' |  {
[size=1em]5

/ j: s: A' Y% e- Y# ]2 u/ s
[size=1em]6
) X7 @0 K7 B: S4 p
[size=1em]7

4 N/ {8 R" K4 c9 P6 G
[size=1em]8

2 i# `7 W) T' z# v+ T
[size=1em]9

8 i. @  j+ I) z$ y
[size=1em][size=1em]label linux7 n& A* _% L8 }- Z. b" ~
[size=1em] menu label ^Install CentOS 77 r, L* q, i6 w" v8 G
[size=1em] kernel vmlinuz
$ y& P0 F) _( z, ^' P2 C+ r[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 quiet
) \+ I) _! D! C6 b[size=1em]  / W9 h3 K6 P: E4 ^7 Y' V
[size=1em]label custom( l# F% O7 K3 ^! `
[size=1em] menu label ^Custom CentOS 7 by xiaoli110/ k+ m" o+ p. D) X. k" b
[size=1em] kernel vmlinuz; J  E* w  L2 L6 A- V# s- K. g
[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 inst.ks=cdrom:/isolinux/ks.cfg' M# b5 f, F& n! S0 i
& _+ ?1 W0 x) h& g# `4 C

$ I/ m# X2 h% v

) |% o( [  Y" A- w$ }0 Z' l+ N0 J) ?$ I

注意点:

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

9 Z7 P1 ~* G+ e4 h0 @6 h
[size=1em]2

8 x# E: e% u7 S* ^7 M
[size=1em]3

2 P; p2 T  P5 j/ I
[size=1em]4

- H3 [) F( x" z) M
[size=1em]5
9 F+ _3 u+ T% r6 ^0 l2 w
[size=1em]6

0 {5 n3 P% q9 e0 {9 N7 m
[size=1em]7
0 d) V0 }" E! a( |7 X
[size=1em]8
# e: K9 n- d* z! x
[size=1em][size=1em]menuentry 'Install CentOS 7' --class fedora--class gnu-linux --class gnu --class os {
0 j+ N, ~4 c/ y[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CENTOS7 quiet0 v: Z* w# R* i1 q5 }
[size=1em]       initrdefi /images/pxeboot/initrd.img% G% n; ]. n9 |& |# n
[size=1em]}
  K: u- a- U% P; h! @3 q- S[size=1em]menuentry 'Install CentOS 7 custom byxiaoli110' --class fedora --class gnu-linux --class gnu --class os {- u. q8 C; S+ s. @2 A) @$ P
[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.ks=cdrom:/isolinux/ks.cfginst.stage2=hd:LABEL=CENTOS7 quiet# Z7 L8 Q/ j. g! `4 E
[size=1em]       initrdefi /images/pxeboot/initrd.img
& Q* ]. T( H. Q. |[size=1em]}8 f& _' z  |( H
9 R  t% Q- h: r, d2 f) J9 g0 {

: t5 [9 f6 [: \8 n8 e+ R+ c: ~4 u

) \0 W4 S! G+ r; e2 I) F

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

5 生成iso镜像

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

[size=1em]1
: ^9 t; m; r& P& z0 Q
[size=1em]2
) h3 b  V  T8 y4 o
[size=1em]3

( B5 l# J0 b8 `! N5 f3 x
[size=1em]4
" Y' F$ ]0 U& }. Y$ c
[size=1em][size=1em]genisoimage -v -cache-inodes -joliet-long -R -J -T -V CENTOS7 -o /root/centos7.iso    \
! H7 \! w: F! T) w3 O3 e7 R[size=1em]-c isolinux/boot.cat    -bisolinux/isolinux.bin      \
! B* q' y' I& Q7 J, e$ t/ @[size=1em]-no-emul-boot -boot-load-size 4-boot-info-table    \
8 Y# |' v5 Z4 A; f2 u& x[size=1em]-eltorito-alt-boot     -b images/efiboot.img       -no-emul-boot .7 i. B6 V9 e- q0 l2 r

1 z0 e. J2 p$ b6 }( r0 K% [  H

( ]. L5 w$ J# b9 d4 Z# S2 N

" g7 C5 @& `4 [7 K
+ e. m/ I# }) s/ t: O4 Q/ w

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

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


+ w) i! y+ j, e

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


9 K, t9 e$ \7 r, C* @
[size=1em]1

! J7 L8 j) G* c% V1 u) f
[size=1em][size=1em] -eltorito-alt-boot     -bimages/efiboot.img       -no-emul-boot
: P) w# t8 x! U! U5 r' R; S4 m0 [9 g+ G. X4 T) z( D5 ^

8 \- Q6 v5 @5 ~+ I  n9 @8 V% U$ C

$ w# d' ^% J0 c# |. w

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

! z  e3 _' l( \9 Q4 y$ n+ m

(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
. d* `; _, m" ^3 {' ^* {8 v
[size=1em]2

( F2 O1 N/ s0 v
[size=1em]3
% i& w% ?+ W0 H! i
[size=1em]4
# K% M+ _2 w  T; K6 s
[size=1em][size=1em]ls -l /usr/bin/mkisofs
6 V* C* x( [4 p) ^[size=1em]/usr/bin/mkisofs ->/etc/alternatives/mkisofs
4 Y* F) E2 l* ]) h; A[size=1em]ls -l /etc/alternatives/mkisofs
' P" Q! D; A+ L  W! m6 ^3 e6 M[size=1em]/etc/alternatives/mkisofs ->/usr/bin/genisoimage
. {& v" h6 P  W0 i; m7 Z0 P+ J% S* b
' t0 V6 \) ?. Y' a9 D

: y$ ~" q9 W( F

6 w! ~$ p  t4 {6 P8 V

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

) x, U. J! D7 _" k+ E5 h( p  J# Z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 02:09 , Processed in 0.036425 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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