|
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 m2)复制光盘文件到编辑目录进行编辑 因为挂载上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 ~/ Gdiskinfo文件需求单独拷贝下: [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" P0 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) @
|