易陆发现互联网技术论坛

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

CentOS7全自动安装光盘制作

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

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

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

x

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

1 复制光盘文件

1)挂载iso镜像

创建目录用于挂载光盘:

[size=1em]1

! `0 p' L% X( [6 x9 g2 m- u9 A9 H2 M
[size=1em][size=1em]mkdir /root/centos7( [, B7 S, c; u/ M

5 h) |" S4 G+ ]; f+ l

3 P+ o# S7 _8 i- z- D4 N. Y: _

: A" A- V- o3 v

挂载iso镜像

[size=1em]1
3 l0 I9 E7 E  T; X
[size=1em][size=1em]mount -o loop CentOS-7.0-1406-x86_64-DVD.iso/root/centos7
( R- A* @* A8 G$ Y+ _- L- e# W6 R
" w/ a1 n) m. H, [/ Q% c9 z
# o* |$ O- G0 ?" [" e
' i/ w2 }% i6 |/ k' u$ ~* @5 W, A

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

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

首先创建编辑目录:

[size=1em]1
" c/ {2 w- R: O% S1 \- d$ b0 y
[size=1em][size=1em]mkdir /root/centos7_iso
1 Y/ C+ s- }; b1 j3 U: c
, [) U$ B8 D+ q) c3 I5 Z

# D  j4 N; |1 q+ R, A! A
% f% s) n" N7 K/ n6 ~0 x2 ?

复制光盘文件:

[size=1em]1

5 Z( Z) |$ H+ f9 |/ ?
[size=1em][size=1em]cp -rf /root/centos7/* /root/centos7_iso/
7 P! J1 T7 s/ e, @; }/ G, x, C
: c' c4 g( D  l% p. N) g; `

6 r" a# c7 `- _0 p3 O3 i& F

+ ~8 L8 u; z8 t/ s4 l4 y. F

diskinfo文件需求单独拷贝下:

[size=1em]1

& Y0 i+ t2 p9 f* J
[size=1em][size=1em]cp /root/centos7/.discinfo /root/iso- u! |' O1 Y9 B* B$ p: A

' {8 b7 Y$ B2 n0 K9 \+ I

; g; T) G' R1 V5 ~+ e
5 J) j4 s; J$ ~( |- Y7 w

2 编辑ks.cfg文件

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

[size=1em]1
) H8 {1 a7 n) R- }
[size=1em]2
9 Z( B& i5 K, z8 B6 X) u+ q" M
[size=1em][size=1em]cd /root/centos7_iso/isolinux, B6 m' @2 G/ \
[size=1em]vim ks.cfg6 u7 i3 ^) F: h
, G& v% F0 S" O* m5 j/ E

& p8 a8 v, G0 Q% L! v" i

6 K: s* e9 i- y  [, }' {

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

[size=1em]1

/ \7 q+ n) g* U( w& H. W+ i
[size=1em]2
4 `: ~2 ?; U2 u4 s) q
[size=1em]3
2 ]- l3 ~+ ]# B
[size=1em]4

" i6 \' Y; q" ]
[size=1em]5
. s0 g& C, I; P9 x$ m$ f/ ^
[size=1em]6
1 U3 g  F( J7 k* D( @$ V3 Z7 ]
[size=1em]7
! v2 _; z* E& E3 s/ F7 g# Y: Q
[size=1em]8

9 @5 d( m4 i4 I" W
[size=1em]9

9 F% W  f9 L: k8 c: u+ F
[size=1em]10
3 {: d" r" L" v4 W, g, Z0 ^' c
[size=1em]11

( R- q) Y; l9 q3 @+ T9 ]  M
[size=1em]12
# R/ {- z3 \% J% F
[size=1em]13

8 d7 c9 s2 O1 O# [7 R7 ^- u
[size=1em]14
: V% Y- H! @: x* r- R% u
[size=1em]15

7 V& L* Z' c- X$ c5 z
[size=1em]16

6 b* p) U( Z) _! l) x, a8 @9 I
[size=1em]17

) I: Q! k8 d5 b# {; Z) C( r0 J* R
[size=1em]18

0 |; N" `1 m, l8 t. M& |
[size=1em]19
' S1 y3 {; ]2 ^) ^* r# \( `
[size=1em]20
  o" N0 E" }% w% Y0 B* k
[size=1em]21

5 m; I( N9 p4 \8 b& I2 N9 V$ q# C! c
[size=1em]22
0 A2 g" H1 E# u7 }, A% Y  [& X+ q
[size=1em]23
8 `6 i0 p/ c  \& m6 E$ i* l
[size=1em]24

1 F) ]! p+ c5 }/ T  i
[size=1em]25
: e: {( w2 ^7 C
[size=1em]26

" P( I7 Z% o9 o0 t
[size=1em]27
. {/ }/ {/ P  ~# z: W
[size=1em]28
4 }9 ]  l$ t2 ]2 e: e
[size=1em]29
7 {8 |* u6 D8 o9 f9 x8 x( u( H8 o6 ?8 X
[size=1em]30
+ v  G& J. H4 O. S  j
[size=1em]31
- R0 }5 C3 a( v" C: _: w! O) e  [
[size=1em]32

) D9 F: y- J/ }$ q9 C. Y8 f
[size=1em]33

0 Y6 i- ?& F. E; P9 c& _- I
[size=1em]34

2 q3 {2 O7 Y3 w6 V+ r9 _5 Q/ `
[size=1em]35
6 N& n9 E2 v+ V% N
[size=1em]36

& r8 t* l$ S) J3 j1 {2 S" ?
[size=1em]37

( U, r  T# l% Y% I" H) ?+ e: z0 Z
[size=1em]38

4 d" t( c0 `. T/ b+ u) |' W  q7 ]
[size=1em]39
: h( Q% p3 j+ P
[size=1em]40
8 C- z* C2 k  E  ]& ]
[size=1em]41

; z: _* u. B, V$ M7 k4 Y6 z- ]
[size=1em]42
0 }' T; |. W, u! {: O$ m9 T' ]1 q
[size=1em]43
4 y2 r4 M# ^1 N
[size=1em]44
4 X% F1 ?5 G6 F4 N9 r. T- `) {
[size=1em]45

) q% A2 Y6 S; q
[size=1em]46

% I1 \! A0 |, C& U9 e
[size=1em]47
5 ~6 e5 D& l( m% h
[size=1em]48
: y- T3 p7 a7 _( F" k, x# Y5 C0 c
[size=1em]49
! z7 a4 A# ~* G3 G( a/ m& v
[size=1em]50

4 H. S: t3 P( Y- S  j2 N
[size=1em]51
% m! K/ f  U$ _: g9 n
[size=1em]52
  K; W0 G5 b) }! `3 q) x
