马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
CentOS7全自动安装光盘制作详解 1 复制光盘文件 1)挂载iso镜像 创建目录用于挂载光盘: [size=1em]1
- L# L1 }% ]3 \6 M I# p | [size=1em][size=1em]mkdir /root/centos7
( `6 d* C/ @) n3 ~6 ]' n* {" o! [) B% g# o" s0 i3 @9 j
|
0 j6 c' I2 G. g. Z: z. ^6 B$ s. |& }
挂载iso镜像 [size=1em]1
6 T0 n7 d$ e' Q/ m1 U1 w! N& g | [size=1em][size=1em]mount -o loop CentOS-7.0-1406-x86_64-DVD.iso/root/centos71 g N: i j. d9 a( W% L0 _, Q
5 |( Y/ V3 w: j9 X" v1 p
|
8 ]0 z& B+ I( R8 z$ J- B D9 H6 C3 u* ~8 ~4 @7 v2 m
2)复制光盘文件到编辑目录进行编辑 因为挂载上iso镜像是只读的,如果要编辑,需要将文件复制出来,再编辑。 首先创建编辑目录: [size=1em]1 * M2 z# S% B$ x; P
| [size=1em][size=1em]mkdir /root/centos7_iso
U+ C6 J. m5 S% k, A- d- S+ }# Y
, @' ?; o$ j2 j" h |
4 X u) I& S; Q( s$ Q8 g4 O, H. x9 D* v% V$ \
复制光盘文件: [size=1em]1
* M8 _2 X' c' c$ B& b2 V) Q7 Z | [size=1em][size=1em]cp -rf /root/centos7/* /root/centos7_iso/
+ u1 C& V( T! o% P, p7 n" C7 U/ l# M
| 1 p. V; X! G* ]# ?. n' h2 `9 w
! j1 c# Q0 ^# n q
diskinfo文件需求单独拷贝下: [size=1em]1 3 S! t( ^: o2 @0 @
| [size=1em][size=1em]cp /root/centos7/.discinfo /root/iso
k- j6 ~8 u8 ~6 N- J0 c- P4 l% `' W7 E# _( n3 v {/ T
| ' I: ]3 c/ j& f w3 |
4 h& @# W$ |5 ]/ z' r7 \
2 编辑ks.cfg文件 系统安装的时候,按照ks.cfg文件的内容进行安装,我们把ks.cfg文件放到isolinux目录下: [size=1em]1
3 h! w% x' }+ h9 e! H: o( E- d/ M; w[size=1em]2
' S" r$ o$ B# {" o5 z) A5 C | [size=1em][size=1em]cd /root/centos7_iso/isolinux
' [5 L7 Q& ?8 C% \" p: `, s1 V( D[size=1em]vim ks.cfg! y+ V( V" c: P% r
: L- ]" _/ C. l1 J. y$ Z | 7 O* u i$ ?8 q: f7 x$ @
) r4 K' r" {7 c5 p& G) |6 g/ T
我的ks.cfg文件内容如下: [size=1em]1 6 M. r/ U6 t- m: {- a5 O
[size=1em]2 2 b! m/ l5 n# F5 ?. j
[size=1em]3 % O6 {8 \- [0 a% a" u0 o7 F* F
[size=1em]4
9 \( U4 `7 V4 B. X9 X- i[size=1em]5 $ P1 S; Z# {! K
[size=1em]6 ; y& t8 x$ H5 |! d) ]5 q' C# w
[size=1em]7
% G3 t9 P0 y- B8 G. N[size=1em]8 , ^2 ?# M k/ b0 e3 T. r, }2 {
[size=1em]9
3 v# F2 A5 I7 r9 I6 R[size=1em]10
9 y6 w" f9 v0 M m[size=1em]11
8 M1 [& x6 g2 O+ m1 y[size=1em]12 : \3 | R- U0 }8 @$ o7 v! _, A
[size=1em]13 # ? p& s; \' H6 S- H
[size=1em]14
6 e5 \- w" X6 b3 [[size=1em]15
3 r' l, I' |2 t: [( Y9 |# D5 k: l[size=1em]16
: z+ Q! u8 q% U) c" |[size=1em]17
. U& _& L+ {5 x8 c4 X6 E; y[size=1em]18 ' ^7 D5 |- x8 o9 r0 @; l
[size=1em]19
% H' G( d7 q L1 K, @: d[size=1em]20
# [8 B" q+ m* t' J[size=1em]21
! b9 G5 t% p! k0 A* ?[size=1em]22
& R6 ~% c2 W6 \/ M[size=1em]23
+ l' F0 I- X8 ]2 E4 d. f[size=1em]24 8 X4 b7 q I2 E5 g4 T
[size=1em]25 ! ~6 u5 T6 ~& Z: ]! }/ f6 I
[size=1em]26 : V/ E* e3 }- }3 V& `3 W; C
[size=1em]27 G. h5 v! N" `, o
[size=1em]28 * f' N4 F# ^2 U6 o
[size=1em]29 6 u9 g: a& X- x& e7 I8 U) [% J6 Q# t
[size=1em]30
7 w5 }, a; U7 H7 O" V/ o3 S T6 F[size=1em]31 - X! n t" d/ s) E* } G0 C( @
[size=1em]32
4 Y# _" ?; k" @. Y* I: ^5 o8 V. A[size=1em]33
/ L7 W0 B: m7 Z/ j9 e7 X" x[size=1em]34 5 x7 z5 m* k! d L1 T+ D
[size=1em]35 . Y# R. A+ s+ M. j" k
[size=1em]36 . E; ~9 z1 L1 {' l! j3 e7 J6 I
[size=1em]37
$ t4 _/ V- h ^+ d. u. D5 q[size=1em]38
9 A0 U+ X Y2 U% z& O0 u[size=1em]39
5 j4 ?: @7 d) z- L, d[size=1em]40 ) r0 ~; n; `; ?; @8 p
[size=1em]41
# b9 ~: m! f# Q& @" w p[size=1em]42 2 i! y8 I# J) J$ |
[size=1em]43 4 w Q- z( K, e1 Q9 Z4 L! E
[size=1em]44
9 E0 D: V5 W( o2 m1 E[size=1em]45 4 v0 a( U1 M2 y# S
[size=1em]46 : }' E i' {3 A" G, E/ Z6 U
[size=1em]47
. u% z) r. K2 y+ g& C[size=1em]48 6 Z0 `7 w" L- ?5 z2 e% `/ ?2 K" U
[size=1em]49 . c& G! G$ u5 R
[size=1em]50 - H0 A) l0 t, V9 g; _9 p7 g5 Z
[size=1em]51
2 z5 s9 J9 s8 c! `- ? w[size=1em]52
W" y. d8 A% U# s; Q1 E0 j0 [& z[size=1em]53 - {* ?* ?* j/ b
[size=1em]54 + X+ y% v; `% {3 {" |9 \
[size=1em]55
7 c% ?8 q/ ^6 X7 G" \[size=1em]56
; j; F" G# \( T# v0 d | [size=1em][size=1em]#version=RHEL/CentOS7 by xiaoli110
% m1 A J. f7 }5 J- F4 D4 O[size=1em]install' s/ S% T9 s, V) X
[size=1em]# Keyboard layouts% p' N5 L/ ]6 |& o# n8 j
[size=1em]keyboard 'us'% l9 o" e, v2 |* ^
[size=1em]# Reboot after installation
C8 z3 u1 z3 B' W' M6 ^[size=1em]reboot
+ [" `: g2 g! i* L[size=1em]# Run the Setup Agent on first boot
: D d& @1 t0 O" r7 n' _[size=1em]firstboot --enable& I+ {% e V* o0 N( B$ S) V7 r
[size=1em]ignoredisk --only-use=sda g T3 X3 ]1 P4 @4 E5 {
[size=1em]# Keyboard layouts
' |9 i e& u% |. d( e" t# z[size=1em]keyboard --vckeymap=us --xlayouts='cn' @+ r% m3 n& t7 p5 E
[size=1em]# System language
+ L6 B9 Z* P8 z6 m/ `[size=1em]lang zh_CN.UTF-8. b5 s6 E. L* L1 L4 u% ^
[size=1em]# Network information+ L2 X6 H% s. P3 K, H9 e
[size=1em]#network --bootproto=dhcp --device=enp2s0 --onboot=off --ipv6=auto$ Q% Z% K+ M& `3 [4 r
[size=1em]#network --bootproto=dhcp --device=enp3s0 --onboot=off --ipv6=auto# L# ^+ e& i) y& t6 g* I: g
[size=1em]#network --hostname=localhost.localdomain# f3 t$ |+ |1 [4 s3 S B+ m
[size=1em]# Root password
$ v5 X0 d" y; J! M2 g; x[size=1em]rootpw --iscrypted 111111111111111111111111111
8 x7 c2 D1 s& r5 K9 j) O% y0 A' Y[size=1em]# System timezone5 ^% {, Y% T3 w5 j) C; R7 `3 A
[size=1em]timezone Asia/Shanghai# ^- n" ?: ~: n* o7 B. F
[size=1em]# System language
* G" K% L+ ^- y) ~9 I6 Y# z/ z[size=1em]lang zh_CN
' M& l3 S, R |9 J K[size=1em]# Firewall configuration$ I. d% p b* ~% N
[size=1em]firewall --enabled --ssh4 Q! {% L/ \7 G! P
[size=1em]
4 b. S" y, a. N7 D1 ~2 I' T[size=1em]# System authorization information3 N: r7 `% ^1 l4 d8 A8 t; `- v* W
[size=1em]auth --useshadow --passalgo=sha512
" Q9 S# [$ Z( X) L @[size=1em]# Use CDROM installation media' q* t2 D$ k) n! c! F! v
[size=1em]cdrom
! a- Q' }% a7 z' e/ l[size=1em]# Use graphical install; Y' y. P% q* ]8 E
[size=1em]graphical
* Y( t# ^. W$ c5 ~( P" j1 y[size=1em]# SELinux configuration
: v0 w6 H; O& K8 f) H[size=1em]selinux --disabled1 a( _" I, }. P& {1 T
[size=1em]# Do not configure the X Window System
3 H: _; g. e. }[size=1em]skipx
7 M6 I# p! r$ F8 z) k# N[size=1em]# System bootloader configuration
6 s6 Z: |3 b! K[size=1em]bootloader --location=mbr
, \! p& @6 l8 d- f" E[size=1em]# Clear the Master Boot Record
- n O& A: F4 \7 ^: `) t2 i; _0 W[size=1em]zerombr
& w! g1 Y- ]. {+ s. Z- h[size=1em]# Partition clearing information
% N* _7 F( S* T8 s5 X( c[size=1em]clearpart --all* G: I8 [ u, X8 p9 P7 y
[size=1em]# Disk partitioning information4 x' n3 ~ l' _/ Z( p
[size=1em]part /boot --fstype="xfs"--size=500% ]3 O# r K/ s% G5 o
[size=1em]part /boot/efi --fstype="xfs"--size=5008 J; Z; N9 c. \/ S. c
[size=1em]part swap --fstype="swap"--size=16000; c ` a! b- J: Z& J& ?) Q' s1 P
[size=1em]part / --fstype="xfs" --grow--size=1
0 q9 b& [$ ?/ K7 j; C) E- N" s- n[size=1em]
; f) [* J7 J9 b) E4 w[size=1em]%packages6 ]5 G7 S/ K. l" P% o
[size=1em]@base
* O/ u* W3 |3 C+ j% J: ]( e3 H! W[size=1em]@core( X8 B# K/ Y, L! F" z+ Z- S E' }
[size=1em]@development9 }' ~, v" H" J3 J4 Z( B
[size=1em]@hardware-monitoring
2 }2 v; p( J0 W+ I[size=1em]@performance" F, f: j! p! r% m* I4 D4 [
[size=1em]@remote-system-management
5 l. B! V; x/ v. b& H2 G6 ~[size=1em]%end
$ f1 ?# G2 i8 z& V: ~" |
- N6 z% U! p+ i, Z& p* I |
7 f+ D0 z$ X# f" T2 q7 T C: I7 C! y9 R4 _; f/ d+ g$ M( W
; P8 S+ Q- `1 |- Q4 v7 E0 y注意: 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
1 x& i+ y `% [$ o# m1 M i[size=1em]2
4 G5 P' k' E, @8 L[size=1em]3
5 S8 v, s& W+ A! \, o[size=1em]4
2 I( i9 R. ~5 k% }; W[size=1em]5
/ g' n8 y+ b% w# c- E[size=1em]6
1 j5 A0 Y/ C) B' B% s2 K[size=1em]7 : W/ K9 _. J8 Y9 |
[size=1em]8 1 c4 F& Y _) J. D
[size=1em]9
2 R* z5 Z7 t5 B* d. A2 K | [size=1em][size=1em]label linux6 n* h4 z2 a/ j
[size=1em] menu label ^Install CentOS 79 j! q4 W" N$ A7 z9 ]; l T, W3 ~
[size=1em] kernel vmlinuz
) J; I9 M. |- b[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 quiet
% ?% ^$ D9 z6 \4 o9 \+ c8 W4 M' a[size=1em] / Y6 ]4 f8 Q. q! F) O& `' E! f/ \
[size=1em]label custom
: w3 a Y# s& }6 V, T5 f[size=1em] menu label ^Custom CentOS 7 by xiaoli110
; u, j+ i# A; ?* W r[size=1em] kernel vmlinuz
3 V9 v2 }7 ` Y2 B# ?[size=1em] append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 inst.ks=cdrom:/isolinux/ks.cfg
" a1 w4 v! X0 y, ]% J! w. ?1 h) M/ ?5 H; d- w
|
, K- @' m7 E5 N- M4 y+ ]
& q# P+ W& r) Y注意点: 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 " h3 [, l9 C" Y% Q v1 T y
[size=1em]2 ) h/ [# X+ m" T/ Y+ V
[size=1em]3
2 s# n; _5 n9 [' X3 h& [[size=1em]4
( ~5 a" ]( R, H2 z" p' ?[size=1em]5 ) q/ T) Q. ~! R7 S( k
[size=1em]6
( U4 H6 [* u% l/ e/ I/ }# |[size=1em]7 8 \5 b) M3 [5 t7 Z7 h# O% M- F- g
[size=1em]8
3 V3 _+ ?: f+ H | [size=1em][size=1em]menuentry 'Install CentOS 7' --class fedora--class gnu-linux --class gnu --class os {% X" ?+ z0 I6 J$ s
[size=1em] linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CENTOS7 quiet! R( C5 V% C) u$ ~, w; Y! q
[size=1em] initrdefi /images/pxeboot/initrd.img4 |4 C% N1 Z8 S6 [- S3 D! j1 N* G) t. E+ u
[size=1em]}
* a& Y! g: w( Y9 l5 I; J: H[size=1em]menuentry 'Install CentOS 7 custom byxiaoli110' --class fedora --class gnu-linux --class gnu --class os {
: r/ I* D N) h, [) P" X i5 s& S[size=1em] linuxefi /images/pxeboot/vmlinuz inst.ks=cdrom:/isolinux/ks.cfginst.stage2=hd:LABEL=CENTOS7 quiet8 n0 S$ t& S( L1 l3 U0 l
[size=1em] initrdefi /images/pxeboot/initrd.img4 [" A' O* E/ Y# s" S7 ?! ^" W
[size=1em]}
9 O+ E1 O# p Q- }6 f+ p3 w! z
& x# c& w7 V$ {5 H1 f6 N9 l |
5 O$ Z$ T& ^! U4 }$ `3 J4 f, y. Q/ L4 H& n
和mbr方式类似,指明ks.cfg文件位置和安装源位置。 5 生成iso镜像 经过我踩过多个坑,成功的生成镜像,并且能在EFI和mbr环境安装的镜像生成命令如下: [size=1em]1
( _. f# R) i2 e- O# s# x, e[size=1em]2 % d6 G* y/ E* i3 C- o2 }
[size=1em]3
2 m# r, _4 c/ s+ o( o, ^) e [[size=1em]4
+ C2 a0 t( ?- o" o p: t2 e | [size=1em][size=1em]genisoimage -v -cache-inodes -joliet-long -R -J -T -V CENTOS7 -o /root/centos7.iso \# M8 H3 p0 q: Z. k5 a- _, g" \
[size=1em]-c isolinux/boot.cat -bisolinux/isolinux.bin \
6 L- x9 I! l3 G8 m7 X0 F! f' g A) B[size=1em]-no-emul-boot -boot-load-size 4-boot-info-table \
* ?" }/ I6 p, x' U$ \[size=1em]-eltorito-alt-boot -b images/efiboot.img -no-emul-boot .4 M9 i6 E+ K, J8 @2 A r" y
) R5 q; t( s5 L
| * K5 g# N6 A! ~# M* [6 L. r
- u* M o% N& @ Q4 t) @
6 M$ A0 H8 [2 h. p(1)中间踩过的几个坑: 1)制作镜像要使用CentOS7的系统,不要使用CentOS6的系统,因为两者系统的genisoimage命令的版本不一样,6的系统制作出来的iso不能在efi环境启动;
1 y! Y* ^( y9 I: S5 [$ p! a2)如果要在efi启动,需要添加如下参数:
9 Q* _7 ~7 _6 J2 d' B[size=1em]1 7 C; ~6 a8 i, S# n
| [size=1em][size=1em] -eltorito-alt-boot -bimages/efiboot.img -no-emul-boot y: h' ^ k6 f2 B9 e
( Z' A0 e9 V( V1 b% e5 a | 6 Y6 w0 g5 Q$ d0 G" s
7 n* U1 e) ]- E
3)通过-V参数指定光盘label
0 E c* b: |5 X' `1 @$ d5 q(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 + A. S" j; J `! J6 q( Z% T
[size=1em]2
( y- s( B7 k) y3 J[size=1em]3 4 w' a6 u( G' R* |9 g% T
[size=1em]4
5 G2 m' {9 G1 R, b- e5 I* d1 V. } | [size=1em][size=1em]ls -l /usr/bin/mkisofs
1 R" u: q% h# x, j6 K, x1 m[size=1em]/usr/bin/mkisofs ->/etc/alternatives/mkisofs3 J1 \6 q/ P0 F# |6 O# s4 f
[size=1em]ls -l /etc/alternatives/mkisofs
& [0 M; R0 s. K( P- h& _: W[size=1em]/etc/alternatives/mkisofs ->/usr/bin/genisoimage
: v: I& D) J# I/ ]- h
7 T- @7 D7 n: d3 x9 i$ h |
' U, I% {6 z7 t# Y1 z
_% |% Y: A/ i t, U7 yxorrios是另外一个比较流行的制作iso镜像的工具,并且有一个参数-asmkisofs可以和mkiso命令兼容。
- w/ A( Q1 n! i x/ y |