| @@ -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. | |||