Welcome to the Tiny Core Linux Wiki at tinycorelinux.net!

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

wiki:dynamic_root_filesystem_remastering [2012/05/29 02:55]
la11111 added info about grub/ipxe and multiple initramfs's
wiki:dynamic_root_filesystem_remastering [2013/01/04 13:57] (current)
BobBagwill typos
Line 3: Line 3:
 ====== Introduction ====== ====== Introduction ======
  
-The method described here allows you to modify the root filesystem of a TC/MC system without actually modify the tinycore.gz/microcore.gz files. This is particularly useful when you want your remaster to work with a new version of TC/MC or if you for some other reason want to remaster the root filesystem without having to modify the root filesystem files shipped by TC/MC.+The method described here allows you to modify the root filesystem of a TC/MC system without actually modifying the tinycore.gz/microcore.gz files. This is particularly useful when you want your remaster to work with a new version of TC/MC or if you for some other reason want to remaster the root filesystem without having to modify the root filesystem files shipped by TC/MC.
  
 The method is based on the capability of the syslinux family bootloaders (syslinux, isolinux, extlinux, pxelinux) to load multiple initramfs images during boot. If you are using Grub you could still use this method by chainloading from Grub to a syslinux family bootloader. It is also possible to pass multiple initramfs images to linux [[http://en.gentoo-wiki.com/wiki/Initramfs#Multiple_initramfs|from grub directly]], as well as from [[http://www.ipxe.org/cmd/imgfetch|iPXE]] / [[http://etherboot.org/wiki/commandline|gPXE]]. The method is based on the capability of the syslinux family bootloaders (syslinux, isolinux, extlinux, pxelinux) to load multiple initramfs images during boot. If you are using Grub you could still use this method by chainloading from Grub to a syslinux family bootloader. It is also possible to pass multiple initramfs images to linux [[http://en.gentoo-wiki.com/wiki/Initramfs#Multiple_initramfs|from grub directly]], as well as from [[http://www.ipxe.org/cmd/imgfetch|iPXE]] / [[http://etherboot.org/wiki/commandline|gPXE]].
Line 10: Line 10:
  
 ====== Install extlinux ====== ====== Install extlinux ======
-In order to install extlinux to your boot partition you need have the TC ''syslinux.tgz'' extension installed on your system and the boot partition mounted. My boot partition is mounted under ''/mnt/hda1'' and I install extlinux at ''/mnt/hda1/boot/extlinux''.+In order to install extlinux to your boot partition you need have the TC ''syslinux.tcz'' extension installed on your system and the boot partition mounted. My boot partition is mounted under ''/mnt/hda1'' and I install extlinux at ''/mnt/hda1/boot/extlinux''.
  
 To install extlinux you do: To install extlinux you do:
Line 16: Line 16:
 <code>sudo extlinux -i /mnt/hda1/boot/extlinux</code> <code>sudo extlinux -i /mnt/hda1/boot/extlinux</code>
  
-This will make the file ''extlinux.sys'' to appear in the installation directory. (Mount the device manually: "mount /dev/xxx /mnt/xxx". Using the mount tool provided by tinycore extlinux will give you an error (it can't install to devices mounted with loop)+This will make the file ''extlinux.sys'' appear in the installation directory. (Mount the device manually: "mount /dev/xxx /mnt/xxx". Using the mount tool provided by tinycore extlinux will give you an error (it can't install to devices mounted with loop).
  
-In case extlinux is the only bootloader on your system you need to update the MBR of the boot device (note that if you are using grub and want to keep it that way DO NOT perfom the following action). To update the MBR+In case extlinux is the only bootloader on your systemyou need to update the MBR of the boot device (note that if you are using grub and want to keep it that way DO NOT perfom the following action). To update the MBR
  
 <code>sudo cat /usr/local/lib/syslinux/mbr.bin > /dev/XXX</code> <code>sudo cat /usr/local/lib/syslinux/mbr.bin > /dev/XXX</code>
  
-where ''/dev/XXX'' is the appropriate master devive (in my case ''/dev/hda'').+where ''/dev/XXX'' is the appropriate master device (in my case ''/dev/hda'').
  
 To be able to use the menu features of the syslinux family bootloaders you should: To be able to use the menu features of the syslinux family bootloaders you should:
Line 45: Line 45:
 label my_remaster label my_remaster
  menu label Microcore with remaster  menu label Microcore with remaster
- kernel /boot/bzImage + kernel /boot/vmlinuz 
- initrd /boot/microcore.gz,/boot/my_initramfs.gz+ initrd /boot/core.gz,/boot/my_initramfs.gz
  append base  append base
  
 label mc_original label mc_original
  menu label Microcore without remaster  menu label Microcore without remaster
- kernel /boot/bzImage + kernel /boot/vmlinuz 
- initrd /boot/microcore.gz+ initrd /boot/core.gz
  append base  append base
  
Line 66: Line 66:
 The core part for the remaster function is the line: The core part for the remaster function is the line:
  
-<code> initrd /boot/microcore.gz,/boot/my_initramfs.gz</code>+<code> initrd /boot/core.gz,/boot/my_initramfs.gz</code>
  
-This tells extlinux to load both ''microcore.gz'' AND ''my_initramfs.gz'' and create a root file system that is the combination of the two.+This tells extlinux to load both ''core.gz'' AND ''my_initramfs.gz'' and create a root file system that is the combination of the two.
  
  
Line 89: Line 89:
 </code> </code>
  
-Once all files to be included into the root filesystem are in place it is time to create the archive and copy it to the boot partition.+Once all files to be included into the root filesystem are in placeit is time to create the archive and copy it to the boot partition.
  
 |<code>$ find | sudo cpio -o -H newc | gzip > ../my_initramfs.gz| |<code>$ find | sudo cpio -o -H newc | gzip > ../my_initramfs.gz|
Line 109: Line 109:
  
 When you boot via grub you just select the boot entry named ''EXT-CHAIN'' and that would continue the boot process using your extlinux setup. Note that you might need to change ''(hd0,0)'' to something that fits your system. When you boot via grub you just select the boot entry named ''EXT-CHAIN'' and that would continue the boot process using your extlinux setup. Note that you might need to change ''(hd0,0)'' to something that fits your system.
 +
 +====== Loading multiple initramfs images via gPXE/iPXE ======
 +gPXE/iPXE are capable of passing multiple initramfs images to the kernel as well. The following example gPXE script will download ''core.gz'' and ''my_initramfs.gz'' from ''some.server'' and pass both of them to Linux to be unpacked on boot:
 +<code>
 +#!gpxe
 +kernel http://some.server/vmlinuz
 +initrd http://some.server/core.gz
 +initrd http://some.server/my_initramfs.gz
 +boot
 +</code>
Print/export