[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCHES] fix for Ubuntu support, live-initramfs



Hello,

pls find following some patches to the live-intramfs code for initial Ubuntu (<=Jaunty) support.

Issues tackled are:

* lack of 'wc' support in initrd busybox
* lack of /lib/udev/cdrom_id in Jaunty
* invalid mangling of /etc/event.d/tty*

Hopefully you will find them proper and forward upstream for inclusion.

As per Ubuntu Karmic, being only unionfs-fuse currently supported live-initramfs cannot work without substantial modifications. Hopefully this is only a temporary situation.

Best regards

Luigi Capriotti
diff --git a/scripts/live b/scripts/live
index 683afa2..4a09fed 100755
--- a/scripts/live
+++ b/scripts/live
@@ -1149,7 +1149,16 @@ setup_unionfs ()
 	if [ -n "${PERSISTENT}" ] && [ -z "${NOPERSISTENT}" ]
 	then
 		# Load USB modules
-		num_block=$(ls -l /sys/block | wc -l)
+		if [ -x /usr/bin/wc ]; then
+			num_block=$(ls -l /sys/block | wc -l)
+		else
+			num_block=0
+			for word in `ls  /sys/block`;
+			do
+				num_block=$(( $num_block + 1 ))
+			done
+		fi
+
 		for module in sd_mod uhci-hcd ehci-hcd ohci-hcd usb-storage
 		do
 			modprobe -q -b ${module}
@@ -1173,8 +1182,17 @@ setup_unionfs ()
 		for timeout in 5 4 3 2 1
 		do
 			sleep 1
+			if [ -x /usr/bin/wc ]; then
+				num_curr_block=$(ls -l /sys/block | wc -l)
+			else
+				num_curr_block=0
+				for word in `ls /sys/block`;
+				do
+					num_curr_block=$(( $num_curr_block + 1 ))
+				done
+			fi
 
-			if [ $(ls -l /sys/block | wc -l) -gt ${num_block} ]
+			if [ ${num_curr_block} -gt ${num_block} ]
 			then
 				break
 			fi
@@ -1252,7 +1270,15 @@ setup_unionfs ()
 			panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on /cow"
 	fi
 
-	rofscount=$(echo ${rofslist} |wc -w)
+	if [ -x /usr/bin/wc ]; then
+		rofscount=$(echo ${rofslist} |wc -w)
+	else
+		rofscount=0
+		for word in ${rofslist};
+		do
+			rofscount=$(( $rofscount+ 1 ))
+		done
+	fi
 
 	if [ -n "${EXPOSED_ROOT}" ]
 	then
@@ -1455,7 +1481,14 @@ find_livefs ()
 		devname=$(sys2dev "${sysblock}")
 		fstype=$(get_fstype "${devname}")
 
-		if /lib/udev/cdrom_id ${devname} > /dev/null
+		cdrom="1"
+		if [ -x /lib/udev/cdrom_id ] 
+		then
+			/lib/udev/cdrom_id ${devname} > /dev/null
+			cdrom=$?
+		fi
+
+		if [ "$cdrom" -eq "0" ]
 		then
 			if check_dev "null" "${devname}"
 			then
diff --git a/scripts/live-bottom/25configure_init b/scripts/live-bottom/25configure_init
index b0ac498..f55dd0e 100755
--- a/scripts/live-bottom/25configure_init
+++ b/scripts/live-bottom/25configure_init
@@ -77,7 +77,8 @@ then
 		then
 			for f in /root/etc/event.d/tty*
 			do
-				sed -i -e "s|^respawn.*|respawn /bin/login -f ${USERNAME} </dev/$(basename ${f}) > /dev/$(basename ${f}) 2>\&1|" ${f}
+				sed -i -e "/^respawn$/!s|^respawn.*|respawn /bin/login -f ${USERNAME} </dev/$(basename ${f}) > /dev/$(basename ${f}) 2>\&1|" ${f}
+				sed -i -e "s|^exec.*|exec /bin/login -f ${USERNAME} </dev/$(basename ${f}) > /dev/$(basename ${f}) 2>\&1|" ${f}
 			done
 		fi
 	fi

Reply to: