当前位置: 首页 > news >正文

【Linux】Kickstart 配置U盘自动化安装Linux系统


文章目录

  • 前言
  • 一、刻录USB
  • 二、配置以BIOS方式启动引导
    • 2.1 引导文件配置
    • 2.2 KS文件配置
  • 三、以EFI方式启动引导
    • 3.1 引导文件
    • 3.2 KS文件
  • 四、 总结


前言

之前安装系统,例如在VMware虚拟机中或物理服务器中,都是根据图形界面上的指示进行下一步这类的操作。
现在将无人为干预的U盘自动化安装系统的配置记录一下。


一、刻录USB

刻录需要几样东西,除了U盘以外,另两样则是:
1)ISO镜像文件,这个根据自己的需求下载对应的系统镜像文件即可,本文使用的是CentOS 7镜像;
2)刻录软件,可以选择UltraISO或者Rufus,其具体使用方式,此处不做介绍,可自行百度摸索。

二、配置以BIOS方式启动引导

系统ISO镜像文件刻录到U盘后,此时即可通过它来安装操作系统到服务器上,但这种方式往往在安装过程中需要人工点击时区、目标磁盘、设置账号密码等操作。
此时,我是希望它能全程自动化完成安装过程中所需要配置的内容,无需人为干预的。
那么,就需要以下两个文件的配置,即引导文件和Kickstart文件的配置,来实现这一目的。

2.1 引导文件配置

引导文件,我这边主要修改的便是开机菜单选项的内容(照着前面修改即可,注意路径名必须一致),即添加上一个新的开机选项,并将其设置为默认,其ks文件指向U盘中我们即将配置的Kickstart文件。
引导文件的路径为:USB盘符:/isolinux/syslinux.cfg

default vesamenu.c32
timeout 200      # 默认为600,即菜单选项超时为60秒,这边改为200,即20秒display boot.msg
...
...label linuxmenu label ^Install CentOS 7kernel vmlinuzappend initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quietlabel checkmenu label Test this ^media & install CentOS 7#menu defaultkernel vmlinuzappend initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet####### 添加的内容 #######
label linux-ksmenu label Kickstart Installation of CentOS 7menu default     # 将其他label的menu default注释掉,这边添加为默认选项kernel vmlinuzappend initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.ks=hd:LABEL=CentOS\x207\x20x86_64:/centos7-ks-bios.cfg quiet

添加自定义label,设置menu的label(菜单选项显示的文本内容),设置本label为默认选项(注释掉前面其他label的default),当等待时间超时后,系统会进入默认选项。kernel和append的内容照着前面复刻一份即可,但append的后面需注意添加上ks文件的路径,即指向CentOS 7 x86_64/centos7-ks-bios.cfg文件(\x20表示空格)

2.2 KS文件配置

Kickstart文件并不是在刻录镜像时自动生成的,而是需要自己单独新建个文件,这边命名就是centos7-ks-bios.cfg,位置放在U盘根目录下。ks文件的内容,其实可以在一个现有系统中找到/root/anaconda-ks.cfg,根据该文件做自定义调整;或者安装system-config-kickstart包,一步步根据需要定制自己的ks文件。【Linux】自定义生成Kickstart(system-config-kickstart)
这边放一个具体示例:

