【转】重新打包DebianISO实现无人应答安装(UEFI+BIOS)

转自:重新打包DebianISO实现无人应答安装(UEFI+BIOS) - 全部 - 真不是你的

 

之前我写过打包DebianISO的文章,但是那种打包的方法只能用在引导是BIOS的机器上,按照正常的情况,应该是UEFI+BIOS同时支持。

正好前两天给甲骨文重装系统的时候需要重新打包支持UEFI的ISO用作本地测试,所以这里把UEFI的打包过程也记录一下。

Debian的无人应答安装难就难在preseed的配置,因为没有一个完整的文档可以参考,基本上只能自己一个配置一个配置的去试,少一个配置可能就会在安装的界面弹提示框,出了提示框就不能实现无人应答安装了。

不过好在我之前已经折腾出了一个Debian10可以完美用的preseed配置,所以在甲骨文的机器上装,只需要做一下关于UEFI的支持即可。

所以这也就是为啥要在本地测试的原因,先在虚拟机内跑,虚拟机没问题了再放到甲骨文上试。不过即便是这样我也还是翻车了很多次,甲骨文的机器也删了很多台。。这里就不细说了。。

安装打包需要用到的工具:

apt -y update
apt -y install xorriso isolinux syslinux-utils p7zip-full

下载debian的iso并解压:

wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.9.0-amd64-netinst.iso
7z x debian-10.9.0-amd64-netinst.iso -oimlala

把install.amd目录给写权限:

chmod +w -R imlala/install.amd

解压出initrd:

gunzip imlala/install.amd/initrd.gz

bios和uefi引导需要修改的文件不同,这里只记录uefi引导需要修改的位置,bios引导的可以参考我之前的文章。

首先需要把iso内关于uefi引导的grub配置进行修改,编辑如下文件:

nano imlala/boot/grub/grub.cfg

设置一个超时时间,这里我设置为5秒,默认情况下是没有超时的,也就是说当iso挂载上去后,菜单内必须要人工手动去选择,为了实现无人应答安装,必须设置超时,过了超时时间让iso自动进入相应的grub菜单:

set timeout=5

然后把图形化安装菜单和文本安装菜单的位置调换一下,默认是图形化安装在grub菜单的第一位,为啥要调换位置?因为图形化菜单是不支持preseed的:

menuentry --hotkey=i 'Install' {
set background_color=black
linux    /install.amd/vmlinuz vga=788 --- quiet
initrd   /install.amd/initrd.gz
}
menuentry --hotkey=g 'Graphical install' {
set background_color=black
linux    /install.amd/vmlinuz vga=788 --- quiet
initrd   /install.amd/gtk/initrd.gz
}

具体改动的位置:

然后就是老套路了,新建一个preseed配置文件:

nano preseed.cfg

写入你需要的配置,下面这个配置是我经过测试的,目前可以用在debian10.9上:

# 配置语言
d-i debian-installer/locale string en_US
# 配置键盘
d-i keyboard-configuration/xkb-keymap select us
# 使用自动的方式配置网络(DHCP)
d-i netcfg/choose_interface select auto
# 配置hostname和domain
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/hostname string imlala
# 配置软件源
d-i mirror/country string manual
d-i mirror/http/hostname string ftp.jp.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
# 开启root登录并设置root密码,关闭普通用户创建
d-i passwd/root-login boolean true
d-i passwd/make-user boolean false
d-i passwd/root-password password 123456
d-i passwd/root-password-again password 123456
# 设置时区为东八区
d-i clock-setup/utc boolean true
d-i time/zone string Asia/Shanghai
d-i clock-setup/ntp boolean false
# 硬盘分区,注意/dev/sda这里的设备名,要改为你自己的设备名,一般虚拟机如VMware/VirtualBox都是这个设备名
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
# 手动划分分区大小
d-i partman-auto/expert_recipe string         \
boot-root ::                                \
1 1 1 free                                \
$bios_boot{ }                           \
method{ biosgrub }                      \
.                                         \
256 2 256 fat32                           \
$primary{ }                             \
$iflabel{ gpt }                         \
$reusemethod{ }                         \
method{ efi } format{ }                 \
mountpoint{ /boot/efi }                 \
.                                         \
512 3 512 ext4                            \
$primary{ }                             \
$bootable{ }                            \
method{ format } format{ }              \
use_filesystem{ } filesystem{ ext4 }    \
mountpoint{ /boot }                     \
.                                         \
1024 5 1024 linux-swap                    \
$primary{ }                             \
method{ swap } format{ }                \
.                                         \
1 4 -1 ext4                               \
$primary{ }                             \
method{ format } format{ }              \
use_filesystem{ } filesystem{ ext4 }    \
mountpoint{ / }                         \
.                                         \
# 因甲骨文的机器是efi引导,所以这里强制使用gpt分区表
d-i partman-efi/non_efi_system boolean true
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
# 如果硬盘内之前有lvm或是raid的分区,全部删除
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/device_remove_lvm boolean true
# 下面的这些配置可以做到没有交互式的完成硬盘分区
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
# 禁止在安装的时候弹出CD/DVD扫描提示
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
d-i apt-setup/cdrom/set-first boolean false
d-i apt-setup/cdrom/set-next boolean false
d-i apt-setup/cdrom/set-failed boolean false
# 软件包选择
tasksel tasksel/first multiselect standard
# 安装额外的软件包,不更新系统
d-i pkgsel/include string openssh-server
d-i pkgsel/upgrade select none
# 禁止在安装的时候弹出popularity
popularity-contest popularity-contest/participate boolean false
# grub安装
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i grub-installer/bootdev string default
# 安装完成之后不要弹出安装完成的界面,直接重启
d-i finish-install/reboot_in_progress note
# 允许ssh服务使用root用户登录
d-i preseed/late_command string in-target sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config

