SVN: geninitrd/trunk/geninitrd

sparky sparky at pld-linux.org
Sat Jan 27 20:01:59 CET 2007


Author: sparky
Date: Sat Jan 27 20:01:58 2007
New Revision: 8203

Modified:
   geninitrd/trunk/geninitrd
Log:
- simplified mknod script in initramfs


Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd	(original)
+++ geninitrd/trunk/geninitrd	Sat Jan 27 20:01:58 2007
@@ -1509,41 +1509,37 @@
 	cat << 'EOF' >> "$s"
 set +x
 mount -t proc none /proc
-root="$(busybox awk -v prefix="root=" ' \
-function separate_root ( txt ) \
-{ \
-    gsub(/.*root=/,NIL,txt); \
-    gsub(/ .*/,NIL,txt); \
-    return txt \
-} \
-BEGIN { \
-    num_pattern_short = "[0-9][0-9][0-9]"; \
-    num_pattern = num_pattern_short "[0-9]"; \
-    dev_pattern = "[hms][a-z][a-z]([0-9])+"; \
-    partition = "Metallica rocks!"; \
-    min = -1; maj = -1; \
-} \
-$0 ~ prefix "0x" num_pattern { sub(prefix "0x", prefix); } \
-$0 ~ prefix num_pattern_short " " { sub(prefix, prefix 0); } \
-$0 ~ prefix num_pattern { \
-    gsub(/.*root=/,NIL,partition); \
-    gsub(/ .*/,NIL,partition); \
-    partition = separate_root( $0 ); \
-    maj = sprintf("%d",substr(partition,1,2)); \
-    min = sprintf("%d",substr(partition,3)); \
-} \
-$0 ~ prefix "\/dev\/" dev_pattern { sub(/root=\/dev\//,"root="); } \
-$0 ~ prefix dev_pattern { \
-    partition = separate_root( $0 ); \
-} \
-$4 ~ partition { maj = $1; min = $2; } \
-$1 ~ maj && $2 ~ min { partition = $4; } \
-END { print sprintf("/dev/%s %d %d", partition, maj, min); }
-' /proc/cmdline /proc/partitions)"
-device=${root% * *}
-maj=${root#* }
-maj=${maj% *}
-min=${root#* * }
+
+CMDLINE="$(busybox cat /proc/cmdline)"
+eval "$(busybox awk -v c="$CMDLINE" '
+BEGIN {
+	num_pattern_short = "[0-9][0-9][0-9]";
+	num_pattern = "[0-9]" num_pattern_short;
+	dev_pattern = "[hms][a-z][a-z]([0-9])+";
+	partition = "no_partition_found";
+	min = -1; maj = -1;
+
+	gsub(/.*root=/,NIL,c);
+	gsub(/ .*/,NIL,c);
+
+	sub("^0x", "", c);
+	if (c ~ "^" num_pattern_short "$") sub("^", "0", c);
+	if (c ~ "^" num_pattern  "$") {
+		maj = sprintf("%d",substr(c,1,2));
+		min = sprintf("%d",substr(c,3));
+	}
+	if (c ~ "^\/dev\/" dev_pattern "$") sub("^/dev/","", c);
+	if (c ~ "^" dev_pattern "$") partition = c;
+}
+
+$4 ~ partition { maj = $1; min = $2; }
+$1 ~ maj && $2 ~ min { partition = $4; }
+
+END {
+	print sprintf("device=/dev/%s\nmaj=%d\nmin=%d",
+		partition, maj, min);
+}
+' /proc/partitions)"
 set -x
 if [ ! -b $device ]; then
 	mknod $device b $maj $min


More information about the pld-cvs-commit mailing list