#version=DEVEL
#Install OS instead of upgrade
install
# System authorization information    密码启用shadow方式,使用sha512加密方式
auth --enableshadow --passalgo=sha512
# Use CDROM installation media    
cdrom
# Use graphical install     使用文本方式安装,非图形化界面
text
# Run the Setup Agent on first boot
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts   键盘布局
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8# Network information   网络配置,这边就配置了dhcp,也可直接定义IP地址
network --bootproto=dhcp --ipv6=auto --onboot=on --activate
#network  --bootproto=static --device=eth0 --gateway=192.168.112.254 --ip=192.168.112.20 --nameserver=114.114.114.114 --netmask=255.255.255.0
network --hostname=asdfv.com# Root password
# default 000000
rootpw --iscrypted $6$re6WtU5u8cKmIwpY$CJMAKR/cvQ8hDfSRB6eNtEH.qHIBXpzZoli5QCPM2fXZ7kzxxM/6vAQspTtEuvSTxyLoDas97WIqBDI4Ff6ln/
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel --drives=sda
# Disk partitioning information# 20G 对盘符进行分区,这边可根据实际进行修改,size的单位为MB
part /boot --fstype="xfs" --ondisk=sda --size=1024
part / --fstype="xfs" --ondisk=sda --size=10240
part /data --fstype="xfs" --ondisk=sda --size=5120
part swap --fstype="swap" --ondisk=sda --size=3072# 安装指定软件包
%packages
@^minimal
@core
@development
net-tools
tree
sysstat
traceroute
iproute
tcpdump
lrzsz
%end%addon com_redhat_kdump --disable --reserve-mb='auto'%end# 这边配置,在系统安装完成后需要执行的命令。此处示例为创建本地YUM源
%post# some configuration after install,eg. yumrepo useradd
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/base.repo << EOF
[base]
name=iso
basurl=file:///mnt/
gpgckeck=0
enabled=1
EOF%end%anaconda
# password policy  密码策略,可根据需要修改
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end# 所有安装及配置完成后,重启
reboot

三、以EFI方式启动引导

3.1 引导文件

若是以EFI方式引导的话,则需要修改
USB:/EFI/BOOT/grub.cfg文件,添加上和前面相类似的菜单选项,ks文件指向目标。

set default="2"  # 设置默认为第3个选项,这个就是数组的下标,从0开始算
...
set timeout=6   # 设置超时为6秒, 单位是秒
...
menuentry 'Kickstart Installation of CentOS 7' --class fedora --class gnu-linux --class gnu --class os {linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CENTOS\x207\x20X86_64 inst.ks=hd:LABEL=CENTOS\x207\x20X86_64:/centos7-ks-efi.cfg quietinitrdefi /images/pxeboot/initrd.img
}

3.2 KS文件

这块内容和前面BIOS的KS文件内容基本一样的,可根据需要进行修改。

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
text
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8# Network information
network  --bootproto=dhcp --ipv6=auto --onboot=on --activate
network  --hostname=localhost.localdomain# Root password
rootpw --iscrypted $6$yaZQ9CkRRIukN3ag$DewKZEbd/9Uj3A4E14QgZlli07tXThDi.QAI5i9flVglIQHspYvko1hoPB9Ydv8HuDyqUB7pcH5pDzBZXuNqt.
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
user --name=admin --password=$6$C/y6BU92s1VHuXVA$FOeMdzmRifU1EVOLSFzonkmzWoYXhEallHPiCxmQcjJ94KymP2BNt42FxRjMoSghYBCRAmr15AqArhGJHY/AG/ --iscrypted --uid=1000 --gecos="admin" --gid=1000
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel --drives=sda
# Disk partitioning information
part /boot/efi --fstype="efi" --ondisk=sda --size=200 --fsoptions="umask=0077,shortname=winnt"
# 20G
part /boot --fstype="xfs" --ondisk=sda --size=1024
part / --fstype="xfs" --ondisk=sda --size=10240
part /data --fstype="xfs" --ondisk=sda --size=5120
part swap --fstype="swap" --ondisk=sda --size=3072%packages
@^minimal
@core
@development
chrony
net-tools
sysstat
tree%end%addon com_redhat_kdump --disable --reserve-mb='auto'%end%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%endreboot

四、 总结

以上就是U盘自动化安装系统的配置,至于将其实际应用一下,这块内容我放到后面一篇文章里【Linux】使用U盘自动化安装Linux(VMware虚拟机)。


相关文章:

【Linux】Kickstart 配置U盘自动化安装Linux系统

文章目录前言一、刻录USB二、配置以BIOS方式启动引导2.1 引导文件配置2.2 KS文件配置三、以EFI方式启动引导3.1 引导文件3.2 KS文件四、 总结前言 之前安装系统&#xff0c;例如在VMware虚拟机中或物理服务器中&#xff0c;都是根据图形界面上的指示进行下一步这类的操作。 现…...

