|
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" Y6 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* s2 编辑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, e2)如果要在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# |. w3)通过-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 Vxorrios是另外一个比较流行的制作iso镜像的工具,并且有一个参数-asmkisofs可以和mkiso命令兼容。 ) x, U. J! D7 _" k+ E5 h( p J# Z
|