|
|
@@ -40,7 +40,7 @@ A few files must be copied to the initramfs in order to make this work. First we |
|
|
|
|
|
|
|
In `/etc/initramfs-tools/hooks/` create an executable script with the name of your choice. Here's the content: |
|
|
|
|
|
|
|
```` |
|
|
|
``` |
|
|
|
#!/bin/bash |
|
|
|
. /usr/share/initramfs-tools/hook-functions |
|
|
|
|
|
|
@@ -78,9 +78,80 @@ do |
|
|
|
exit 1; |
|
|
|
fi |
|
|
|
done |
|
|
|
```` |
|
|
|
``` |
|
|
|
|
|
|
|
After that you'll need to `update-initramfs -u` |
|
|
|
|
|
|
|
# Boot |
|
|
|
**Boot and it should just work! Happy IPv6!** |
|
|
|
|
|
|
|
# Final notes |
|
|
|
|
|
|
|
## iPXE & NFS |
|
|
|
|
|
|
|
Due to incompatible limiting requirements of iPXE and initramfs, both must be run on separate subnets. You will need one interface for iPXE and one for NFS. |
|
|
|
|
|
|
|
### radvd.conf |
|
|
|
``` |
|
|
|
# iPXE needs SLAAC and DHCPv6 options |
|
|
|
interface bridge0 { |
|
|
|
IgnoreIfMissing on; |
|
|
|
AdvSendAdvert on; |
|
|
|
AdvOtherConfigFlag on; |
|
|
|
AdvDefaultLifetime 0; |
|
|
|
AdvLinkMTU 9000; |
|
|
|
AdvCurHopLimit 64; |
|
|
|
AdvReachableTime 0; |
|
|
|
MaxRtrAdvInterval 600; |
|
|
|
MinRtrAdvInterval 198; |
|
|
|
AdvDefaultPreference low; |
|
|
|
AdvRetransTimer 0; |
|
|
|
AdvManagedFlag off; |
|
|
|
prefix <your PXE /64>::/64 { }; |
|
|
|
RDNSS <your dnsmasq server (yourself) IP, must be in the same subnet>:: { }; |
|
|
|
}; |
|
|
|
|
|
|
|
# busybox/initramfs needs DHCPv6 |
|
|
|
interface bridge2 { |
|
|
|
IgnoreIfMissing on; |
|
|
|
AdvSendAdvert on; |
|
|
|
AdvOtherConfigFlag off; |
|
|
|
AdvDefaultLifetime 0; |
|
|
|
AdvLinkMTU 9000; |
|
|
|
AdvCurHopLimit 64; |
|
|
|
AdvReachableTime 0; |
|
|
|
MaxRtrAdvInterval 600; |
|
|
|
MinRtrAdvInterval 198; |
|
|
|
AdvDefaultPreference low; |
|
|
|
AdvRetransTimer 0; |
|
|
|
AdvManagedFlag off; |
|
|
|
prefix <your NFS /64>::/64 { |
|
|
|
AdvAutonomous off; |
|
|
|
}; |
|
|
|
}; |
|
|
|
``` |
|
|
|
### isc-dhcp-server6 dhcpd6.conf |
|
|
|
``` |
|
|
|
# PXE |
|
|
|
subnet6 <your PXE /64>::/64 { |
|
|
|
option dhcp6.bootfile-url "http://<pxe server hostname>?uuid=${uuid}&op=ipxe"; |
|
|
|
} |
|
|
|
# NFS |
|
|
|
subnet6 <your NFS /64>::/64 { |
|
|
|
range6 <your NFS /64>::1 <your NFS /64>::ffff; |
|
|
|
option dhcp6.name-servers <your NFS server>::; |
|
|
|
} |
|
|
|
``` |
|
|
|
|
|
|
|
### dnsmasq |
|
|
|
``` |
|
|
|
# leave everything to defaults except |
|
|
|
interface=bridge1 |
|
|
|
interface=bridge2 |
|
|
|
no-dhcp-interface=bridge1 |
|
|
|
no-dhcp-interface=bridge2 |
|
|
|
``` |
|
|
|
|
|
|
|
### /etc/hosts |
|
|
|
DO NOT MAKE YOUR VMs depend on VMs to boot !!! |
|
|
|
If your DNS server is a VM, make sure that the hostnames used to boot (pxe server hostname, nfs server hostname) can be resolved by dnsmasq, the easiest way to ensure this is to add them to /etc/hosts which dnsmasq will use by default. |