Comment 27 for bug 84591

Revision history for this message
Mike (mike0999) wrote : Re: feisty 20070210/herd5 persistent mode doesn't work

I've come up with a temporary solution that meets at least my needs (until someone actually fixes the packages). I have generated a Feisty LiveUSB disk that for the most part includes the packages from the final version of Feisty, but I have specified that certain packages are to remain at the Herd3 level, allowing persistence to still work.

Basically, I used a "Preferences" file (I have attached the one that I used) in the manner I describe below. This Preferences file prevents the files that it lists from upgrading when I upgraded the Herd3 files to the final version of Feisty.

I used this Preferences file to generate a new version of the following files on my Live disk:

/casper/filesystem.squashfs
/casper/filesystem.manifest
/casper/filesystem.manifest-desktop
/md5sum.txt

I generated these new files, again, following essentially the approach at this link: http://www.atworkonline.it/~bibe/ubuntu/custom-livecd.htm

My comments below refer to the procedure outlined at that link.

I generated the ubuntu-fs.ext2 file, containing the ext2 filesystem, as described. I actually used a 4GB file instead of the 2GB file shown at the link because I ran out of space, when upgrading, using the 2GB file. (I believe that the larger file does not ultimately cause you to consume additional space on your usb disk because of the effect of creating and deleting the "zeroed" dummyfile). I mounted this ext2 filesystem and copied the "unsquashed" filesystem from the Herd3 iso into that directory (i.e. unsquash into this directory the contents of the /casper/filesystem.squashfs file from the Herd3 iso).

Either prior to or after chrooting into this file system, I copied the attached Preferences file into the /etc/apt directory of the unsquashed filesystem. Again, this will "pin" the listed files at the Herd3 versions listed in the attached Preferences file. See the Apt How-To for a more detailed description of "pinning." (I haven't tried to upgrade from Edgy. But if you are doing that, then I suspect you at least need to change the file names and versions in the attached Preferences file to the corresponding Edgy files). In my /etc/apt directory, I also updated the sources.list file to be sure it had the repositories I wanted. There is a Wiki guide (I believe it is called a Feisty Startup Guide) that lists available repositories.

I mounted and chroot'ed into this filesystem, exactly as shown at the link above.

I executed "apt-get update" to update the list of files available at the repositories. I then used aptitude to run both the upgrade and dist-upgrade commands in that order.

aptitude upgrade
aptitude dist-upgrade.

I ran these commands again (I might have used apt-get, instead of aptitude, the subsequent time(s), although it shouldn't matter) until I got feedback that there were no additional files to be upgraded or added. Note, I did get feedback that the "libdevmapper1.02" package was broken (this is one of the "pinned" packages). But, I ignored that because I selected that as one of the files to not be upgraded. The result still worked for me. I don't know if others will experience the following issue, but I also had to work through an issue of not being able to upgrade certain packages associated with acpid. There are links related to that issue. But, I worked out all apparent issues before re-squashing the filesystem.

After finishing the updates and upgrades, I made some additional changes (e.g. added ntfs-3g and bootchart) that I expect do not affect the persistence issue; exited out of the chrooted environment, generated the new filesystem.manifest file (I used this exact same file as the updated filesystem.manifest-desktop file); resquashed the filesystem; generated the new md5sum.txt file; copied the resulting files to my usb drive per the instructions for generating a live usb, and rebooted.

The boot was pretty slow (I may need to try some of the approaches for speeding up boot time), but it does boot fine and the basic persistence works fine. While I haven't tested the result extensively, visually it looks (and at least initially seems to operate) like the final version of Feisty. I am attaching a copy of the filesystem.manifest in case anyone wants to see the differences between the packages I used and those used in the final version of Feisty. I can also upload the re-squashed filesystem(assuming that that is not inappropriate for some reason), but I haven't done that because I expect people may want to generate their own version of the custom squashed filesystem.

It seems possible that my result could be duplicated with less effort. E.g. start with a LiveUSB drive that uses the Herd3 version of Feisty, and simply copy the attached Preferences file into the /etc/apt directory of the booted LiveUSB, and then upgrade that booted LiveUSB in the same manner as you normally would. But I expect that that approach will take a lot more room on your casper-rw partition because the upgraded files will go onto the casper-rw partition, instead of being part of the CDRom image. I haven't tried that approach, so don't know if it will work.

I honestly do not know if all of the files that I have "pinned" need to be pinned, although I think at least most of them probably do (e.g. I don't know if upstart-logd needs to be pinned, for example). But, for my purposes, I don't really care. It would be interesting to see if Colin Watson's changes above, combined with pinning a subset of the files I have pinned, though, can be made to work. I am not going to have time to do that, but it might help narrow down the cause of the issue.