马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
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. Fdiskinfo文件需求单独拷贝下: [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 ~+ e5 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' V2)如果要在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 {
|