Hello Currently it is necessary to store separate images for netbooting and iso images for burning CDs on the web server.
This patch allows booting from an iso image instead of squashfs image using any of the httpfs/ftpfs/wget method. I did not try to make smbfs nor nfs work with this image type because I do not use these boot methods. This patch applies to current lenny live-initramfs. I noticed some deficiencies in l-i: - the output that goes to live.log is no longer displayed on the screen. I had to redirect the tail output to /dev/console for it to show. - nfs boot is attempted if httpfs boot fails I do not quite understand the nfs logic (and do not see what is going on either due to the other issue above). Thanks Michal
--- usr/share/initramfs-tools/scripts/live.orig 2009-09-03 23:25:10.000000000 +0200 +++ usr/share/initramfs-tools/scripts/live 2009-09-03 23:26:30.000000000 +0200 @@ -768,7 +768,7 @@ if [ -n "$url" ] then case "${extension}" in - squashfs|tgz|tar) + iso|squashfs|tgz|tar) if [ "${webfile}" = "FETCH" ] then case "$url" in @@ -797,6 +797,12 @@ fi [ ${?} -eq 0 ] && rc=0 [ "${extension}" = "tgz" ] && live_dest="ram" + if [ "${extension}" = "iso" ] + then + isoloop=$(setup_loop "${dest}/$(basename "${url}")" "loop" "/sys/block/loop*" "" '') + mount -t iso9660 "${isoloop}" "${mountpoint}" + rc=${?} + fi break ;; --- usr/share/initramfs-tools/scripts/live~ 2009-09-07 05:36:51.000000000 +0200 +++ usr/share/initramfs-tools/scripts/live 2009-09-07 16:08:41.000000000 +0200 @@ -8,6 +8,7 @@ echo "/root/usr/lib" >> /etc/ld.so.conf mountpoint="/live/image" +ext_mountpoint="/ext_volume" LIVE_MEDIA_PATH="live" root_persistence="live-rw" @@ -756,19 +757,25 @@ do_httpmount () { rc=1 - dest="${mountpoint}/${LIVE_MEDIA_PATH}" - mount -t ramfs ram "${mountpoint}" - mkdir -p "${dest}" for webfile in HTTPFS FTPFS FETCH do - url="$(eval echo \"\$\{${webfile}\}\")" - extension="$(echo "${url}" | sed 's/\(.*\)\.\(.*\)/\2/')" + local url="$(eval echo \"\$\{${webfile}\}\")" + local extension="$(echo "${url}" | sed 's/\(.*\)\.\(.*\)/\2/')" if [ -n "$url" ] then case "${extension}" in iso|squashfs|tgz|tar) + if [ "${extension}" = "iso" ] + then + mkdir -p "${ext_mountpoint}" + dest="${ext_mountpoint}" + else + local dest="${mountpoint}/${LIVE_MEDIA_PATH}" + mount -t ramfs ram "${mountpoint}" + mkdir -p "${dest}" + fi if [ "${webfile}" = "FETCH" ] then case "$url" in @@ -799,9 +806,9 @@ [ "${extension}" = "tgz" ] && live_dest="ram" if [ "${extension}" = "iso" ] then - isoloop=$(setup_loop "${dest}/$(basename "${url}")" "loop" "/sys/block/loop*" "" '') - mount -t iso9660 "${isoloop}" "${mountpoint}" - rc=${?} + isoloop=$(setup_loop "${dest}/$(basename "${url}")" "loop" "/sys/block/loop*" "" '') + mount -t iso9660 "${isoloop}" "${mountpoint}" + rc=${?} fi break ;; @@ -815,7 +822,12 @@ if [ ${rc} != 0 ] then - umount "${mountpoint}" + if [ -d "${ext_mountpoint}" ] + then + umount "${ext_mountpoint}" + rmdir "${ext_mountpoint}" + fi + umount "${mountpoint}" fi return ${rc} --- usr/share/initramfs-tools/scripts/live-bottom/05mountpoints~ 2009-09-07 16:23:01.000000000 +0200 +++ usr/share/initramfs-tools/scripts/live-bottom/05mountpoints 2009-09-07 16:25:02.000000000 +0200 @@ -33,4 +33,10 @@ mount --move /live/image /root/live/image fi +if [ -d /ext_volume ] +then + mkdir -p /root/live/ext_volume + mount --move /ext_volume /root/live/ext_volume +fi + log_end_msg