Here is my udev based live-device recognition system. Diff from 10.10
release
--1----------------------------------------------------------------------------------------------------
EXTLINUX config :
kernel ../casper/vmlinuz1
append initrd=../casper/initramfs-USB-UDEV boot=casper
livecasper-dev=udev=UUID=fc0e5af3-e635-4ef9-831d-0ea4f4e70a60
livehome-dev=udev=UUID=695d19b0-78d9-4dc3-ab3f-6f0cf2f315b4
------------------
/etc/udev/rules.d/61-casper-usb.rules:
# Used to make casper event driven instead of repeatedly scan all block devices
# With this rule finding live-media device is mainly udev's job
# Does not work when named 60-xxx.rules but does work whan named 61-xxx.rules
ENV{ID_USB_DRIVER}!="usb-storage", GOTO="end_usb-casper.rules"
ACTION!="add|change", GOTO="end_usb-casper.rules"
IMPORT{cmdline}="livecasper-dev=udev=UUID"
ENV{ID_FS_UUID}!="",\
PROGRAM=="/bin/sh -c 'test
$env{livecasper-dev=udev=UUID}=$env{ID_FS_UUID}'",SYMLINK+=".livecasper"
IMPORT{cmdline}="livehome-dev=udev=UUID"
ENV{ID_FS_UUID}!="", \
PROGRAM=="/bin/sh -c 'test $env{livehome-dev=udev=UUID} =
$env{ID_FS_UUID}'",SYMLINK+=".livehome"
--2---------------------------------------------------------------------------------------------------
--- casper_1.248_i386.deb.d/usr/share/initramfs-tools/scripts/casper
2010-09-16 01:34:18.000000000 +0200
+++ ~/usr/share/initramfs-tools/scripts/casper 2010-11-11 18:52:50.000000000
+0100
@@ -1,5 +1,10 @@
#!/bin/sh
+# make udev does most of the search
+# -1- livecasper-dev=udev=UUID
+# a) ln -s xxx /dev/.livecasper
+# b) ln -s yyy /dev/.livehome
+# -2- suppress snapshots
# set -e
export PATH=/usr/bin:/usr/sbin:/bin:/sbin
@@ -31,7 +36,7 @@
parse_cmdline() {
for x in $(cat /proc/cmdline); do
- case $x in
+ case $x in
showmounts|show-cow)
export SHOWMOUNTS='Yes' ;;
persistent)
@@ -50,6 +55,28 @@
export STATICIP ;;
ignore_uuid)
IGNORE_UUID="Yes" ;;
+ livecasper-dev=*)
+ LIVE_CASPER_DEV="${x#livecasper-dev=}"
+ export LIVE_CASPER_DEV
+ echo "export LIVE_CASPER_DEV=\"$LIVE_CASPER_DEV\"" >>
/etc/casper.conf
+ case ${LIVE_CASPER_DEV} in
+ udev=UUID=*)
+ LIVE_CASPER_UDEV_UUID="${LIVE_CASPER_DEV#udev=UUID=}"
+ export LIVE_CASPER_UDEV_UUID
+ echo "export
LIVE_CASPER_UDEV_UUID=\"$LIVE_CASPER_UDEV_UUID\"" >> /etc/casper.conf ;;
+ esac
+ ;;
+ livehome-dev=*)
+ LIVE_HOME_DEV="${x#livehome-dev=}"
+ export LIVE_HOME_DEV
+ echo "export LIVE_HOME_DEV=\"$LIVE_HOME_DEV\"" >>
/etc/casper.conf
+ case ${LIVE_HOME_DEV} in
+ udev=UUID=*)
+ LIVE_HOME_UDEV_UUID="${LIVE_HOME_DEV#udev=UUID=}"
+ export LIVE_HOME_UDEV_UUID
+ echo "export LIVE_HOME_UDEV_UUID=\"$LIVE_HOME_UDEV_UUID\""
>> /etc/casper.conf ;;
+ esac
+ ;;
live-media-path=*)
LIVE_MEDIA_PATH="${x#live-media-path=}"
export LIVE_MEDIA_PATH
@@ -295,7 +322,7 @@
}
try_snap ()
-{
+{ return 1
# Look for $snap_label.* in block devices and copy the contents to
$snap_mount
# and remember the device and filename for resync on exit in casper.init
@@ -463,7 +490,7 @@
if [ -n "${SHOWMOUNTS}" ]; then
for d in ${rofslist}; do
mkdir -p "${rootmnt}/${LIVE_MEDIA_PATH}/${d##*/}"
- case d in
+ case $d in
*.dir) # do nothing # mount -o bind "${d}"
"${rootmnt}/${LIVE_MEDIA_PATH}/${d##*/}"
;;
*)
@@ -541,6 +568,12 @@
find_livefs() {
timeout="${1}"
# first look at the one specified in the command line
+ if [ ! -z "${LIVE_CASPER_UDEV_UUID}" ] ; then
+ livecasper_FROM_UDEV=$( readLinkWait .livecasper )
+ if check_dev "null" /dev/"${livecasper_FROM_UDEV}" "skip_uuid_check";
then
+ return 0
+ fi
+ fi
if [ ! -z "${LIVEMEDIA}" ]; then
if check_dev "null" "${LIVEMEDIA}" "skip_uuid_check"; then
return 0
--3----------------------------------------------------------------------------------------------------------------------
--- casper_1.248_i386.deb.d/usr/share/initramfs-tools/scripts/casper-helpers
2010-09-16 01:34:18.000000000 +0200
+++ ~/usr/share/initramfs-tools/scripts/casper-helpers 2010-11-11
20:46:32.000000000 +0100
@@ -1,5 +1,22 @@
## Casper helper functions, used by casper on boot and by casper-snapshot
+# readLinkWait
+# suppress ntfs
+
+# first, a short wait, just in case link is made by udev after first readlink
but before first inotifywait
+
+readLinkWait() {
+ local link=/dev/$1
+ readlink $link || {
+ touch $link
+ inotifywait -qq -e ATTRIB --timeout 1 $link
+ readlink $link
+ } || {
+ inotifywait -qq -e ATTRIB --timeout 10 $link
+ readlink $link
+ }
+}
+
if [ "${BUILD_SYSTEM}" = "Debian" ] || [ "${BUILD_SYSTEM}" = "Ubuntu" ]; then
MP_QUIET="-q"
else
@@ -182,6 +199,14 @@
find_cow_device() {
pers_label="${1}"
+ [ ${pers_label} = casper-rw ] && return 1
+
+ if [ ! -z "${LIVE_HOME_UDEV_UUID}" ] ; then
+ livehome_FROM_UDEV=$(readLinkWait .livehome)
+ echo /dev/"${livehome_FROM_UDEV}"
+ return
+ fi
+
cow_backing="/${pers_label}-backing"
if [ -z "${PERSISTENT_PATH}" ]; then
@@ -190,7 +215,7 @@
pers_fpath=${cow_backing}/${PERSISTENT_PATH}/${pers_label}
fi
- for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop); do
+ for sysblock in $(echo /sys/block/* | tr ' ' '\n' | egrep -v
'/(loop|ram|sr|fd)'); do
for dev in $(subdevices "${sysblock}"); do
devname=$(sys2dev "${dev}")
if [ "$(/sbin/blkid -s LABEL -o value $devname 2>/dev/null)" =
"${pers_label}" ]; then
---4
---------------------------------------------------------------------------------------------------
--- casper_1.248_i386.deb.d/usr/share/initramfs-tools/hooks/casper
2010-09-16 01:34:18.000000000 +0200
+++ ~/usr/share/initramfs-tools/hooks/casper 2010-10-15 17:16:04.000000000
+0200
@@ -72,8 +74,8 @@
# integrity check
copy_exec /usr/lib/casper/casper-md5check /bin
-cp /usr/share/initramfs-tools/scripts/casper-functions $DESTDIR/scripts
-cp /usr/share/initramfs-tools/scripts/casper-helpers $DESTDIR/scripts
+#cp /usr/share/initramfs-tools/scripts/casper-functions $DESTDIR/scripts
+#cp /usr/share/initramfs-tools/scripts/casper-helpers $DESTDIR/scripts
auto_add_modules net
---------------------------------------------------------------------------------------------------------
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/653633
Title:
live-media=<device> is no more supported in casper
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/casper/+bug/653633/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs