转自:重新打包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

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

  1. ISA Server 2006的全自动无人职守安装

    ISA Server 2006的全自动无人职守安装 王春海 有些服务器,例如作为托管的服务器来说,把服务器放到托管机房后,所有对服务器的管理与操作都要通过远程控制来进行,如在服务器上安装一些软件.修改 ...

  2. 无人职守安装的设计与部署

    无人职守安装的设计与部署      (2009-2-19)       安装前需要生成一个应答文件,此时需要一个光盘中的工具. 首先,将WINDOWN2003光盘载入CD,---单击退出.接下来打开光 ...

  3. 网络无人自动安装centos 6.2 + PXE + httpd + kickstart

    centos 6.2 +PXE +httpd + system-config-kickstart 网络无人自动安装   注意:因为dhcpd  和tftp 的 某几个选项和配置文件在centos 5. ...

  4. PXE网络无人职守安装

    PXE网络无人职守安装 DHCP.TFTP.NFS.APACHE为同一台服务器:192.168.0.1 yum -y install dhcp xinetd tftp-server syslinux ...

  5. Linux中的无人职守安装脚本kickstart

    Linux中的无人职守安装脚本kickstart 1 kickstart自动安装脚本的作用 2 实验环境 3 kickstart自动安装脚本的制作 3.1 通过模板生成kickstart文件 3.2用 ...

  6. 打包解决方案后,安装时提示只能在IIS5.1以上运行解决方法

    打包解决方案后,安装时提示只能在IIS5.1以上运行解决方法 参考文章: (1)打包解决方案后,安装时提示只能在IIS5.1以上运行解决方法 (2)https://www.cnblogs.com/wp ...

  7. 电话无人应答转总机的配置方法

    要求:外线打入的电话先由总机接,然后转分机,如果分机无人应答或忙,则又转入总机! 我的思路:配置一个cover path ,设置外部呼入有效和响铃次数...                然后,ch ...

  8. DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路...

    先说废话 很多朋友对我写的这个系列的第五篇比较感兴趣:http://www.cnblogs.com/liulun/archive/2011/12/08/2280110.html 因为我承诺第五篇就公布 ...

  9. 使用VS自带的打包工具,制作winform安装项目

    开发环境:VS2008 Access 操作系统:Windows XP 开发语言:C# 项目名称:**管理系统 步骤: 1.打开开发环境VS2010,新建项目,选择其他项目类型,再选择"安装项 ...

最新文章

  1. LA3177 - Beijing Guards(二分+贪心【更优美的解法)
  2. python语言入门w-python基础知识(一)
  3. python post请求参数为list_浅谈python3发送post请求参数为空的情况
  4. CodeForces - 1486C2 Guessing the Greatest (hard version)(二分+交互)
  5. 并不对劲的bzoj5475:loj2983:p5206:[wc2019]数树
  6. 基于Semtech LoRa SX1268 电路设计及PCB布局
  7. VOIP,PSTN,ISDN
  8. ios中解决图片渲染问题
  9. linux 文件格式压缩
  10. Ubuntu安装Docker引擎和支持HTTPS的docker-registry服务
  11. [转]在VS2010 VC++项目中引用Lib静态库(以Openssl为例)
  12. 【方案分享】2020娜扎X薇娅SKG娜小古直播方案.pdf(附下载链接)
  13. 32位数据源中没有mysql_基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器...
  14. Ubuntu18.04 如何用gcc编译objective-c
  15. 【C语言练习——打印上三角及其变形】
  16. 【mind+ Maixduino用户库】NES 游戏扩展库
  17. 【Word】如何生成左侧的索引目录
  18. idea安装插件plugin(主要针对网络连接不上的情况)
  19. android编码技巧_我如何使用编码技巧使航空公司取代丢失的婴儿车
  20. 【raft】学习五:日志结构raftLog

热门文章

  1. 【算法设计与分析】06 几类重要的函数
  2. VS2017社区版30天到期无法使用的激活方法
  3. Python学习之路:多态实例
  4. 2017-03-16 Codeforces 453A 概率期望,思维 UOJ 228(待补)
  5. [APIO2016]
  6. 如何将每一条记录放入到对应的范围中
  7. hdu--1231--并查集连分量的个数
  8. 康宁玻璃ct值计算公式_【钦州】CT室铅板生产厂家
  9. android中怎么保存checkbox中的checked属性_第二十四天HTML中的form表单
  10. ubuntu安装提醒写入失败 没有启动项_手把手教你如何安装windo10+Ubuntu18.10双系统...