64 lines
3.2 KiB
Markdown
64 lines
3.2 KiB
Markdown
# Automated linux installation for hardware4future
|
|
This repo is for resources related to automated installation of linux on devices that are to be donated to others in the context of the project hardware for future.
|
|
|
|
## PXE boot
|
|
- Installing debian via pxe boot is done via serving the contents of netboot.tar.gz via tftp, follow the [official docs](https://wiki.debian.org/PXEBootInstall#Provide_the_boot_image).
|
|
+ We tried the dnsmasq way: no other tftp/dhcp server necessary. It worked.
|
|
- Unfortunately Linux Mint doesn't officially support PXE boot. We are currently trying the way in [ubuntu netboot docs](https://ubuntu.com/server/docs/how-to/installation/how-to-netboot-the-server-installer-on-amd64/).
|
|
+ Caution: don't serve the files for legacy boot, even our "old" hardwares are too new to support that. We need UEFI booting.
|
|
+ It allows serving a whole iso via HTTP. Can we serve the lmde7 iso this way?
|
|
+ So far without success. It seems the efi files we prepped do not like to linux mint iso.
|
|
|
|
|
|
### Working solution
|
|
- Supply these cli options to vmlinuz: `boot=live live-config ip=dhcp fetch=http://192.168.0.1/lmde-7-cinnamon-64bit.iso live-media-path=/live`
|
|
+ For legacy boot, in `pxelinux.cfg/default`
|
|
```
|
|
DEFAULT install-legacy
|
|
LABEL install-legacy
|
|
KERNEL vmlinuz
|
|
INITRD initrd.lz
|
|
APPEND boot=live live-config ip=dhcp fetch=http://192.168.0.1/lmde-7-cinnamon-64bit.iso live-media-path=/live
|
|
```
|
|
+ For EFI (tested succesfully with the Dell Latitude 5490 machines)
|
|
```
|
|
menuentry "LMDE 7 via HTTP ISO fetch" --class linuxmint {
|
|
set gfxpayload=keep
|
|
linux /vmlinuz boot=live live-config ip=dhcp fetch=http://192.168.0.1/lmde-7-cinnamon-64bit.iso live-media-path=/live quiet splash --
|
|
initrd /initrd.lz
|
|
}
|
|
```
|
|
- In dnsmasq config:
|
|
```
|
|
interface=<iface>,lo
|
|
domain=yourdomain.com
|
|
bind-interfaces
|
|
dhcp-range=<iface>,192.168.0.100,192.168.0.200
|
|
dhcp-match=set:efi-x86_64,option:client-arch,7
|
|
dhcp-boot=tag:efi-x86_64,grubx64.efi # this is very important, we do not want to boot `bootx64.efi`
|
|
enable-tftp
|
|
tftp-root=/srv/tftp
|
|
~
|
|
~
|
|
```
|
|
- These files must be in tftp root (may be incomplete for efi as it was not tested)
|
|
+ common to both legacy and efi (extract from the iso)
|
|
- vmlinuz
|
|
- initrd.lz
|
|
+ legacy
|
|
- pxelinux.0 (get from debian netboot.tar.gz)
|
|
- ldlinux.c32
|
|
+ Ensure the syslinux-common package is installed, then `cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/`
|
|
- pxelinux.cfg/default (checked into this repo)
|
|
+ efi (follow https://ubuntu.com/server/docs/how-to/installation/how-to-netboot-the-server-installer-on-amd64/#set-up-the-files-for-uefi-booting)
|
|
- grub/grub.cfg (checked into this repo)
|
|
- bootx64.efi
|
|
- grubx64.efi
|
|
- unicode.pf
|
|
|
|
|
|
# Customizing the install
|
|
Source of truth is [Debian wiki](https://www.debian.org/releases/trixie/amd64/apbs04.en.html)
|
|
## Installing specific list of packages
|
|
"If you want to install some individual packages in addition to packages installed by tasks, you can use the parameter pkgsel/include. The value of this parameter can be a list of packages separated by either commas or spaces, which allows it to be used easily on the kernel command line as well."
|
|
|