【Spring MVC】这一篇,带你从入门到进阶

目录 1、什么是MVC&#xff1f; 2、什么是 Spring MVC 3、如何学好 Spring MVC&#xff1f; 3.1、如何创建 Spring MVC 项目 3.1.1、使用Spring Initializr创建&#xff08;推荐&#xff09; 3.2、将 Spring 程序与用户&#xff08;浏览器&#xff09;联通 3.3、基础注解…...

InstallAware Multi-Platform updated

InstallAware Multi-Platform updated 原生ARM&#xff1a;为您的内置设置、IDE和整个工具链添加了Apple macOS和Linux ARM构建。 本地化&#xff1a;引擎内多语言感知&#xff0c;可再分发工具&#xff0c;具有资产隔离功能&#xff0c;使您的IP保持安全。 模板&#xff1a;将…...

Spring Batch 高级篇-多线程步骤

目录 引言 概念 案例 转视频版 引言 接着上篇&#xff1a;Spring Batch ItemWriter组件&#xff0c;了解Spring Batch ItemWriter处理组件后&#xff0c;接下来一起学习一下Spring Batch 高级功能-多线程步骤 概念 默认的情况下&#xff0c;步骤基本上在单线程中执行&…...

关于iframe一些通讯的记录(可适用工作流审批)

一.知识点(1).我们可以通过postMessage(发送方)和onmessage(接收方)这两个HTML5的方法, 来解决跨页面通信问题&#xff0c;或者通过iframe嵌套的不同页面之间的通信a.父页面代码如下<div v-if"src" class"iframe"><iframeref"iframe"id…...

JavaWeb

1、静态Web html、css 2、动态Web 提供给所有人看的数据始终会发生变化。技术栈&#xff1a;Servlet/JSP&#xff0c;ASP&#xff0c;PHP。 Web应用程序&#xff1a;可以提供浏览器访问的程序。 1、这个统一的web资源会被放在同一个文件夹下&#xff0c;web应用程序-->Tom…...

ip段192.168.1.0/24和192.168.0.0/16

192.168.1.0/24192.168.1.1 ~ 192.168.1.254前24位为网络前缀&#xff0c;后8位代表主机号。如下1100 0000&#xff0c;1010 1000&#xff0c;0000 0001&#xff0c;0000 0000192.168.0.0/16192.168.0.1 ~ 192.168.255.254前16位为网络前缀&#xff0c;后16位代表主机号。如下1…...

《爆肝整理》保姆级系列教程python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)

简介 大多数的初学者在使用 unittest 框架时候&#xff0c;不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚&#xff0c;不知道什么时候执行&#xff0c;什么时候不执行。虽然或许通过代码实现了&#xff0c;也是稀里糊涂的一知半解&#xff0c;这样还好&am…...

【第二章 IOC操作bean管理(XML注入其他类型属性(字面量,外部bean,内部bean,级联赋值)、XML注入集合属性)】

第二章 IOC操作bean管理&#xff08;XML注入其他类型属性&#xff08;字面量&#xff0c;外部bean&#xff0c;内部bean&#xff0c;级联赋值&#xff09;、XML注入集合属性&#xff09; 1.IOC操作bean管理&#xff08;XML注入其他类型属性&#xff09; &#xff08;1&#xf…...

Kotlin-枚举和印章

kotlin-枚举 枚举也是一个对象&#xff0c;枚举对象的定义需要使用enum关键字 枚举对象可以定义函数 假设定义一个星期枚举对象。就是一下写法 enum class Week {星期一,星期二,星期三,星期四,星期五,星期六,星期日;//打印星期几fun printWeek(){println("这是星期枚举对…...

_linux (TCP协议通讯流程)

文章目录TCP协议通讯流程TCP 和 UDP 对比TCP协议通讯流程 下图是基于TCP协议的客户端/服务器程序的一般流程: 服务器初始化: 调用socket, 创建文件描述符;调用bind, 将当前的文件描述符和ip/port绑定在一起;如果这个端口已经被其他进程占用了, 就会bind失 败;调用listen, 声…...

