U盘自动安装linux系统

用U盘装系统的方案有很多,比如用UltraISO往U盘写入系统镜像、比如用U盘的工厂工具把linux的iso镜像量产进U盘、比如用isohybrid把原版iso镜像做成混合镜像后再用dd命令把linux镜像写入U盘。具体可以看这篇文章。今天讲一种添加自动应答文件后,无人值守安装的方法。
制作无人值守安装linux系统U盘步骤如下。

创建要用到的挂载点

mkdir

挂载安装镜像ISO

mount -o loop CentOS-6.8-x86_64-bin-DVD1.iso /mnt/iso/
给U盘分区(这里,我的U盘被识别为/dev/sdb)
fdisku
图中是一个8GU盘分区的步骤,我实际使用的是一个4G U盘。我给U盘分了两个主分区,一个122M用来存放启动文件(实际64M已经完全够用),剩下的空间全部分配给了/dev/sdb2,用来存放ISO文件。最后记得按W键保存并应用分区动作。

格式化第一个分区为DOS分区

mkfs
此操作可在windows下格式化成fat文件系统

格式化第二个分区为ext2

mkfs.ext2 /dev/sdb2

分别挂载

mount /dev/sdb1 /mnt/usb1
mount /dev/sdb2 /mnt/usb2

复制isolinux目录到DOS分区并重命名

cp -a /mnt/iso/isolinux /mnt/usb1/syslinux

复制自动应答文件到DOS分区

cp -a /root/anaconda-ks.cfg /mnt/usb1

复制安装镜像到U盘第二分区

cp -a CentOS-6.8-x86_64-bin-DVD1.iso /mnt/usb2

查看usb分区情况

df
此时发现/mnt/usb2已经挤得塞不下一个逗号了,所以我得校验一下iso镜像是否完整的拷贝进来了。
md5
md5sum的值和http://mirrors.aliyun.com/centos/6.8/isos/x86_64/md5sum.txt 对比一致。

进入DOS分区修改启动文件

cd /mnt/usb1/syslinux
mv isolinux.cfg syslinux.cfg
chmod +w syslinux.cfg
vim syslinux.cfg

default ks          #默认菜单
#prompt 0           #为1时显示'boot: '提示符。为0时则不显示,将直接启动default参数中指定的内容。
timeout 600

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.8!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img
label ks         #主要是添加这一段
  kernel vmlinuz
  append ks=hd:sdb1:/anaconda-ks.cfg initrd=initrd.img
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

修改安装过程中的自动应答文件

cd /mnt/usb1
vim anaconda-ks.cfg

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
harddrive --parttion=sdb2 --dir=
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 192.168.2.247 --netmask 255.255.255.0 --gateway 192.168.2.1 --noipv6 --nameserver 202.96.209.5
rootpw  123456
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work


zerombr
clearpart --all  --drives=sda
part /boot --fstype=ext4 --size=100
part swap --size=500
part / --fstype=ext4 --grow --size=1
reboot



%packages
@core
@scalable-file-systems
@server-policy
@workstation-policy
vim-common
vim-enhanced
vim-minimal
wget
lrzsz
%post

写入U盘引导

把U盘插到windows机器上,这里被识别为E盘。
点击这里下载syslinux。
下载后解压,以管理员身份运行CMD,进入刚刚解压的目录。执行syslinux命令往U盘写入引导,如图
syslinux
执行syslinux64 -a -m E:后,在cmd里输入diskmgmt.msc,能看到U盘的第一分区已经变为活动分区,如图
diskmgmt
此时U盘自动安装盘制作完毕。如果要同时安装多台服务器的话,可以用dd克隆这个U盘,dd if=/dev/sdb of=/dev/sdc
最后提醒一句,做好的U盘不要拿到生产服务器上实验,因为从U盘启动后,会自动格式化第一块硬盘。

原创文章,转载请注明: 转载自笛声

本文链接地址: U盘自动安装linux系统

6 条评论

  • 笛声 2017年4月18日 回复

    ksvalidator /mnt/usb1/anaconda-ks.cfg
    检查配置文件语法。

  • 飞扬 2019年7月12日 回复

    可以专门做一个ubuntu 18.04lts server自动安装的专题吗

    • dige 2019年7月13日 回复 作者

      现在已经很少安装系统了,都是云环境,直接用镜像拉起机器。

  • 飞扬 2019年7月13日 回复

    主要还是用来安装nas系统,由于是自己组装的系统,就安装常规的发行版。普通安装还得弄个屏幕使用,可我没有屏幕,要安装系统就得要去找屏幕借。为难啊

    • dige 2019年7月13日 回复 作者

      您还是借个屏幕安装吧,我这文章也是测试了很多次才能正常自动安装的,对Ubuntu不是很熟,而且 不知道当安装程序没检测到显示器的时候 会不会继续安装。

  • 飞扬 2019年7月13日 回复

    也是,我这边多试试弄个个例。弄个脚本后,以后自动打包。

发表评论

电子邮件地址不会被公开。 必填项已用*标注