制作能通过ssh安装的Debian ISO
Created 2022-05-18 / Updated 2022-05-19一、从debian官方下载linux和initrd.gz这两个文件
$ mkdir ~/iso
$ cd iso
$ wget https://xxx/linux
$ wget https://xxx/initrd.gz
二、新建preseed.cfg
文件,内容如下:
d-i debian-installer/locale string en_GB
d-i keyboard-configuration/xkb-keymap select us
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/hostname string somehost
d-i anna/choose_modules string network-console
d-i preseed/early_command string anna-install network-console
d-i network-console/password password <ssh登录时的密码>
d-i network-console/password-again password <重复一遍ssh登录时的密码>
d-i mirror/country string manual
d-i mirror/http/hostname string deb.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
三、添加preseed.cfg
到initrd
:
$ gunzip initrd.gz
$ echo preseed.cfg | cpio -H newc -o -A -F initrd
$ gzip initrd
(没有cpio
这个命令的可以安装cpio
这个软件包)
四、为iso添加启动引导(可选grub或isolinux):
1、grub的方法:
下载grub-legacy的deb包,提取里面的文件。
$ dpkg -X ./grub-legacy_0.97-77_amd64.deb /tmp/grub
$ mkdir -p ~/iso/boot/grub
$ cp /tmp/grub/usr/lib/grub/x86_64-pc/stage2_eltorito ~/iso/boot/grub/
添加引导菜单:
$ vi ~/iso/boot/grub/menu.lst
default 0
timeout 3
title Netinst
kernel /linux
initrd /initrd.gz
boot
2、isolinux的方法:
下载isolinux与syslinux-common这两个deb包并提取文件。
$ dpkg -X ./isolinux.deb /tmp/isolinux
$ dpkg -X ./syslinux-common.deb /tmp/syslinux
$ mkdir -p ~/iso/isolinux
$ cp /tmp/isolinux/usr/lib/ISOLINUX/isolinux.bin ~/iso/isolinux/
$ cp /tmp/syslinux/usr/lib/syslinux/modules/bios/ldlinux.c32 ~/iso/isolinux/
添加引导菜单:
$ vi ~/iso/isolinux/isolinux.cfg
default Netinst
timeout 3
label Netinst
kernel /linux
append initrd=/initrd.gz auto=true vga=normal
五、生成iso文件:
需要用到mkisofs
这个命令,没有可以安装genisoimage
这个软件包:
# apt-get install genisoimage
生成iso(grub):
$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o netinst-grub.iso ./iso/
生成iso(isolinux):
$ mkisofs -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o netinst-isolinux.iso ./iso/
ssh登录时的用户名为installer
。
参考:
- https://www.debian.org/releases/bullseye/amd64/apbs04.en.html
- https://wiki.debian.org/DebianInstaller/Preseed/EditIso
- https://www.gnu.org/software/grub/manual/legacy/Making-a-GRUB-bootable-CD_002dROM.html