summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2012-05-14 02:05:50 +0200
committerDave Reisner <dreisner@archlinux.org>2012-05-18 19:09:38 +0200
commitf88b2b53a4b2dcb177cb8b7197e2a61fd510c7ef (patch)
treeacc17508300dcc712add2d1571883aafca64d1c8
parentc5b1a1cef975686ff130c71b5212e3304af5625a (diff)
downloadmkinitcpio-f88b2b53a4b2dcb177cb8b7197e2a61fd510c7ef.tar.gz
mkinitcpio-f88b2b53a4b2dcb177cb8b7197e2a61fd510c7ef.tar.xz
usr: add usr mounting as a late running hook
Mount separate /usr partitions voluntarily, as a late running hook. This is an unfortunate patch that will no doubt result in some hatemail, though it won't thoroughly break anyone to the point of not booting. As a side effect, findmnt is no longer a requisite of the core /init, so move it to the shutdown and usr hooks where it's required. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
-rw-r--r--hooks/usr16
-rw-r--r--init11
-rw-r--r--install/base1
-rw-r--r--install/shutdown1
-rw-r--r--install/usr16
5 files changed, 33 insertions, 12 deletions
diff --git a/hooks/usr b/hooks/usr
new file mode 100644
index 0000000..389e14c
--- /dev/null
+++ b/hooks/usr
@@ -0,0 +1,16 @@
+#!/usr/bin/ash
+
+run_latehook() {
+ local realtab=/new_root/etc/fstab
+
+ if [ -f "$realtab" ]; then
+ if usr_source=$(findmnt -snero source --tab-file="$realtab" /usr); then
+ mountopts=$(findmnt -snero options --tab-file="$realtab" /usr)
+ fsck_device "$usr_source"
+ msg ":: mounting '$usr_source' on /usr"
+ mount "$usr_source" /new_root/usr -o "$mountopts"
+ fi
+ fi
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/init b/init
index e5af8f3..c4b318a 100644
--- a/init
+++ b/init
@@ -67,17 +67,6 @@ run_hookfunctions 'run_latehook' 'late hook' $LATEHOOKS
run_hookfunctions 'run_cleanuphook' 'cleanup hook' $CLEANUPHOOKS
-# mount /usr if it exists
-realtab=/new_root/etc/fstab
-if [ -f "$realtab" ]; then
- if usr_source=$(findmnt -snero source --tab-file="$realtab" /usr); then
- mountopts=$(findmnt -snero options --tab-file="$realtab" /usr)
- fsck_device "$usr_source"
- msg ":: mounting '$usr_source' on /usr"
- mount "$usr_source" /new_root/usr -o "$mountopts"
- fi
-fi
-
if [ "${break}" = "postmount" ]; then
echo ":: Post-mount break requested, type 'exit' to resume operation"
launch_interactive_shell
diff --git a/install/base b/install/base
index 1df209b..30ad3fa 100644
--- a/install/base
+++ b/install/base
@@ -27,7 +27,6 @@ build() {
add_binary blkid
add_binary mount
add_binary switch_root
- add_binary findmnt
add_symlink "/etc/mtab" "/proc/self/mounts"
diff --git a/install/shutdown b/install/shutdown
index 96818e1..bf20f33 100644
--- a/install/shutdown
+++ b/install/shutdown
@@ -3,6 +3,7 @@
build() {
add_binary cp
add_binary lsblk
+ add_binary findmnt
add_file "/usr/lib/initcpio/shutdown" "/shutdown" 755
add_runscript
diff --git a/install/usr b/install/usr
new file mode 100644
index 0000000..cdd3ca6
--- /dev/null
+++ b/install/usr
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+build() {
+ add_binary findmnt
+ add_runscript
+}
+
+help() {
+ cat <<HELPEOF
+This provides a support for mounting /usr via a late running hook. No
+configuration is needed, as the mount options will be pulled directly from the
+fstab on the real root device.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et: