UFSの備忘録 % Home / Categories

制作能通过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.cfginitrd

$ 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的方法:

下载isolinuxsyslinux-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

参考:

Categories: [Linux] [security]