From: admin Date: Mon, 19 Mar 2012 21:02:47 +0000 (+0000) Subject: Several partitions inside NTFS handled X-Git-Url: http://www.opopop.net/cgi-bin/gitweb.cgi?p=reminder;a=commitdiff_plain;h=a00ac18a01b971a9758014feb217d6e4ffba0456 Several partitions inside NTFS handled --- diff --git a/booting_linux_from_a_loop_file_system.mdwn b/booting_linux_from_a_loop_file_system.mdwn index 9148938..daeca27 100644 --- a/booting_linux_from_a_loop_file_system.mdwn +++ b/booting_linux_from_a_loop_file_system.mdwn @@ -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: + +
+$ 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
+  	}
+
+ +# 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)