This is an old revision of the document!
Not finished, just notes.
:rhel_8.5 set rhel-ver 8.5 goto rhel_server_ks :rhel_server_ks imgfree kernel ${main-url}/rhel-install/RHEL${rhel-ver}-server-x86_64/isolinux/vmlinuz || goto failed initrd ${main-url}/rhel-install/RHEL${rhel-ver}-server-x86_64/isolinux/initrd.img || goto failed imgargs vmlinuz initrd=initrd.img ip=dhcp inst.repo=${main-url}/rhel-install/RHEL${rhel-ver}-server-x86_64 inst.noverifyssl ramdisk_size=1024 console=ttyS1,115200 console=tty0 || goto failed boot || goto failed
/rhel-install/RHEL${rhel-ver}-server-x86_64: is the extracted ISO.
:ubuntu_20.04 set release focal set type server goto ubuntu_server :ubuntu_20.04_nfs set release focal set type server goto ubuntu_server_nfs :ubuntu_server_nfs imgfree kernel ${boot-url}ubuntu/${release}/${type}/vmlinuz initrd=initrd netboot=nfs nfsroot=192.168.1.1:/srv/iso/ubuntu/${release}/${type} console=ttyS0 console=tty0 autoinstall net.ifnames=0 biosdevname=0 ip=dhcp ipv6.disable=1 ds=nocloud-net;s=${boot-url}ubuntu/cloud-init/ initrd ${boot-url}ubuntu/${release}/${type}/initrd boot :ubuntu_server imgfree kernel ${boot-url}ubuntu/${release}/${type}/vmlinuz initrd=initrd console=ttyS0 console=tty0 autoinstall url=${boot-url}ubuntu/${release}/live-${type}-${arch}.iso net.ifnames=0 biosdevname=0 ip=dhcp ipv6.disable=1 ds=nocloud-net;s=${boot-url}ubuntu/cloud-init/ initrd ${boot-url}ubuntu/${release}/${type}/initrd boot
Some environments will require nfs-kernel-server
to set port numbers for rpcmountd
, mountd
, and nlockmgr
. It manifests itself as mount -t nfs server:/path/to/folder
working, but /usr/lib/klibc/bin/nfsmount -o nolock -o ro <nfsserveriporhostname>:/srv/iso/ubuntu/focal/server /mnt
getting a connection timeout.
:focaldesktopiso imgfree kernel ${boot-url}nfs/focal/casper/vmlinuz initrd ${boot-url}nfs/focal/casper/initrd imgargs vmlinuz initrd=initrd boot=casper ip=dhcp url=${boot-url}ubuntu/focal/ubuntu-20.04.1-desktop-amd64.iso maybe-ubiquity boot
ipxe menu item
:groovyserver imgfree kernel ${boot-url}ubuntu/groovy/iso/vmlinuz initrd=initrd autoinstall url=${boot-url}ubuntu/groovy/iso/groovy-live-server-amd64.iso net.ifnames=0 biosdevname=0 ip=dhcp ipv6.disable=1 ds=nocloud-net;s=${boot-url}ubuntu/groovy/cloud-init/ initrd ${boot-url}ubuntu/groovy/iso/initrd boot
File structure:
tftp$ find ubuntu/groovy/ ubuntu/groovy/ ubuntu/groovy/iso ubuntu/groovy/iso/initrd ubuntu/groovy/iso/groovy-live-server-amd64.iso ubuntu/groovy/iso/vmlinuz ubuntu/groovy/cloud-init ubuntu/groovy/cloud-init/meta-data ubuntu/groovy/cloud-init/user-data
meta-data
instance-id: groovy-autoinstall
user-data aka autoinstall.yml
#cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64] uri: http://us.archive.ubuntu.com/ubuntu identity: {hostname: autoinstall-00, password: $6$supersecretpasswdhash, realname: phil, username: phil} keyboard: {layout: us, variant: ''} locale: en_US.UTF-8 network: network: ethernets: eth0: critical: true dhcp-identifier: mac dhcp4: true version: 2 ssh: allow-pw: true authorized-keys: - "authkey ed25519 FTW" install-server: true storage: grub: reorder_uefi: False config: - {ptable: gpt, wwn: '0x50026b77832fae66', path: /dev/sda, wipe: superblock, preserve: false, name: '', grub_device: false, type: disk, id: disk-sda} - {device: disk-sda, size: 536870912, wipe: superblock, flag: boot, number: 1, preserve: false, grub_device: true, type: partition, id: partition-0} - {fstype: fat32, volume: partition-0, preserve: false, type: format, id: format-0} - {device: disk-sda, size: 1073741824, wipe: superblock, flag: '', number: 2, preserve: false, grub_device: false, type: partition, id: partition-1} - {fstype: ext4, volume: partition-1, preserve: false, type: format, id: format-1} - {device: disk-sda, size: 238444085248, wipe: superblock, flag: '', number: 3, preserve: false, grub_device: false, type: partition, id: partition-2} - name: ubuntu-vg devices: [partition-2] preserve: false type: lvm_volgroup id: lvm_volgroup-0 - {name: ubuntu-lv, volgroup: lvm_volgroup-0, size: 119220994048B, preserve: false, type: lvm_partition, id: lvm_partition-0} - {fstype: ext4, volume: lvm_partition-0, preserve: false, type: format, id: format-2} - {device: format-2, path: /, type: mount, id: mount-2} - {device: format-1, path: /boot, type: mount, id: mount-1} - {device: format-0, path: /boot/efi, type: mount, id: mount-0} version: 1 user-data: timezone: America/Chicago disable_root: false late-commands: - echo 'phil ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu - sed -ie 's/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX="net.ifnames=0 ipv6.disable=1 biosdevname=0"/' /target/etc/default/grub - curtin in-target --target /target update-grub2
list of bugs
#!ipxe :freedos :freedosfirmware sanhook ${boot-url}firmware/precision_3420/payload.img || goto failed sanboot --no-describe --drive 0x00 ${boot-url}firmware/freedos12.img boot || goto failed :failed echo Booting failed, dropping to shell goto shell
truncate payload.img --size 32MB sfdisk payload.img << EOF 63,,b EOF
losetup --partscan /dev/loop20 ./payload.img mkfs.vfat /dev/loop20p1
mount /dev/loop20p1 /mnt/ cp <necessary files> /mnt/ umount /mnt losetup -d /dev/loop20
mkdir C:\temp\winpe copype x86 C:\temp\winpe\x86 copype amd64 C:\temp\winpe\amd64
dism /mount-image /imagefile:"C:\temp\winpe\amd64\media\sources\boot.wim" /index:1 /mountdir:"C:\temp\winpe\amd64\mount" dism /image:C:\temp\winpe\amd64\mount /add-driver /driver:c:\temp\winpe\drivers /recurse /forceunsigned dism /unmount-image /mountdir:"C:\temp\winpe\amd64\mount" /commit
dism /mount-image /imagefile:"C:\temp\winpe\x86\media\sources\boot.wim" /index:1 /mountdir:"C:\temp\winpe\x86\mount" dism /image:C:\temp\winpe\x86\mount /add-driver /driver:c:\temp\winpe\drivers /recurse /forceunsigned dism /unmount-image /mountdir:"C:\temp\winpe\x86\mount" /commit
sudo apt-get install libnss3-tools pesign git clone https://github.com/rhboot/shim.git cd shim ENABLE_SHIM_CERT=yes make