summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-09-17 11:57:45 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2009-09-17 12:45:18 +0000
commit5531beb030b8e0a2f0da5ba5b8833bb01ba21c85 (patch)
treee32c5b6acbfb36969941e70f919216201891cbcc
parent43de4035e55096927d05e0352f60577241204a33 (diff)
downloadalpine-conf-5531beb030b8e0a2f0da5ba5b8833bb01ba21c85.tar.bz2
alpine-conf-5531beb030b8e0a2f0da5ba5b8833bb01ba21c85.tar.xz
setup-disk: use uuid in fstab and extlinux.conf
This helps us avoid the issues when disk changes from sda to hda
-rw-r--r--setup-disk.in31
1 files changed, 28 insertions, 3 deletions
diff --git a/setup-disk.in b/setup-disk.in
index a957b09..881c341 100644
--- a/setup-disk.in
+++ b/setup-disk.in
@@ -15,12 +15,37 @@ in_list() {
return 1
}
+# wrapper to only show given device
+_blkid() {
+ blkid | grep "^$1:"
+}
+
+# if given device have an UUID display it, otherwise return the device
+uuid_or_device() {
+ local i=
+ for i in $(_blkid "$1"); do
+ case "$i" in
+ UUID=*) eval $i;;
+ esac
+ done
+ if [ -n "$UUID" ]; then
+ echo "UUID=$UUID"
+ else
+ echo "$1"
+ fi
+}
+
+# generate an fstab from a given mountpoint. Convert to UUID if possible
enumerate_fstab() {
local mnt="$1"
+ local fs_spec= fs_file= fs_vfstype= fs_mntops= fs_freq= fs_passno=
[ -z "$mnt" ] && return
local escaped_mnt=$(echo $mnt | sed 's:/:\\/:g')
awk "\$2 ~ /^$escaped_mnt/ {print \$0}" /proc/mounts | \
- sed "s:$mnt:/:g; s: :\t:g" | sed 's:/\+:/:g'
+ sed "s:$mnt:/:g; s: :\t:g" | sed 's:/\+:/:g' | \
+ while read fs_spec fs_file fs_vfstype fs_mntops fs_freq fs_passno; do
+ echo -e "$(uuid_or_device $fs_spec)\t${fs_file}\t${fs_vfstype}\t${fs_mntops} ${fs_freq} ${fs_passno}"
+ done
}
is_vmware() {
@@ -89,7 +114,7 @@ prompt 1
default grsec
label grsec
kernel /grsec
- append initrd=/grsec.gz root=$rootdev modules=sd-mod,usb-storage,ext3$raidmod ${pax_nouderef}quiet
+ append initrd=/grsec.gz root=$(uuid_or_device $rootdev) modules=sd-mod,usb-storage,ext3$raidmod ${pax_nouderef}quiet
EOF
# fix the fstab
enumerate_fstab "$mnt" >> "$mnt"/etc/fstab
@@ -247,7 +272,7 @@ EOF
rc-update --quiet add swap boot
# the func to generate fstab does not detect swap. add it manually
sed -i -e '/swap/d' /etc/fstab
- echo -e "$swap_dev\tswap\t\tswap\tdefaults 0 0" >> /etc/fstab
+ echo -e "$(uuid_or_device $swap_dev)\tswap\t\tswap\tdefaults 0 0" >> /etc/fstab
install_mounted_root /mnt
}