PMP考试详解,新考纲有什么变化?

一&#xff0c;为什么优先考虑PMP持证人员&#xff1f; PMP证书在我国大型企业、跨国企业、央企/国企等单位的招聘中都比较重视&#xff0c;特别是在许多项目投标环节中&#xff0c;明确标明需要有PMP持证人员&#xff0c;才能在投标、竞标中代表公司有资格承担项目。 除此之…...

C++学习笔记-日期和时间

C中可以使用的日期时间API主要分为两类&#xff1a; C-style 日期时间库&#xff0c;位于头文件中。这是原先<time.h>头文件的C版本。 chrono库&#xff1a;C 11中新增API&#xff0c;增加了时间点&#xff0c;时长和时钟等相关接口。 在C11之前&#xff0c;C编程只能使…...

Nordic nRF芯片FDS模块学习

FDS系统学习 文章目录FDS系统学习一、ROM&#xff0c;RAM&#xff0c;FLASH作用二、ROM,RAM和FLASH在单片中的运作原理三、Flash访问模块FDS用法1. FDS在sdk_config.h中的配置2. fds_register()注册3. fds_record_write()写记录4. fds_record_find()查找5. fds_record_open()读…...

JVM 学习(1)—JVM 与 JMM 内存模型简单理解

一、JVM 内存模型概述 (1) 为什么会出现 JVM 内存模型呢&#xff1f; JVM 内存模型是为规范描述 Java 虚拟机在执行 Java 程序时&#xff0c;将程序中的数据和代码存储到计算机内存中的方式和规则。JVM 内存模型定义 Java 虚拟机所使用的内存结构以及内存区域之间的关系&…...

NMS详解

