]> www.opopop.net Git - reminder/blobdiff - booting_linux_from_a_loop_file_system.mdwn
Several partitions inside NTFS handled
[reminder] / booting_linux_from_a_loop_file_system.mdwn
index 9148938ff275976a8c15b71b8013fc72a7aca5b8..daeca274850af2aa46470732e90b7d9764a77982 100644 (file)
@@ -80,7 +80,7 @@ You are encouraged to explore the initramfs file created by the
 installation process (called like /boot/initrd.img-2.6...) to
 understand fully how the following works.
 
-# Modifying initramsfs content
+# Modifying initramfs content
 
 The root file system is to be given as the root= option for the
 kernel, normally a partition name. In our case, we need 2 pieces of
@@ -163,7 +163,8 @@ without the installer CD, you have these choices:
   to load it from there
 * in case of network booting, upload kernel
   image and initramfs file to another host
-  configured as a bootp or dhcp server.
+  configured as a bootp or dhcp server. For how 
+  to do that, see for instance [[booting_linux_through_the_network]]
 
 Notice how the /boot directory content on /somedir/myownrootfs will
 never be used when booting; it is only there to feed the booting
@@ -203,7 +204,46 @@ Then, you can reboot with the just burned CD. In case of problems,
 [use the break= or debug
 kernel options](http://wiki.debian.org/InitramfsDebug).
 
-Related links:
+# Several partitions inside NTFS
+
+If you have separate /var, /usr or /home partitions as loop filesystems inside the NTFS partition, you will certainly not get a full boot at the first trial. Let's see why.
+
+When you initramfs has run pivot_root to switch to the final / partition inside the NTFS partition, the new /sbin/init loses all knowledge that the NTFS partition is actually mounted and must rely on information in /etc/fstab to mount the remaining /var, /usr or /home. Obviously, the entry for these partitions will be some loop file mount from the NTFS partition, which must be mounted **first**.
+
+Because the order of mounting the filesystems in /etc/fstab is random, you have to force mounting the NTFS partition first (which was already mounted inside initramfs, remember; doesn't you head spin now?). Here is a diff from a Squeeze installation which shows my hackish solution:
+
+<pre>
+$ diff -C 2 /etc/init.d/checkfs.sh /etc/init.d/checkfs.sh-O 
+*** /etc/init.d/checkfs.sh     2012-02-09 18:19:55.000000000 +0100
+--- /etc/init.d/checkfs.sh-O   2011-01-01 06:55:27.000000000 +0100
+***************
+*** 140,145 ****
+  }
+  
+- mount -a -t ntfs
+- 
+  case "$1" in
+    start|"")
+--- 140,143 ----
+$ diff -C 2 /etc/init.d/mountall.sh /etc/init.d/mountall.sh-O 
+*** /etc/init.d/mountall.sh    2012-02-09 18:17:40.000000000 +0100
+--- /etc/init.d/mountall.sh-O  2011-01-01 06:55:27.000000000 +0100
+***************
+*** 28,32 ****
+       #
+       mount_all_local() {
+!          mount -a -t nontfs,nfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,gfs2 \
+               -O no_netdev
+       }
+--- 28,32 ----
+       #
+       mount_all_local() {
+!          mount -a -t nonfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,gfs2 \
+               -O no_netdev
+       }
+</pre>
+
+# Related links
 
 * comparing initramfs with an [alternative](http://wiki.debian.org/InitrdReplacementOptions)
 * what is said about initramfs by the [Debian competition](http://en.gentoo-wiki.com/wiki/Initramfs)