[size=1em]53

  j0 p( g; @. Y9 ~1 `; p( _1 b1 d
[size=1em]54

' c7 {) Z9 g' v0 |5 J1 D
[size=1em]55

. [# n2 V" N: r8 @$ R
[size=1em]56

/ f- f. j9 ^# ^" u" x4 E
[size=1em][size=1em]#version=RHEL/CentOS7 by xiaoli1102 [, ]( H/ l9 U
[size=1em]install. M" d: e2 T! X& y5 Q/ s7 K' Z
[size=1em]# Keyboard layouts
" F) ~: q3 f% P, n, o; r3 @[size=1em]keyboard 'us'
/ X6 J7 c& A3 J0 G& A5 z[size=1em]# Reboot after installation
' F5 [4 t$ a5 ]* f; P[size=1em]reboot
) _: ~! L& {) N( u; {1 w) S6 S2 F, G[size=1em]# Run the Setup Agent on first boot1 g0 s. G( @' b$ n1 e
[size=1em]firstboot --enable& e/ D, o  ~7 i2 o1 p
[size=1em]ignoredisk --only-use=sda
. ^, i  Y5 _1 k4 \[size=1em]# Keyboard layouts
' j: W+ u( Z+ q; R3 V$ w1 K# c[size=1em]keyboard --vckeymap=us --xlayouts='cn'1 e, @  c8 e% j- e
[size=1em]# System language- e; W" D/ @  Q/ |/ p$ O
[size=1em]lang zh_CN.UTF-8' A% U9 E" Y1 d+ c! i" P+ j
[size=1em]# Network information
  @4 R. a/ ?. U7 z  h[size=1em]#network --bootproto=dhcp --device=enp2s0 --onboot=off --ipv6=auto4 ]1 b" g4 n9 w9 {, z: r$ |, D- E
[size=1em]#network --bootproto=dhcp --device=enp3s0 --onboot=off --ipv6=auto* E4 w  W" I3 q1 K
[size=1em]#network --hostname=localhost.localdomain
2 i- |! [  w* Z3 m) B3 n: i) _[size=1em]# Root password$ `- I# ?' j# `
[size=1em]rootpw --iscrypted 111111111111111111111111111# N, n5 T) R# t: D3 H8 ?1 e0 i  V
[size=1em]# System timezone
' U2 M, m& v- T[size=1em]timezone Asia/Shanghai; w4 J; z4 I. I- m+ E$ \
[size=1em]# System language3 u( P1 O2 ?7 f' [' W4 s. V" c* }7 y
[size=1em]lang zh_CN
0 G4 w- l; x, o2 U! p! q6 B[size=1em]# Firewall configuration
/ v% z# G' W2 L5 z' J0 [/ _[size=1em]firewall --enabled --ssh
1 C# K. _" C6 Y9 L[size=1em]  
$ L( N' e& A7 ~& C6 t[size=1em]# System authorization information% K% A; k( J) p# I$ J7 Y$ Q
[size=1em]auth --useshadow  --passalgo=sha512& b& Y2 O$ g- S& f* e
[size=1em]# Use CDROM installation media' A: Z" z% u+ T7 n0 I
[size=1em]cdrom2 f' i6 Q& u9 C: ~
[size=1em]# Use graphical install, Z2 M6 X/ ^1 ?) x
[size=1em]graphical
, j- W2 E: p  J# ?[size=1em]# SELinux configuration* i, l$ k6 `4 j
[size=1em]selinux --disabled
2 |  f4 X. S+ i4 N+ \[size=1em]# Do not configure the X Window System9 q6 m" g5 h( Y8 |) r+ o$ l5 f
[size=1em]skipx8 f1 o- I  v" H- \: f- U: l
[size=1em]# System bootloader configuration  U$ J1 L( s3 ~7 r  w+ c
[size=1em]bootloader --location=mbr* S7 x3 J4 Q3 E9 L9 f
[size=1em]# Clear the Master Boot Record
' x* `, ?# q) Y$ R+ q+ d& m! o( _[size=1em]zerombr
5 s' c9 @% p8 V' w7 H[size=1em]# Partition clearing information! f4 J1 b& p! `
[size=1em]clearpart --all
+ f  i- _0 R2 @+ k9 N5 a8 ^8 B6 T[size=1em]# Disk partitioning information
" l" @3 z$ \% n$ ]' u# s[size=1em]part /boot --fstype="xfs"--size=500
- H" y( H5 }$ A# P9 u& w1 W[size=1em]part /boot/efi --fstype="xfs"--size=500/ C" g( Y5 U/ g( D
[size=1em]part swap --fstype="swap"--size=16000
9 Q9 \3 l/ Y! }5 G# J( O" n% r[size=1em]part / --fstype="xfs" --grow--size=1, s* K; B5 M3 t" k: T1 b7 s
[size=1em]  $ _# `/ [* ~% i$ V
[size=1em]%packages- ~6 m. s; y8 K  L8 f3 c% p
[size=1em]@base
: y& Z' C% x+ e9 E0 g9 M% Q  i[size=1em]@core
/ N, n0 _" n, P2 k* o) Q  I[size=1em]@development
1 l# L8 }0 h- H# p8 [[size=1em]@hardware-monitoring
$ h6 r, b0 ?( @! B0 c3 P[size=1em]@performance& j- k. N- E1 n" g$ m0 {4 ]
[size=1em]@remote-system-management5 y: Q- \* A, v: J: `* X8 [, L8 @6 D
[size=1em]%end# W. M/ B1 p, X/ j. z+ }

& J+ X' k, c6 R* F  c" D

. X+ w/ V9 @+ W  @5 f0 p. I

' z4 v' @4 `: y- U! S4 ~* }( x/ [
/ F) p) V6 R' B+ t! \

注意:

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 i/ b3 t, Q3 G+ l4 V, _; ~
[size=1em]2

/ r, f( I6 \2 \( U9 }" C
[size=1em]3
) `0 t! f$ N# T. ~+ n2 O& c
[size=1em]4

* u9 x4 o$ R2 m% o( I0 [5 S" G
[size=1em]5
! \0 I2 ^  _6 W# a9 m
[size=1em]6
* k$ y8 l% s% M& X* V3 E4 X6 a
[size=1em]7
- Q2 ^) ~& O$ Y9 }' [: d
[size=1em]8

( \2 o. e$ o3 z( b6 C+ ]2 [6 k
[size=1em]9
6 r: h# l" y8 Q
[size=1em][size=1em]label linux4 C4 s8 J9 O/ V$ y) n
[size=1em] menu label ^Install CentOS 7
- L* k% _8 [9 G7 h' w[size=1em] kernel vmlinuz
5 n$ D! I. B* y) f/ I: S2 [5 }[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 quiet3 m% _* ^/ v3 R- r
[size=1em]  
) z+ W* k1 V) k( t: q& s# e[size=1em]label custom
# l' R3 ]2 \9 x" o( v: y$ o- u: D[size=1em] menu label ^Custom CentOS 7 by xiaoli1106 I+ M4 t/ Z4 I
[size=1em] kernel vmlinuz  Z( P* `; q+ c1 t, P
[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 inst.ks=cdrom:/isolinux/ks.cfg
3 k4 t% b; W: n6 r% o9 F9 C1 z2 r- H' e3 q+ A0 E2 O9 N1 f

8 n* @- V, A* D- C# }
$ w/ U8 i% D$ c1 F1 g

注意点:

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
% [: o% ~" `; G( Y1 \5 D; ]/ O
[size=1em]2

8 R9 [3 r! v7 g# I& e
[size=1em]3

$ J; J2 s6 I  K
[size=1em]4
% H* _/ P' e/ w3 H8 b
[size=1em]5

: o  g$ T( w$ m: P  c
[size=1em]6

% ?1 @8 ]3 ~: y
[size=1em]7
2 R) X* U, G7 [' s  H
[size=1em]8

# q% ]1 X/ ^7 l, X
[size=1em][size=1em]menuentry 'Install CentOS 7' --class fedora--class gnu-linux --class gnu --class os {
' ?( }9 v" j, n% F3 J[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CENTOS7 quiet+ Y5 T5 c. R3 d* s
[size=1em]       initrdefi /images/pxeboot/initrd.img
2 v& k: K* u$ `; _[size=1em]}& k8 [8 B; E1 y" P& N$ W' n
[size=1em]menuentry 'Install CentOS 7 custom byxiaoli110' --class fedora --class gnu-linux --class gnu --class os {
; P* _% D# ^* d[size=1em]       linuxefi /images/pxeboot/vmlinuz inst.ks=cdrom:/isolinux/ks.cfginst.stage2=hd:LABEL=CENTOS7 quiet
1 I5 T$ e3 G/ X' N, J# K5 ?( C[size=1em]       initrdefi /images/pxeboot/initrd.img$ q4 y2 V$ ^8 Z- X& Y1 x5 r
[size=1em]}
$ F4 N" O1 B3 h" z) N; y5 m% T2 s, E5 Y& f- \

* e% }8 K2 \$ y  u; H+ i- Y2 ?

% |4 Y9 \; R. z6 [  X

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

5 生成iso镜像

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

[size=1em]1
+ Z" m1 S& T& X/ q2 r3 i& z
[size=1em]2

( P0 n& g  q, H
[size=1em]3

- d/ x' X+ ]7 K# f
[size=1em]4
! o% y  t; w( p' F) c* g
[size=1em][size=1em]genisoimage -v -cache-inodes -joliet-long -R -J -T -V CENTOS7 -o /root/centos7.iso    \% v  k! n3 c. ?  C( D. R1 u
[size=1em]-c isolinux/boot.cat    -bisolinux/isolinux.bin      \! |/ @: l. f& N& F
[size=1em]-no-emul-boot -boot-load-size 4-boot-info-table    \3 R( S; C9 b" ]4 c1 m/ p; q2 x  i
[size=1em]-eltorito-alt-boot     -b images/efiboot.img       -no-emul-boot .
+ `( x9 j1 C6 S
- |  c' z# f4 i2 F

) l6 L. J8 F% n# G; _3 ]% Y

: ]% L1 h6 A) [- o' x3 E' p" Q: Q; L. ~2 D9 R

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

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


! f- F/ M3 m' V

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


0 `1 ^) y# `) x2 R; K7 y8 T& C7 m4 Q( v
[size=1em]1
/ d* B& H2 ]" k) {
[size=1em][size=1em] -eltorito-alt-boot     -bimages/efiboot.img       -no-emul-boot( |4 ?' e6 v. ^7 k) \* m/ \/ Y

0 _9 P5 P  B2 c
$ E4 i: k+ V5 y# d
* _9 k% X) r: B6 r

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

! L- X7 a0 q: F: h

(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
# R; B* @7 X& w# X
[size=1em]2

5 Q" E, z3 q( Y
[size=1em]3
- C8 ?/ s  D; _6 R8 l
[size=1em]4

- Q! [; }! x/ m& t* J8 \+ S7 W& a
[size=1em][size=1em]ls -l /usr/bin/mkisofs
0 e. T) [" H6 U4 ~[size=1em]/usr/bin/mkisofs ->/etc/alternatives/mkisofs
1 I" z$ M' Z8 S- _[size=1em]ls -l /etc/alternatives/mkisofs0 Y; g  c- h& c# {" f
[size=1em]/etc/alternatives/mkisofs ->/usr/bin/genisoimage" l0 q9 y% w% _; H4 s' f

, H/ k# o# M6 _( T+ L8 M) h

, U3 K& Q4 ^1 B6 L" f

% q( r1 d2 }' K8 |

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

/ c8 O% S6 M  M  G* u4 {
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-8 23:57 , Processed in 0.062427 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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