ChangeLog - mquinson/ISN-live GitHub Wiki
9 Feb 2012
- commit of finals scripts (to test) for initrd. These scripts use bash, and use initramfs-tools
- These scripts implements extensions dependances and include a «doextension.sh» script. An extension with dependance will have a leading which is
- each needed extension's name separated with LF
- at the end, 13 caracters ([0-9]{12}\n) showing the length of extension before addition of the leading.
./doextension.sh extension_geoplan.sqh extension_wine13.sqh
dds the leading to extension_geoplan.sqh
These scripts was ok with bash but use array. So system was broken due to limitation of busybox. Changes done now.
- The script use a kernel launch option live=[fast|medium|all]
- fast look at base sqh file only on sd? devices (i.e R/W disks or USB keys)
- medium look at all blocks R/W devices (including SD cards)
- all look at all blocks devices except loop and ram of course.
- Also commit a prototype of CD/USB syslinux or isolinux base with a boot menu
TODO:
-
Solve the array problem using eval instaead of bash array [done]
-
What about extensions only device?
-
Actually an hard disk swap partition having an hibernate image on the computer crashed the boot. Perhaps a noresume option on line boot?
-
The damned fstype function which doesn't the vfat partition (this is probably the only fstype function such that!)
-
Perhaps a flashy and splashy boot to show that there is no scripts behind the boot and to hide the failed events.
TODO ALSO:
-
To corrige my damned copies!
-
Really corrige these!
3 Feb 2012
IRC meeting on #nybi (François, Martin, some lurkers).
Initial goals:
None really. Just say hello and discuss about the project.
Discussion summary
- Francois commited most of his scripts into the git repository
- We discussed a bit about the project goals, and we seem to agree on all points, that's very cool. Having everything from Debian packages makes it very convinient, so we'd like to continue that way.
- Here is some points that Francois would like to package in the future:
- Something that takes care of launching X
- Somehting that modifies inittab, depends on autologin, and ensures that the standard user gets connected without login.
- Some sudo specific settings (we'd use /etc/sudoers.d/)
- A package in charge of finding the configurations made by the user (like VPN or cups), and redoing them to the system at launch time.
- The initrd seems to be the next step to go.
- In François's system, that's a very manual and not modular script that tries to mount every partition in brute force. It then searches for sqh files on them, mount all found files in AUFS and starts.
- In ISN-live system, there is no initrd, and that's kinda the show stopper.
- We spoke of mkinitrd. It seems to be a nice system, with all configurations made through little scripts spread accross several directories. It's maybe less simple to understand at first, but probably easier to maintain on the long term. It's used in debian-live, also.
- Also brute-force searching for sqh files takes some time and a solution based on udev would be preferable. It'd work for SD disks in addition to USB ones, too.
- We decided to change the user name from 'agreg' to 'live'. Again, it's what debian-live does, too.
- We spoke about automatizing the creation of extension files with
simple scripts (mk-XXX.sh for extension XXX) that work the following
way:
- copy what's needed within the chroot/tmp
- enter the chroot
- remount / ro with a RAMFS on top of it, all in an AUFS
- execute the scripts that were copied in /tmp
- diff+squashfs the result into /tmp
- get out of chroot and copy chroot/tmp/*shq to a safer place
- We spoke of having dependencies between extension files, that is,
dependencies between partial filesystems mounted in AUFS. Usecases:
- The first usecase is that some extension require some other extensions to work properly (for example, geoplan depends on wine). In that case, we want to issue at boot time an error message similar to "you PEBRAK, you took the geoplan extension, but not the wine one. There is no way it will work".
- Another usecase is that the extensions must sometimes be ordered, in particular when they update the same files (it can for example happen that we use backported packages on top of their stable counterpart -- such as lyx). Here, we want to load the extensions in the right order.
- How to implement this extension dependencies:
- At generation time, it's easy to write within mk-XXX.sh the complete list of extensions to load before executing the scripts within the chroot, alongside with their order if needed.
- So the question is only at boot time, before the root constitution in initrd. It seems that adding crufty content at the end of the squashfs image makes no difference for the mounting. We can thus add our informations there. One possibility would be to go for the following information layout: (squashfs)(added file text)(size of the added file)(signature)
- So, to read it, you check that the N last bytes are "LIVESQH" or whatever the signature should be. If so, you read the 2 bytes before that signature, and get the text file length. This allows you to retrieve the full file quite easily, with either a 10 lines C code, or a few 'tail -b -n'.
- The next meeting is planned for wenesday or earlier, depending on the motivation of each participant. Martin writes the summary of the discussion, and François will have a look at mkinitrd to check whether it's the right tool for us.
1 Feb 2012
IRC meeting on #nybi (JC, Vincent, Martin, some lurkers) to work on the project.
Initial goals:
- Get ride of debian-live for now: the scripts written last week are not usable anymore. It seems that this is still the way to go on the long term, as ubuntu and debian efforts seem to converge on it currently, but we cannot rely on alpha software for the March 1.
- Get a working base system from a bar debootstrap
- If possible, work on automatizing the creation of extensions
Achievements:
- make-base.sh:
- debootstrap with the right arguments to create a base system containing LXDE and everythings
- Install a kernel (3.2 from backport) within the chroot
- compress the chroot into a squashfs stuff
Issues and Ideas:
- The system is not bootable yet:
- We need to change the init script in initrd to reconstruct the rootFS and mount it. The script of ClefAggreg is rather complex and not modular at all. Plus, they depend on binaries for which we don't seem to have the source (/bin/trouveagreg and /bin/trouvefichier in the initrd). It'd be neat to manage fully go the Debian way here by adding a hook in /usr/share/initramfs-tools/hooks/ or something. We should probably explore further the hooks provided in http://packages.ubuntu.com/lucid/live-initramfs and friends
- syslinux stuff is to be looked at (but should be easy).
- We cannot build extensions yet. This is still to be explored next time.
- ClefAgreg scripts (in /usr/local/bin) are a precious first step to do so, but these scripts are intended for booted live media. We could try to recreate the live conditions from within the chroot: mount in AUFS with / ro and ramfs on top, then execute the extension installation scripts (from /tmp), then diff the AUFS layers to create the ready to use extension (within chroot/tmp)
- If it does not work for March 1. we can always be brutal and put everything within the chroot without extension mechanism.