Aanmaken van de Linux KernelIk maakte het loopback-device met Linux-kernel versie 2.0.31, ook andere versies zouden moeten werken, maar op z'n minst moeten de volgende opties opgenomen zijn.De kernel-opties die je zal moeten activeren zijn: RAM disk support (CONFIG_BLK_DEV_RAM).Initial RAM disk (initrd) support (CONFIG_BLK_DEV_INITRD).Loop device support (CONFIG_BLK_DEV_LOOP).fat fs support (CONFIG_FAT_FS).msdos fs support (CONFIG_MSDOS_FS).De eerste twee zijn voor het RAM-diskdevice zelf en voor het initiële ramdisk-device. De volgende is de optie voor het loopback bestandssysteem. De laatste twee bestaan uit de ondersteuning voor het msdos bestandssysteem welke nodig is voor het mounten van de DOS-partitie.Een kernel compileren zonder modules is de eenvoudigste optie, alhoewel het mogelijk zou moeten zijn als je modules wilt, ik heb het echter niet geprobeerd. Als er modules worden gebruikt, dan zou je ervoor moeten zorgen dat je de bovenstaande opties hebt meegecompileerd en niet als modules.Mogelijk moet je afhankelijk van de door jouw gebruikte kernel een kernelpatch toepassen. Het is een zeer eenvoudige patch die het je mogelijk maakt het loopback-device als root-bestandssysteem te gebruiken. Kernelversies voor 2.0.0; hierover heb ik geen informatie.Kernelversie 2.0.0 tot 2.0.34; je moet een kernelpatch toepassen voor 2.0.x kernels zoals hieronder wordt getoond.Kernelversie 2.0.35 tot 2.0.x; een kernelpatch is niet nodig.Kernelversie 2.1.x; je moet een kernelpatch toepassen voor 2.0.x of 2.2.x kernels zoals hieronder wordt getoond, afhankelijk van de exacte 2.1.x versie.Kernelversie 2.2.0 tot 2.2.10; je moet de kernelpatch toepassen voor 2.2.x kernels zoals hieronder getoond.Kernelversie 2.3.x; je moet de kernelpatch toepassen voor 2.2.x kernels zoals hieronder getoond.Bij 2.0.x kernels moet er in het bestand /init/main.c een enkele regel worden toegevoegd zoals is weergegeven in de hieronder gewijzigde versie. De regel met "loop", 0x0700 is de regel die werd toegevoegd.static void parse_root_dev(char * line) { int base = 0; static struct dev_name_struct { const char *name; const int num; } devices[] = { { "nfs", 0x00ff }, { "loop", 0x0700 }, { "hda", 0x0300 }, ... { "sonycd", 0x1800 }, { NULL, 0 } }; ... }Bij 2.2.x kernels moeten aan het bestand /init/main.c drie regels worden toegevoegd zoals door de gewijzigde versie hieronder wordt getoond. De regel waarin staat "loop", 0x0700 en de regel ervoor en erna zijn degenen die moeten worden toegevoegd.static struct dev_name_struct { const char *name; const int num; } root_dev_names[] __initdata = { #ifdef CONFIG_ROOT_NFS { "nfs", 0x00ff }, #endif #ifdef CONFIG_BLK_DEV_LOOP { "loop", 0x0700 }, #endif #ifdef CONFIG_BLK_DEV_IDE { "hda", 0x0300 }, ... { "ddv", DDV_MAJOR << 8}, #endif { NULL, 0 } };Zodra de kernel is geconfigureerd, kan het worden gecompileerd waarmee een bestand zImage wordt geproduceerd (make zImage). Dit bestand zal na de compilatie te vinden zijn in arch/i386/boot/zImage.