这里详细说一下关于手动分区的配置,可能很多人不理解分区这块的配置。

分区那里的三个数字,比如说512 3 512,第一个512代表最小分区大小,第二个数字代表优先级,数字越小表示优先级越高,第三个数字代表最大分区大小。如果第三个数字设置为-1就代表剩下的空间全部划分给这个分区。

然后尤其注意这个配置:

d-i partman-efi/non_efi_system boolean true

如果在preseed内配置了这个BIOS引导直接失效,它将强制使用UEFI引导,所以如果你要UEFI+BIOS同时支持,这个配置需要从preseed中删除。

接下来把改好的配置内嵌到initrd:

echo preseed.cfg | cpio -H newc -o -A -F imlala/install.amd/initrd

重新压缩initrd:

gzip imlala/install.amd/initrd

还原install.amd目录之前的权限:

chmod -w -R imlala/install.amd

最后重新打包iso:

xorriso -as mkisofs \
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot \
-isohybrid-gpt-basdat \
-o preseed-debian-10.9.0-amd64-netinst.iso \
imlala

在虚拟机上启用uefi引导:

测试安装,文本安装选项在第一启动位:

等待5秒超时过后,自动安装开始:

参考文献:

https://wiki.syslinux.org/wiki/index.php?title=Isohybrid
https://wiki.debian.org/DebianInstaller/Preseed/EditIso

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Copying to tmp table Problem Solving

Labels: MySQL, MySQL_Problem_Solving 今天一早突然系统突然报慢,查了一下是以下语句: 6177700 username ip db——name Query 549 Copying to tmp table SELECT ....................原因如下:Copying to tmp table on disk The tempora…

【转】CT辐射量如何计算?

转自:CT辐射量如何计算? - 知乎 作者:西门子中国 链接:https://www.zhihu.com/question/27399697/answer/190062962 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 CT检查后&am…

linux c++连接mysql示例

编译和连接程序 MySQL中有一个特殊的脚本,叫做mysql_config. 它会为你编译MySQL客户端,并连接到MySQL服务器提供有用的信息.你需要使用下面两个选项. 1. --libs 选项 - 连接MySQL客户端函数库所需要的库和选项. $ mysql_config --libs 2. --cflags 选项 - 使用必要的include文件…

【转】TCP和UDP的区别

TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UDP协议与TCP/IP协议的联系,很多人犯糊涂了, 一直都是说TCP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇。里面包括很多协议…

【转】关于InfiniBand几个基本知识点解释

转自:关于InfiniBand几个基本知识点解释_架构师技术联盟-CSDN博客 IP网络协议如TCP/IP,具有转发丢失数据包的特性,网络不良时要不断地确认与重发,基于这些协议的通信也会因此变慢,极大地影响了性能。与之相比&#xf…

WinCE EBOOT中的BootPart分析

应该说BootPart算是微软提供的一个用于分区的模块,可以在EBOOT中使用。不过说实话,我很少使用它,知道有些厂商的BSP里面支持这个功能,而且也算是EBOOT的一部分,所以还是介绍一下。先看一下架构,如图&#x…

陌生的是人心,是人性,是社会,是世道

偶然中得到这样一本书,它是一本都市小说,写自己的经历,不是很乏味的经历;它是一本职场小说,有着对每个人的、不同侧重点的、外表及心理刻画,披露了鲜为人知的职场黑幕;它又是一本悬疑小说&#…

