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

CentOS7全自动安装光盘制作

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

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

1 复制光盘文件

1)挂载iso镜像

创建目录用于挂载光盘:

[size=1em]1
+ e7 ]- O1 N" |0 Y" ^- J4 {! q
[size=1em][size=1em]mkdir /root/centos7
% _" y1 C+ \: c: b* q" [0 t4 @/ y( _1 M7 U0 P- e1 t
  Q) V5 b! |# O

' T3 {9 @) J5 M

挂载iso镜像

[size=1em]1
! Q9 P+ k$ n* O1 ^9 ~
[size=1em][size=1em]mount -o loop CentOS-7.0-1406-x86_64-DVD.iso/root/centos7
9 z% O' X+ v) F7 k0 r- A- @6 M& Z; ~9 r( Z: j7 }

- i' W* k! B$ f% `& P
0 P# o3 q: F; q; w, F- I( |

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

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

首先创建编辑目录:

[size=1em]1
; T# }) I+ j1 _( `7 N$ [
[size=1em][size=1em]mkdir /root/centos7_iso
5 W, Z& _- X3 m, ]8 }. \6 S; }2 z7 G6 ^* n0 C
3 s6 g+ }1 j, U$ N8 k& V* i

+ Z8 S! J, o) T8 V1 Y2 Y* v

复制光盘文件:

[size=1em]1