(类别&#xff0c;坐标1&#xff0c;坐标2&#xff0c;坐标3&#xff0c;坐标4&#xff0c;类别分数) step1&#xff1a;对最后一列分数进行排序 &#xff0c;可以看到类别就被打乱了 step2&#xff1a; 弹出得到selected_bboxes作为基准&#xff0c;减少bbox_list。其实就是准…...

考出PMP证书到底有没有用?

我们将从三方面分享&#xff1a; 1. PMP 证书在国内的含金量怎么样&#xff1f; 2. HR 如何看待 PMP 证书&#xff1f; 3. 拿到 PMP 证书后&#xff0c;有哪些变化&#xff1f; 一&#xff0c;PMP证书的含金量 说到 PMP 证书的含金量&#xff0c;相信这个问题是所有学员都…...

寻路库recastnavigation改造

本文是介绍对寻路库recastnavigation 改造&#xff0c;使得使用更加友好。 Git仓库: https://github.com/jiangguilong2000/recastnavigation 首先&#xff0c;我们要做一些前置操作 SDL: 开放源代码的跨平台多媒体开发库 Premake&#xff1a;量跨平台构建系统 环境: VS 2019…...

pandas 一些设置随记

显示所有的行、列 # 显示所有列 pd.set_option(display.max_columns, None) # 显示所有行 pd.set_option(display.max_rows, None)不换行显示 pd.set_option(display.width, 1000) 输出对其 pd.set_option(display.unicode.ambiguous_as_wide, True) pd.set_option(display.…...

SSIM学习

SSIM原文链接&#xff1a;https://www.researchgate.net/profile/Eero-Simoncelli/publication/3327793_Image_Quality_Assessment_From_Error_Visibility_to_Structural_Similarity/links/542173b20cf203f155c6bf1a/Image-Quality-Assessment-From-Error-Visibility-to-Struct…...

LoRA训练助手效果展示:GPT模型微调前后对比

LoRA训练助手效果展示&#xff1a;GPT模型微调前后对比 1. 引言 你是否曾经遇到过这样的情况&#xff1a;用GPT模型生成的内容总是差那么点意思&#xff0c;要么风格不对&#xff0c;要么专业度不够&#xff0c;要么就是不符合你的特定需求&#xff1f;就像让一个通才来处理专…...

用LBM格子玻尔兹曼方法在Matlab中模拟3D气泡上升多相流

lbm格子玻尔兹曼方法模拟3D气泡上升多相流 matlab在计算流体力学领域&#xff0c;模拟多相流现象一直是个热门且具有挑战性的话题。今天咱们就来唠唠用格子玻尔兹曼方法&#xff08;Lattice Boltzmann Method, LBM&#xff09;在Matlab里模拟3D气泡上升多相流。 LBM方法简介 格…...

新手必看:AI人脸隐私卫士从部署到使用,完整操作指南

新手必看&#xff1a;AI人脸隐私卫士从部署到使用&#xff0c;完整操作指南 1. 引言&#xff1a;为什么需要AI人脸隐私保护&#xff1f; 在日常生活中&#xff0c;我们经常需要分享照片到社交媒体或工作群聊。但你是否想过&#xff0c;这些照片中可能无意间暴露了他人的隐私信…...

AnimateDiff写实视频生成教程:基于SD1.5+Motion Adapter的全流程实操

AnimateDiff写实视频生成教程&#xff1a;基于SD1.5Motion Adapter的全流程实操 想用AI把文字变成生动的视频&#xff1f;AnimateDiff让你用几句话就能生成专业级的写实视频&#xff0c;无需任何绘画基础&#xff0c;8G显存就能流畅运行。 1. 项目简介&#xff1a;文字直接变视…...

OpenClaw邮件处理助手:Qwen3-14b_int4_awq分类与自动回复

OpenClaw邮件处理助手&#xff1a;Qwen3-14b_int4_awq分类与自动回复 1. 为什么需要邮件自动化助手 每天早晨打开邮箱&#xff0c;看到堆积如山的未读邮件总是让人头疼。订阅的新闻简报、工作沟通、广告推广混杂在一起&#xff0c;手动分类和回复消耗了大量时间。作为技术从业…...

SecGPT-14B提示工程:提升OpenClaw安全任务准确率90%

SecGPT-14B提示工程&#xff1a;提升OpenClaw安全任务准确率90% 1. 为什么需要为OpenClaw设计安全专用提示词 去年我在尝试用OpenClaw自动化处理安全日志时&#xff0c;遇到了一个典型问题&#xff1a;当我直接使用通用指令"分析这段日志"时&#xff0c;模型返回的…...

LeetCode 二叉搜索树双神题通关!有序数组转平衡 BST + 验证 BST,小白递归一把梭

前言 二叉搜索树&#xff08;BST&#xff09;是算法刷题的高频必考知识点&#xff01;今天给大家带来两道最经典、最基础的 BST 题目&#xff0c;全程用最简单的递归实现&#xff0c;代码干净、思路直白&#xff0c;不用死记硬背&#xff0c;看完就能直接写&#xff01; 一道教…...

Tauri Android 打包原理与实战指南

Tauri Android 打包原理与实战指南 基于 JoyaLand 项目的实际打包经验整理,记录原理、流程与踩坑解决方案。 一、Tauri Android 打包架构原理 1.1 整体架构 ┌─────────────────────────────────────────────┐ │ …...

Edge/Chrome用户必看:3种免费工具批量清理失效书签(2023实测)

Edge/Chrome用户必备&#xff1a;2023年高效清理失效书签的3种解决方案 每次打开浏览器&#xff0c;看到密密麻麻的书签栏却找不到真正可用的链接&#xff1f;这可能是大多数互联网用户的日常困扰。根据2023年用户调研数据显示&#xff0c;平均每位浏览器用户拥有超过200个书签…...

Ubuntu18.04下Gazebo加载DEM高程图踩坑实录(附完整解决方案)

Ubuntu 18.04下Gazebo加载DEM高程图的完整实践指南 在机器人仿真和地理信息系统研究中&#xff0c;数字高程模型&#xff08;DEM&#xff09;是构建真实地形环境的关键数据。Gazebo作为一款功能强大的机器人仿真平台&#xff0c;支持DEM高程图的加载与渲染&#xff0c;但在实际…...