【转】PF_RING学习笔记

转自:Qt迭代器(Java类型和STL类型)详解 1、PF_RING简介 PF_RING是Luca研究出来的基于Linux内核级的高效数据包捕获技术。简单来说PF_RING 是一个高速数据包捕获库,通过它可以实现将通用 PC 计算机变成一个有效且便宜的网络测量工具箱,进行数…

WinCE系统的编译过程详解

在WinCE系统中,当我们完成了相关的开发和系统定制工作以后,会编译WinCE系统,最后生成NK.bin和NK.nb0。下面介绍一下WinCE系统的编译过程,大致分为4个阶段:编译阶段(Compile phase),系统产生阶段(Sysgen pha…

使用HtmlParser解析HTML

如果要对HTML进行解析,提取HTML的数据或者修改HTML数据,HtmlParser是一个不错的选择.使用HtmlParser可以解析本地和网络上的HTML数据:Parser parser newParser( newWinista.Text.HtmlParser.Http.HttpProtocol(newUri("uriString")));Parser parser newParser( newWi…

WinCE中得Catalog Items前的标记图标的意义总结

先看下来自微软对Platform Builder里的图标解释,在以后的CE里,也类似。 The Catalog window and the OSDesignView tab contain a number of icons used to represent object types. The icons make it possible for you to differentiate between Catal…

JavaScript 图片上传预览效果

图片上传预览是一种在图片上传之前对图片进行本地预览的技术。 使用户选择图片后能立即查看图片,而不需上传服务器,提高用户体验。 但随着浏览器安全性的提高,要实现图片上传预览也越来越困难。 不过群众的智慧是无限的,网上已经有…

【转】GigE Vision简介

转自:GigE Vision简介_计算机视觉小菜鸟的专栏-CSDN博客_gige vision GigE Vision是由AIA制定的通信协议,用来实现在机器视觉领域利用千兆以太网接口进行图像的高速传输。该标准是基于UDP协议,与普通网络数据包不同之处在于应用层协议&#…

在Sql Server 2005使用公用表表达式CTE简化复杂的查询语句

公用表表达式CTE是Sql Server 2005引入的一种新的表表达式。CTE在许多方面都类似于派生表。逻辑上CTE是一个临时结果集,它仅仅存在于它发生的语句中。您可以在SELECT、INSERT、DELETE、UPDATE或CTEATE VIEW语句中建立一个CTE。 CTE的优点 与派生表不同,C…

【转】搞机:window10安装Linux子系统(WSL)及迁移到非系统盘

转自:搞机:window10安装Linux子系统(WSL)及迁移到非系统盘_泛泛之素-CSDN博客_wsl移动到非系统盘 痛点: 在电脑上想要使用linux又想使用windows系统只能安装双系统,因为虚拟机的性能差且使用麻烦&#xf…

插座上的Linux充电器.不..Marvell Plug Computer

一直以来,台式机都有变小的趋势,于是变成了一体机,主机也有变小的趋势,那样可以占用更小的空间,却提供一样的功 能,Marvell Plug Computer 3.0 同样是那种壁插式主机,身形小巧,能够直…

【转】tftp命令详解

转自:tftp命令详解 - 张大猛 - 博客园 介绍一个 FTP客户端-IIS7服务器管理工具 作为FTP客户端,它支持批量管理ftp站点。定时上传和定时下载,定时备份,且操作简洁。同时iis7服务器管理工具还是vnc客户端。并且支持批量管理管理…

【转】聊聊Linux操作系统中的显示管理器及如何更换

转自:聊聊Linux操作系统中的显示管理器及如何更换 - linux-123 - 博客园 聊聊Linux操作系统中的显示管理器及如何更换 | 《Linux就该这么学》 什么是 Linux 中的显示管理器? 简单来说,显示管理器display manager(DM&#xff09…

【转】[WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx

转自&#xff1a;[WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx_Ryan ZHENG的专栏-CSDN博客 WSL2本质上是一个虚拟机&#xff0c;因此必然存在磁盘镜像文件。 默认情况下&#xff0c;这个镜像文件会放在C盘&#xff08;参考官网举例&#xff1a;%LOCALAPPDATA%\Packages<PackageFa…

【转】Ubuntu中SVN客户端安装+使用

转自&#xff1a;Ubuntu中SVN客户端安装使用_三少GG-CSDN博客 1、 安装 svn客户端&#xff1a; apt-get install subversion&#xff0c;然后根据提示一步一步&#xff0c;就完成了 svn的安装。当然&#xff0c;也可以源码安装 svn&#xff0c;下载 subversion 一个最新版本的源…