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

CentOS7全自动安装光盘制作

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

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

1 复制光盘文件

1)挂载iso镜像

创建目录用于挂载光盘:

[size=1em]1

1 v# A& N% f; ?9 \$ h5 {
[size=1em][size=1em]mkdir /root/centos7
! [( q9 f" k' ?5 |4 C- e3 |6 [( [% U5 I1 Q* l" L2 p

& h4 D/ o) x- ^$ t

% g1 x: |( C5 ^2 Y# I

挂载iso镜像

[size=1em]1
. V  h# x" ~' O
[size=1em][size=1em]mount -o loop CentOS-7.0-1406-x86_64-DVD.iso/root/centos7( ?- z; x: m* d

* {7 t" W2 E1 {- f5 T# S& z

2 Y+ i1 o. g# h; ?+ e- O" p

/ {& R2 }3 ^) y: R* M% c3 m

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

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

首先创建编辑目录:

[size=1em]1
4 M% H  T+ k1 Y/ ~
[size=1em][size=1em]mkdir /root/centos7_iso7 F: N( E$ k2 W; Y$ }
4 l! ^9 O9 b- w

1 ]- H- g  ]! U7 x; M1 H# K& i; S
# O) c: }; ?( o6 I

复制光盘文件:

[size=1em]1
" D$ P% Q5 s+ b3 O! Q0 n: p7 e7 L2 j
[size=1em][size=1em]cp -rf /root/centos7/* /root/centos7_iso// k' k" b/ T+ v  e- I1 A7 s, z; Z

8 e5 z3 o4 y4 X& {

3 h2 c- p8 z' J0 T# s% i: w% J

7 P0 p7 K  P% ~4 ~/ G

diskinfo文件需求单独拷贝下:

[size=1em]1

' ?6 {6 ?/ q  t
[size=1em][size=1em]cp /root/centos7/.discinfo /root/iso
; t- R/ L. p/ u  {( T2 l4 u+ p' }. e9 _
3 {: ]! Y! z& E7 H1 F' A
  O$ V! y; f$ n6 O. a5 @* g) e0 k5 G5 D

2 编辑ks.cfg文件

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

[size=1em]1
. L& D! N+ j& l: V, F. Q  ~* U
[size=1em]2

  R' y& e" _" G- H3 Z" t& U
[size=1em][size=1em]cd /root/centos7_iso/isolinux
/ R* C2 X) j. j4 B' u2 g1 Q[size=1em]vim ks.cfg5 @& R; s" }3 |4 F5 M

, ~; n4 d1 @) s; R+ T
4 P4 w+ r: H! P% S) Y# D
) m5 }: R& z1 Z: \. t' L8 r# V) L

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

[size=1em]1
# {. w8 ^" M+ I4 ~4 ]0 p3 Q. H( {2 i
[size=1em]2
4 k; m' R  c3 Z1 v# E! `
[size=1em]3
0 _: s  L, J+ D8 }
[size=1em]4

. R0 O8 p/ i2 M% g
[size=1em]5
8 h+ v2 d# B, H" y# ~
[size=1em]6

0 x, z: ~, I! F$ o( V, A7 j& c
[size=1em]7
7 q3 s& F; ~$ B6 C9 z1 y
[size=1em]8

( b' l6 n  ~! [
[size=1em]9

1 A0 Z/ F' y! C, A1 v
[size=1em]10
* V% r6 l5 ~8 J' O% k$ i& v( J
[size=1em]11

$ M0 A2 V6 D6 [7 P
[size=1em]12

" B* Y: w! y/ i1 V
[size=1em]13
# ~% ~7 f/ a" j9 W; j) P6 ?
[size=1em]14

& x/ d4 C1 g2 o/ S
[size=1em]15
4 r* I  D% `( f( |; i1 W
[size=1em]16
/ ?- O$ D- {7 N. |! N
[size=1em]17
9 Y& u! u3 Y6 z3 M  V! a. z8 N9 T
[size=1em]18
8 B- V0 P# V2 ~4 M$ Z
[size=1em]19
$ N& f% |5 I- W; R7 L6 ]
[size=1em]20
/ K2 h& p. h6 [0 e% J
[size=1em]21

# S  R. ^* h# ?# h- ~: V
[size=1em]22
+ @1 z, {5 n5 e/ {( b
[size=1em]23
" g  V3 Y% u3 z' X# ~' n5 Q
[size=1em]24

8 w' D* ?) x# p- h
[size=1em]25

  t$ w9 F& g# r( u" c! \& G
[size=1em]26

( [4 J1 Z& c5 c2 o" ]) U6 `
[size=1em]27
# f$ B4 B$ j  S
[size=1em]28

0 U, y8 K5 I7 t' ]
[size=1em]29

- v7 v& C+ M3 w
[size=1em]30
4 d- P4 S4 _' O' O. w
[size=1em]31

& G5 O) q$ R8 B$ m- t' u+ ?
[size=1em]32

, H! M# P9 P; q) l+ V
[size=1em]33

4 O+ O. s/ L* ^
[size=1em]34
) E5 g4 x+ b+ H  S3 V9 r
[size=1em]35

  ~/ w/ \) }: I6 ?
[size=1em]36
. E7 n7 S# J( m4 ^6 |0 C
[size=1em]37

4 V$ C# E# U( U7 q4 e8 G# N
[size=1em]38

7 m" x0 H! t& P- L# t
[size=1em]39
# Z# W% ?  @1 w' \, Q/ O; F* \0 B; E
[size=1em]40

" A& _7 p9 f& @' I, K4 d2 S) ^
[size=1em]41
5 t6 {: @8 f  b- H" i4 ?
[size=1em]42
- y/ P3 I; L" V; Y) p. H7 T
[size=1em]43
8 d. h2 Q9 `+ B8 t9 Q) O- }
[size=1em]44

2 I1 E+ D& Q/ E$ S+ ^; g/ h/ W
[size=1em]45

# z9 ~2 g# ^: ~. |
[size=1em]46

0 G5 U2 O# r& P0 O
[size=1em]47
8 f$ E6 Q. l+ Z- L0 _
[size=1em]48

1 y# D' Q4 [: t- x
[size=1em]49
2 _8 p. ?8 `4 {$ Q
[size=1em]50
7 Q! |  P% i& h
[size=1em]51
3 I* i& W' M/ C
[size=1em]52

* U; f0 ^4 X0 L3 r. ]* j9 u
[size=1em]53
$ K! `7 x8 ?' P+ a* q
[size=1em]54

- @5 w) R: B% i/ _! ^9 g  A
[size=1em]55

, X  t3 F( F5 `- e" }, q3 V
[size=1em]56
0 X+ D7 \" `2 P6 [9 k8 w
[size=1em][size=1em]#version=RHEL/CentOS7 by xiaoli110
8 Q9 a: ]1 t$ h/ Z0 |! v[size=1em]install
0 A2 _0 _1 G5 C$ f[size=1em]# Keyboard layouts' _+ H) p' u" z5 Y' X2 m
[size=1em]keyboard 'us'
" ]) Y! M# v, f. V$ A; d9 U0 N[size=1em]# Reboot after installation$ d3 k8 q# d; `
[size=1em]reboot8 U2 W; r! P# y4 s* _+ l6 a* ]1 v! C
[size=1em]# Run the Setup Agent on first boot
1 ~$ Y5 m4 ~% c- F[size=1em]firstboot --enable
( b8 e: {! R4 K[size=1em]ignoredisk --only-use=sda: C1 x! i9 y* d8 v3 m
[size=1em]# Keyboard layouts
. |  e; q) }9 g" i: f" x1 m5 Y[size=1em]keyboard --vckeymap=us --xlayouts='cn': a9 K2 R8 K  y) L& Y
[size=1em]# System language; A- }7 m# y/ m. b0 r% G, r  }
[size=1em]lang zh_CN.UTF-8( X( w9 i' e! k* r! F- Q# x
[size=1em]# Network information- S- g; P" J5 k$ @1 s* Z
[size=1em]#network --bootproto=dhcp --device=enp2s0 --onboot=off --ipv6=auto
$ t  w2 b8 K" g' [[size=1em]#network --bootproto=dhcp --device=enp3s0 --onboot=off --ipv6=auto
2 u- t( C1 L- x' m" g) |0 S( u[size=1em]#network --hostname=localhost.localdomain  w# `& A( T) U2 }9 u0 w
[size=1em]# Root password
, f  a% e$ q+ M, Q$ m. }5 U# s% Y[size=1em]rootpw --iscrypted 111111111111111111111111111
, ~' |  g- V% g! A2 L[size=1em]# System timezone
- I! L- k8 H7 }- W4 v[size=1em]timezone Asia/Shanghai
, \! k% g# [1 \/ B$ S& H8 g6 C[size=1em]# System language5 u6 u- h* M- C
[size=1em]lang zh_CN
. F" z/ j2 q5 p4 E2 h2 ^[size=1em]# Firewall configuration% B0 @6 g6 B) G( U9 y
[size=1em]firewall --enabled --ssh" n# N: O: O# I; J+ F
[size=1em]  
" T7 n) ?/ j; ^% J  k8 y[size=1em]# System authorization information
$ |  u0 h) F3 P2 J6 v[size=1em]auth --useshadow  --passalgo=sha512
. L; X- A' t5 S! X[size=1em]# Use CDROM installation media8 ?/ F) h, U) M5 G9 _9 z4 H! V  s/ q
[size=1em]cdrom
* ^! Z, ]! ^. ~[size=1em]# Use graphical install
6 J( P) x3 h* o1 o0 i8 P[size=1em]graphical
+ c3 ^1 N( e: N+ P, e' O[size=1em]# SELinux configuration- L: N! {- x7 E4 H4 w* ?
[size=1em]selinux --disabled- m* X  \5 x* ^6 B7 l
[size=1em]# Do not configure the X Window System4 Z4 x( E  Y0 B  z( h
[size=1em]skipx
- b1 V3 W/ m* Y. J1 n: c[size=1em]# System bootloader configuration# T+ M4 g5 d: ?, U# K3 y3 A1 y1 H
[size=1em]bootloader --location=mbr
4 G# s2 x- @; j[size=1em]# Clear the Master Boot Record
; U0 y) a0 _, X4 \) _[size=1em]zerombr
3 s* |1 p2 j; G[size=1em]# Partition clearing information- j3 x! a. R1 I1 D0 [( g, b0 t; `% n  U
[size=1em]clearpart --all2 A" ?  A" p+ q/ `$ \& j) }
[size=1em]# Disk partitioning information) x4 _% F; v+ {. ~6 I! o
[size=1em]part /boot --fstype="xfs"--size=500
# d  U- e% f  r  k) I5 U[size=1em]part /boot/efi --fstype="xfs"--size=5001 w4 Q7 I1 p. i9 `. i# \5 v
[size=1em]part swap --fstype="swap"--size=160006 b& h% q  w1 x: B5 z3 d
[size=1em]part / --fstype="xfs" --grow--size=1
3 n$ l. |& [6 c0 N4 ?[size=1em]  9 E! G6 c' w' {. f
[size=1em]%packages
6 p) D. J; |4 v& j[size=1em]@base6 d) q* v2 m# V
[size=1em]@core2 M* E' i/ A0 j1 H' \8 x1 `
[size=1em]@development
6 e1 o$ k% U. B: A! x[size=1em]@hardware-monitoring4 i3 f' C- U" y- B1 P; I
[size=1em]@performance# J  u# m1 ~% l3 b3 X4 W1 s
[size=1em]@remote-system-management* c% U6 m4 l8 s0 K: d/ b
[size=1em]%end
+ }' e# v- g6 o, a& y, [2 t
! u7 B' C: X  u; X; N

0 A) B& D( O0 |% o! o

( `7 s, T$ j2 Z' q6 X; {' `5 l3 Y: r" t& f8 _: z+ F

注意:

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
/ C9 m, P/ e5 J! e
[size=1em]2

. ~1 M  Q' R. q* B. J$ z# ?% A
[size=1em]3
! P2 `" Q* x& `1 [
[size=1em]4
) ~; c4 h& C: ?4 q
[size=1em]5
( T* S9 Y. c" B) e7 b. F
[size=1em]6

* c8 j& H+ b8 H4 I: v  n: ]- _: {
[size=1em]7

) |( f9 k4 K5 H$ y6 L4 b( P
[size=1em]8
4 T( W# ^: Y9 P, H5 Y: s
[size=1em]9
' B" v% ^! E; n6 G
[size=1em][size=1em]label linux' G4 B" u$ d! o# L- y
[size=1em] menu label ^Install CentOS 7' l: p: _/ g( h+ C7 G
[size=1em] kernel vmlinuz. S2 J, T2 D9 W
[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 quiet
* V% w4 \  w3 ^: ^[size=1em]  5 F  Z0 u# d% N
[size=1em]label custom/ c; i1 n7 w1 A( d+ H
[size=1em] menu label ^Custom CentOS 7 by xiaoli110; P. `2 B5 r- P; B/ @( I5 e1 @
[size=1em] kernel vmlinuz
- S4 _3 s7 l6 n9 t/ |( L[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 inst.ks=cdrom:/isolinux/ks.cfg4 ?  o0 d$ c# {+ w4 v7 o- H  g
8 U8 N: `9 q8 I

; O2 U# J$ R$ Z5 o! j" P
0 T/ D9 E4 j3 [$ Z: X$ e  X

注意点:

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
" K4 T0 f; f1 N- Y- k% a
[size=1em]2
& ~7 }) Z3 y& `" t+ K" C
[size=1em]3
7 w7 B3 v2 D+ U) f$ H
[size=1em]4
4 U) _) z/ f( P
[size=1em]5
! i& a; ]9 w* R6 c
[size=1em]6
2 O) s  h" w7 P9 [6 L' B
[size=1em]7

, ~  e7 n4 w; C; k3 d* c# b5 H  z2 X
[size=1em]8
* T7 a5 E6 k4 e+ z5 Z
[size=1em][size=1em]menuentry 'Install CentOS 7' --class fedora--class gnu-linux --class gnu --class os {
/ Q) }, {( B& d[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CENTOS7 quiet
" M& e0 u! u, b9 `' U: C! \- L[size=1em]       initrdefi /images/pxeboot/initrd.img
  |2 `* x  d" ~[size=1em]}
8 M  B( z6 t- d, g' v& a7 ^$ Z[size=1em]menuentry 'Install CentOS 7 custom byxiaoli110' --class fedora --class gnu-linux --class gnu --class os {- L0 p1 v/ J" }# P: {1 f  o
[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.ks=cdrom:/isolinux/ks.cfginst.stage2=hd:LABEL=CENTOS7 quiet
. Y3 L* S8 g9 @7 G* D[size=1em]       initrdefi /images/pxeboot/initrd.img
$ K% e% X& |) _( n[size=1em]}3 g0 `7 X; Q% O' `- G! R

" A8 B( ^# K$ w- q- X

; p3 N; }- l% m* R0 a
% F% z1 F0 e& G( ^% {# P; v

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

5 生成iso镜像

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

[size=1em]1

; a) ~' L2 X7 U8 v2 H
[size=1em]2

/ a  w* H1 N5 {+ p6 X9 u1 B) l* H
[size=1em]3
" k9 q" E& M, F1 y. X, v& f8 Q$ W
[size=1em]4
; f) R7 g$ H' J& j6 i
[size=1em][size=1em]genisoimage -v -cache-inodes -joliet-long -R -J -T -V CENTOS7 -o /root/centos7.iso    \
2 p# X2 z3 s+ X* Z6 m  r* F% B[size=1em]-c isolinux/boot.cat    -bisolinux/isolinux.bin      \% N9 m- }7 b" _$ J2 e
[size=1em]-no-emul-boot -boot-load-size 4-boot-info-table    \
- i; @' M2 E; A: ~[size=1em]-eltorito-alt-boot     -b images/efiboot.img       -no-emul-boot .
4 I/ d, N2 l- k% `6 v. P* I- b4 ~% N2 j3 p) k( ]

% G. c) u# w. Q4 m# v* z
- {, M( M7 W0 j. C$ o

/ k6 _: s# E: k. x2 t+ z9 r

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

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

2 z1 _& N  r) T# m

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

) W7 e8 [8 O  J% C, m# a. u4 w
[size=1em]1
. @( L8 c$ }2 s$ s, W+ O  j* f( u
[size=1em][size=1em] -eltorito-alt-boot     -bimages/efiboot.img       -no-emul-boot: J9 D' G2 K" c- O3 x- m1 t
& D( o5 O1 u+ w1 I# a  d' \& x# r5 p) ^

2 ~3 p6 e: h2 H; i( m" N& k8 _) A
( [4 n4 O9 F* t7 Z( R2 O; _1 k) d5 a- x/ L

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


6 H( r" V5 b9 g9 K& h' 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
2 }5 g* K, I* M* {6 G
[size=1em]2
9 W& A# t/ K% _8 J0 X9 g
[size=1em]3

. p: X4 }" t$ j7 I6 N4 {! {* E
[size=1em]4
3 t% Y" L* l: q; `
[size=1em][size=1em]ls -l /usr/bin/mkisofs
; W+ s# o- a" s) t+ y" R+ `2 t/ o[size=1em]/usr/bin/mkisofs ->/etc/alternatives/mkisofs
! `) [1 v. m% a/ P( I% [[size=1em]ls -l /etc/alternatives/mkisofs8 L, O% d, y9 ]! j
[size=1em]/etc/alternatives/mkisofs ->/usr/bin/genisoimage
+ S% b3 H6 \& {' G# `
1 ?; @( D  A1 d
! B. J' m+ x, p& B7 f6 H
+ l- [1 C% B4 K2 d& ?8 T

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

; a  B  s9 I5 I1 M  v% l) @
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 04:21 , Processed in 0.023713 second(s), 24 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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