; e1 y1 h4 w4 L8 y
[size=1em][size=1em]cp -rf /root/centos7/* /root/centos7_iso/8 W$ t7 ^( `6 V3 x, Z/ e3 M" P) |4 X

) `5 F( v" P9 K

, l/ |" X8 t- O1 z) Q
% v0 C4 v- R- m6 m4 V  A

diskinfo文件需求单独拷贝下:

[size=1em]1

# x5 B3 R+ \( l& n7 i
[size=1em][size=1em]cp /root/centos7/.discinfo /root/iso/ G) ?2 y' Z! y  j' [8 V

; U# q- K- |% ?# h' U" Z

% \$ e7 Y1 ?# G
2 m& L  {( ~# D

2 编辑ks.cfg文件

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

[size=1em]1
' ]- X8 a0 q0 \: M# Q8 D5 |2 L
[size=1em]2
( w! }* l% e5 l% W) S& A
[size=1em][size=1em]cd /root/centos7_iso/isolinux
+ w$ b1 h& y' H+ @- U  o[size=1em]vim ks.cfg
- x- V6 V, s2 X  u, d) b) k* b% `$ _, U+ ?. F% E+ o, R

) a# X* d0 G  f4 R0 j( Z
8 J+ z7 E% ~: }3 Q

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

[size=1em]1
9 T8 ^& v. z3 \7 x
[size=1em]2
# l5 r( }& N' O0 y: M; L, ]6 E/ I9 h3 T
[size=1em]3

5 |3 s! j! u3 n1 e' J9 j) q
[size=1em]4
0 T' \( T: p( M* R3 I
[size=1em]5
  U  A! D* T" ^' f, {2 c
[size=1em]6
! Y$ t" }/ O, F% o
[size=1em]7

2 r+ d, K# r7 W5 U8 k
[size=1em]8

& w8 j. a2 b/ z% q
[size=1em]9

+ B& t7 ?2 b6 Q4 A* D! r# d
[size=1em]10
1 ^- Y$ M6 u8 J
[size=1em]11

. O# i1 @  {; X/ T5 U7 F! p
[size=1em]12
, T* }# ~0 F' b, X% x. Q# p: M
[size=1em]13
/ a2 S* a2 |, U3 O: P3 k
[size=1em]14

% r2 T+ ?- D# \- f
[size=1em]15

5 {. V, H% B& Q$ P) b( r, y/ ?" |
[size=1em]16

+ T9 x& V; j% Y9 D- K% ?- I
[size=1em]17
9 |0 c) u0 G& [; M" [
[size=1em]18
0 n6 i2 i0 F" k2 c8 j; Z0 b
[size=1em]19

( D# y0 A% q# O" `7 K3 a  U
[size=1em]20
7 ^$ f# ?( G4 D' ~. r# Z
[size=1em]21
; J$ m) H8 R  s8 l; B9 _. P
[size=1em]22
9 ~  X0 Y5 U, S% A/ L
[size=1em]23

8 S1 s6 Z* n# d' s
[size=1em]24

9 V# r/ V6 g% b3 ], v2 q1 J; _
[size=1em]25

% V' S0 O+ j0 B5 d/ |  `
[size=1em]26
  {: F" _* f2 W0 e. S; {
[size=1em]27

2 J# _; {; z! G6 O6 g7 ]5 w
[size=1em]28

% _$ g0 Z0 }- |8 t+ v8 [; Y( k
[size=1em]29

  A* z3 |9 g: ]( k9 W$ }  q
[size=1em]30
# N, P8 U  X2 k- a
[size=1em]31
. R0 }4 O5 R) X0 A% K
[size=1em]32
! ^- h. P( \6 B, E
[size=1em]33

% v% f2 I' u! A( B: Y' R- l* W% x. f
[size=1em]34

2 s+ c1 B7 g# j
[size=1em]35
0 `/ ]* z: m  K3 j
[size=1em]36

( p) s' y+ N/ p0 h  c! \  l
[size=1em]37

5 w/ g# G" P. t7 I% y3 h' ?
[size=1em]38

" o$ f, M# Y( J* s- F
[size=1em]39

( S* s5 n2 l3 _$ I& Q/ |
[size=1em]40

1 T- g0 @% V4 y5 i
[size=1em]41

% D  Q2 k0 r# v. ]/ S0 c' @
[size=1em]42
5 h. y5 I) E! u8 H: O
[size=1em]43
  y0 G, l" j; A& R
[size=1em]44
  S8 [3 O/ d3 B
[size=1em]45

( `* c4 v' L2 S$ f
[size=1em]46
7 j# o- p" n+ A+ _
[size=1em]47

  X& B. A& W1 M9 G! H7 E
[size=1em]48

. d6 E5 B- _- f5 u; `
[size=1em]49
3 e: b* Q1 z7 c3 o6 J
[size=1em]50
4 M% G0 I7 F# T, P' K. z- A
[size=1em]51

- i( y$ k: s3 J  ^4 o
[size=1em]52

! a7 Q' Q  ?: X% y( y3 C% u
[size=1em]53
2 E2 e# t8 R/ ~# B# o; v
[size=1em]54
* B$ r7 v/ V6 {( e; \5 y  e
[size=1em]55
- e  }6 W- c0 Z7 `$ L) s% Q! v" O
[size=1em]56
/ ]) b& d- P- `  P' n3 O; @
[size=1em][size=1em]#version=RHEL/CentOS7 by xiaoli110
' c+ @8 r& g7 }[size=1em]install
- a$ ]6 }. k1 }: n3 @' O7 C$ M( b8 A; g[size=1em]# Keyboard layouts* R$ Z- B3 w5 z* r6 g! b5 e' m
[size=1em]keyboard 'us'  r  w/ O/ l4 ], h
[size=1em]# Reboot after installation3 y, u# A% y% Y% r' P9 [* z! x
[size=1em]reboot
$ d6 G4 m* y/ m[size=1em]# Run the Setup Agent on first boot
- O7 m/ |. p0 B' F4 M1 O[size=1em]firstboot --enable, H- f+ \# C1 E1 @. O# G
[size=1em]ignoredisk --only-use=sda
' t: h; f" x  M7 R+ M4 W" L' \[size=1em]# Keyboard layouts
% I; W& j2 v8 F$ ~: i  G- j[size=1em]keyboard --vckeymap=us --xlayouts='cn'
' v# |/ |6 @0 Y. R# x: t* y- n+ W[size=1em]# System language
0 ~; O+ z3 U  {* O2 C2 k7 t0 a- t[size=1em]lang zh_CN.UTF-8+ R- M/ h1 ?& X. @) P! Z" T* O
[size=1em]# Network information% z5 U+ F8 k* d3 \. `
[size=1em]#network --bootproto=dhcp --device=enp2s0 --onboot=off --ipv6=auto4 D: N! \4 s& y3 K' S* w
[size=1em]#network --bootproto=dhcp --device=enp3s0 --onboot=off --ipv6=auto
, b/ x  a( f) X[size=1em]#network --hostname=localhost.localdomain
% \; @- i6 H/ I0 W6 ~[size=1em]# Root password
. f5 O& B! s" [[size=1em]rootpw --iscrypted 1111111111111111111111111114 A2 C" G- E0 _, b1 D% u
[size=1em]# System timezone. R( I  x/ X% f; X: A5 T1 h
[size=1em]timezone Asia/Shanghai; y7 m/ [$ }8 u4 ^) K4 Y
[size=1em]# System language8 U9 |0 |7 M/ s: B: a) D& E7 L
[size=1em]lang zh_CN( W5 j/ t# H' k
[size=1em]# Firewall configuration, c) c! e0 |0 }5 G5 J$ q7 S7 |
[size=1em]firewall --enabled --ssh
1 M9 i% f( e& X2 Y; V! v0 C' @[size=1em]  9 e( c, e# F* C4 J+ T+ F6 \
[size=1em]# System authorization information8 |% E* A& ~5 N
[size=1em]auth --useshadow  --passalgo=sha512
8 W; f, B% Y! x$ X1 |! H6 Z[size=1em]# Use CDROM installation media$ ]+ i2 W# Q( J' L' t
[size=1em]cdrom5 q% U- \& h9 }% i9 x1 U
[size=1em]# Use graphical install
' |0 F/ A! K6 y+ L$ g/ P6 v& |[size=1em]graphical
' c2 Y4 F3 F2 Y6 Z* Q! D5 M[size=1em]# SELinux configuration
" ]$ s+ e5 b9 A  W: F5 F[size=1em]selinux --disabled
7 O% y2 }! s6 }# _' n4 K- D[size=1em]# Do not configure the X Window System
  n$ G% z% |: V' m[size=1em]skipx5 a( @5 x3 H, F- o6 T+ H& D, H6 ?
[size=1em]# System bootloader configuration: y$ I! @) p" b) T
[size=1em]bootloader --location=mbr- O8 k0 t  q- d6 h# t' B: _
[size=1em]# Clear the Master Boot Record& J- _! E# z- |* y6 ^4 l. {
[size=1em]zerombr
  l; @* p+ H8 t% f[size=1em]# Partition clearing information, m2 a& |& U2 z+ e1 Y" D( G6 K0 C
[size=1em]clearpart --all+ n( U' D2 u' W' a( f4 g
[size=1em]# Disk partitioning information% r" d# L- R( m6 w+ X( Y! F6 \
[size=1em]part /boot --fstype="xfs"--size=500
) q1 C# W! m& E* m. I  A[size=1em]part /boot/efi --fstype="xfs"--size=500
: r/ J) w, h9 H& K& I8 A. Y1 \" C[size=1em]part swap --fstype="swap"--size=160004 Y6 d: x0 ^4 |" B$ E* l! x- u' S5 ?
[size=1em]part / --fstype="xfs" --grow--size=1# Z$ g! x/ o6 F! t5 ]) |2 Y$ V, E
[size=1em]  
- k* q; Q. z+ d0 V1 v; i[size=1em]%packages
2 q0 c; S$ |: g) V, W2 V+ L+ X[size=1em]@base! Z: k& d9 k0 j6 h) H
[size=1em]@core
2 }$ l; Y) X2 `' c% Z[size=1em]@development
9 f* D9 M; Z7 Q0 b) H/ Q[size=1em]@hardware-monitoring4 K, Q. }7 S& r6 ^, x; D
[size=1em]@performance
7 t( B8 D. p; y[size=1em]@remote-system-management' ?4 R1 a: l5 z( M
[size=1em]%end
+ k, e/ R5 r+ [& {; b; O. S( _  E6 V" s; d& p
5 B+ l/ y' U- o' a& F8 g" k6 ^4 g) x
' ]8 V( `$ G: g8 Q$ j! ?* ~

; D* C; O" L3 I" g

注意:

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
8 a) @( `/ K7 [1 q
[size=1em]2

) w" A6 x( S  R6 x8 }' I7 _  m* o
[size=1em]3

/ H; w; Y9 Q. [6 G
[size=1em]4

0 M( T0 ^9 a1 F: f' z" \+ F
[size=1em]5

9 H0 J8 R8 ?( s; J  O. X, h
[size=1em]6
* |, o: X5 E: ^* ^6 w6 M7 P' p
[size=1em]7

$ t# s) v; K+ X
[size=1em]8

& Z* l5 q* c: H
[size=1em]9
2 U  w8 C& k9 ]9 w* E+ z
[size=1em][size=1em]label linux" p% Q0 h$ A: Y& j
[size=1em] menu label ^Install CentOS 7
2 F  C9 ?6 h& O7 O  g9 @! ]$ I[size=1em] kernel vmlinuz
- s: _$ F' n, M0 x0 e% K# ~+ D[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 quiet
+ A( I/ {. \* l2 J% j2 P( w[size=1em]  % j# W& s7 c; `! v/ w: F
[size=1em]label custom
, H5 X, k6 r( ?6 ~- }* h[size=1em] menu label ^Custom CentOS 7 by xiaoli110
4 v6 {8 m# ?6 e( i, P! h9 h2 m. P[size=1em] kernel vmlinuz
# `2 N& {- B) u' b[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 inst.ks=cdrom:/isolinux/ks.cfg
3 l, a$ r8 b' ~/ Z, Y6 L( G- {1 M

3 ^  h4 m9 m+ o9 w5 l' ^9 @7 ]
/ h6 @! v/ N  K% E: L) M' m

注意点:

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
* N6 W; O% u% \: @4 f
[size=1em]2

& p6 v6 z- {. k" m) K: H) }0 \1 _( `$ X
[size=1em]3

: J5 ]" V: E8 v* G( {6 c
[size=1em]4
6 U0 m* b" K! N! y6 C3 G1 s
[size=1em]5

) z# z5 R0 j  q; r; S1 _4 K+ ?1 c
[size=1em]6
8 [& G4 L( {% |% r' j0 k
[size=1em]7

1 |3 s! r8 R+ n8 M
[size=1em]8

) F4 ]# o  C: F  C7 C7 M( D
[size=1em][size=1em]menuentry 'Install CentOS 7' --class fedora--class gnu-linux --class gnu --class os {) p% [4 B6 N3 O+ V9 \
[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CENTOS7 quiet
$ h3 |, t* i) L1 t5 O( |$ c[size=1em]       initrdefi /images/pxeboot/initrd.img
. K# z; F' k( w. |- ~$ [& X[size=1em]}/ J, ^1 n$ S9 y2 `4 }
[size=1em]menuentry 'Install CentOS 7 custom byxiaoli110' --class fedora --class gnu-linux --class gnu --class os {$ `* j% H- e. u3 |8 j0 t% t
[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.ks=cdrom:/isolinux/ks.cfginst.stage2=hd:LABEL=CENTOS7 quiet* u" s7 s* F$ X$ b
[size=1em]       initrdefi /images/pxeboot/initrd.img
9 _% }  `/ p  ^0 T* ^0 b[size=1em]}) C) u2 F# n* }; v) V' G
' j5 G* Z) `% ?  {2 X/ _

1 T$ A3 p: z3 @6 p* g/ l4 [8 I
: }& s: G- M/ N

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

5 生成iso镜像

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

[size=1em]1
! a! E; l8 j' y+ g! o
[size=1em]2

% n( a; J1 W) V1 f
[size=1em]3

+ r) c5 h, W9 _# Y) `7 N& |. h7 x5 c
[size=1em]4
. j- N' T8 k4 o, B
[size=1em][size=1em]genisoimage -v -cache-inodes -joliet-long -R -J -T -V CENTOS7 -o /root/centos7.iso    \
2 T2 u, p% F% p+ ?[size=1em]-c isolinux/boot.cat    -bisolinux/isolinux.bin      \- L: ?3 O! b; z
[size=1em]-no-emul-boot -boot-load-size 4-boot-info-table    \( X4 }- q( R3 I
[size=1em]-eltorito-alt-boot     -b images/efiboot.img       -no-emul-boot .# J7 G/ `" {: x8 d6 N# N

: O% t1 |! i" _& F  K
3 _9 N+ i- F. S. k  d: k% [

# w$ r6 i3 o% N0 S, q
2 y' r5 M# R( w  w# y9 h% v

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

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

$ @& O' p4 B+ L. H9 {

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


1 o  ^7 p1 u, {. U( n$ i/ [
[size=1em]1

; x  h* z3 P. i2 Y% m0 E
[size=1em][size=1em] -eltorito-alt-boot     -bimages/efiboot.img       -no-emul-boot
0 \0 J' V- x' s* C% B+ s) H5 J4 b1 u) I+ I
, k/ h1 e! b2 F* k& ]8 q9 l

# N8 g7 b& e" y# o& k# r

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


2 O1 Z! T, p/ m: m% G

(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
4 G4 C- {9 l, n7 Q
[size=1em]2
# e% f; w2 H! _) U( \. Q
[size=1em]3
& N  {* g. b- d
[size=1em]4
: X0 ?4 P0 d( {
[size=1em][size=1em]ls -l /usr/bin/mkisofs
1 p+ C/ W6 j3 y- N6 b+ M[size=1em]/usr/bin/mkisofs ->/etc/alternatives/mkisofs4 C4 l  z: m2 h
[size=1em]ls -l /etc/alternatives/mkisofs4 I  P2 V; w- Z3 {" W& v- B1 m% e
[size=1em]/etc/alternatives/mkisofs ->/usr/bin/genisoimage6 k- h; H4 o1 v0 _
+ o/ W5 e! l. d; @8 t5 A  {& ?
1 G6 C/ ]( y  p" c& G7 l  T

; i: m( e" @0 S0 W& I9 y

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


0 g) u; q. g- p& f3 g0 P8 f9 e' I
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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