如何将 debian 安装程序指向 initrd.gz 中的 preseed.cfg?

如何将 debian 安装程序指向 initrd.gz 中的 preseed.cfg?

首先,很抱歉这篇文章很长。

好吧,我按照 Debian 网站上的指南预置了 Debian 安装,编写了preseed.cfg然后将其添加到initrd.gz就像他们所描述的那样。

我遵循的指南

这是预置 ISO 的脚本

#!/bin/bash 

COMMON_PATH=$HOME/test
ISO_NAME=debian11-net
RAW_DEBIAN_ISO=$COMMON_PATH/$ISO_NAME.iso
WORKDIR=$COMMON_PATH/DEBIAN_ISO_WORKDIR
PRESEED_FILE=$COMMON_PATH/preseed.cfg
PRESEED_ISO=$COMMON_PATH/$ISO_NAME-preseeded.iso

function preseed(){
  ##### Scrub workdir
  sudo rm -rf $WORKDIR/*

  #### Mount image
  mkdir -p $WORKDIR/loopdir
  sudo mount -o loop $RAW_DEBIAN_ISO $WORKDIR/loopdir/

  #### Copy extracted/mounted image
  mkdir -p $WORKDIR/isodir
  cp -rT $WORKDIR/loopdir $WORKDIR/isodir

  # delete the temp loop dir
  sudo umount $WORKDIR/loopdir
  sudo rm -rf $WORKDIR/loopdir/

  #### unzip initrd
  sudo chmod +w -R $WORKDIR/isodir/install.amd/
  gunzip $WORKDIR/isodir/install.amd/initrd.gz

  #### add preseed file to initrd
  echo $PRESEED_FILE | cpio -H newc -o -A -F $WORKDIR/isodir/install.amd/initrd

  #### zip back initrd
  gzip $WORKDIR/isodir/install.amd/initrd
  sudo chmod -w -R $WORKDIR/isodir/install.amd/

  #### Fix md5sum
  cd $WORKDIR/isodir 
  sudo chmod +w md5sum.txt
  find -follow -type f ! -name md5sum.txt -print0 | xargs -0 md5sum > md5sum.txt
  sudo chmod -w md5sum.txt
  cd ..

  ##### Create ISO
  sudo chmod +w $WORKDIR/isodir/isolinux/isolinux.bin
  genisoimage -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat \
            -no-emul-boot -boot-load-size 4 -boot-info-table \
            -o $PRESEED_ISO $WORKDIR/isodir/
  sudo chmod -w $WORKDIR/isodir/isolinux/isolinux.bin

  # commented out for checking the output image files
  # sudo rm -rf $WORKDIR/isodir/

}
preseed;

exit 0

这是实际的预置文件

#_preseed_V1

### Localization
d-i debian-installer/locale string en_US
### Keyboard selection.
d-i keyboard-configuration/xkb-keymap select us
### Network configuration
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string someHostName
d-i netcfg/get_domain string someDomainname
d-i netcfg/wireless_wep string
### Mirror settings
d-i mirror/country string manual
d-i mirror/http/hostname string http.es.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
# Suite to install.
d-i mirror/suite string testing
### Account setup
d-i passwd/root-password-crypted password $2b$10$/YuZPntPhCZfjEi3LNWXZer3W1HYiy25rgtoBged4nf026RNXfGzC
d-i passwd/user-fullname string firstName lastName
d-i passwd/username string myUsername
d-i passwd/user-password-crypted password $2b$10$/ly237ccHCsTATdtVGpP3eRs65Oe7BWdi58G1z.jfEoFw0./TfH1m
d-i passwd/user-default-groups string sudo audio video plugdev netdev
### Clock and time zone setup
d-i clock-setup/utc boolean true
d-i time/zone string America/New_York
d-i clock-setup/ntp boolean true
### Partitioning
# choosing the smallest partition first
d-i partman/early_command \
  string PRIMARYDISK=/dev/$(lsblk -o name sort \
  size --include 8 \
  | head -n 1) \
  debconf-set partman-auto/disk "$PRIMARYDISK";

d-i partman-auto/method string regular
d-i partman-auto/expert_recipe string        \
    boot-root ::                             \
        30000 30000 30000 ext4               \
        \$primary{ } \$bootable{ }           \
        method{ format } format{ }           \
        use_filesystem{ } filesystem{ ext4 } \
        mountpoint{ / } .                    \
                                             \
        219000 220000 220000 ext4            \
        method{ format } format{ }           \
        use_filesystem{ } filesystem{ ext4 } \
        mountpoint{ /home } .                

### Apt setup
d-i apt-setup/cdrom/set-first boolean false
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
### Package selection
tasksel tasksel/first multiselect standard
d-i pkgsel/include string build-essential
popularity-contest popularity-contest/participate boolean true
### Boot loader installation
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean false
### Finishing up the installation
d-i finish-install/reboot_in_progress note

我期望发生什么

我需要能够使用预置的便携的任何机器上的 ISO,不需要单击任何内容,Debian 安装程序应该立即自动开始读取preseed.cfg并配置我的操作系统。

我读到可以使用 initrd 方法。

实际发生的情况

安装继续进行,就好像没有预置文件一样,并提示我使用常用​​的安装菜单。正常的手动安装过程。

我尝试过的

作为调试方法:我选择了auto installation选项“似乎 initrd 仍处于压缩状态,我无法链接到它”。

我发现另一篇文章建议删除安装菜单。我尝试过,但似乎它会退回到其他菜单版本或其他版本。

我不记得另一篇文章指出有一种方法可以修改某个子菜单,例如graphical install告诉它在单击时自动查找预置。

我还在某处读到可以让虚拟机自动执行此操作。

但这不是我真正想要的。

相关内容