Readme -------- This package provides an update for ubiboot, which allows you to boot other OSes (mainly Nemo and Sailfish) without dedicating a separate partition for them. Instead, it can boot an OS from its filesystem image stored inside another partition (mainly, N9's data partition: /home/user/MyDocs/ (mmcblk0p1)). This package is compatible with ubiboot.conf, so you can keep your existing ubiboot.conf configuration for existing OSes. It is tested over ubiboot-02_0.3.5_301013.tar. Older versions might not work. Copyright (c) 2014 Hedayat Vatankhah This package is released under GNU GPL version 2 or any later version. Installation ----------------------------------- 1. Install ubiboot as usual. 2. If you have configured ubiboot.conf, create a backup copy of it, since we are going to replace this file. Or, don't overwrite your existing ubiboot.conf and add new configuration options to your existing ubiboot.conf. 2. Place the contents of this package (loop_boot.cpio, ubiboot-03.menus.cpio and (optionally)ubiboot.conf) into the boot/ directory you've created in N9 during ubiboot installation and put ubiboot.conf. 3. Configure new ubiboot.conf for existing OSes as you would do for original ubiboot. 4. (Optional, but recommended!) Reboot your phone and verify that existing OS(es) boot normally. Until now, you shouldn't notice any behavior change compared to original ubiboot. 5. Extract the kernel of the OS and put it somewhere in the same partition as loop_boot.cpio. Usually, it is placed in the same boot/ directory. You can copy the kernel when you extract OS files in step 6; as shown in the example. 6. Create an ext4 filesystem image of the desired OS. It should be big enough to contain the OS completely plus some free space. You can create a big sparse image, but it'll become a regular file if copied into a filesystem which doesn't support sparse files (e.g. FAT, like N9's MyDocs/ partition). A GNU/Linux os is assumed. However, you can run these commands in the phone itself, but you should use /sbin/mkfs.ext4 instead of mkfs.ext4. In this case, step 7 would not be necessary, since the image would be in the phone already. * Example creating a 800M sparse image for Nemo (GNU/Linux OS is assumed): ------------------------------------------------------------------------ dd if=/dev/zero of=nemo.img bs=800M seek=1 count=0 mkfs.ext4 nemo.img mount -o loop nemo.img /mnt/ tar -xf nemo-n950-rnd-20140224.tar.bz2 --numeric-owner -C /mnt/ # copy the kernel so that it can be copied to N9 separately. cp /mnt/boot/vmlinuz-2.6.32.20130129.1-n950 ./ umount /mnt ------------------------------------------------------------------------ 7. Copy the image (e.g. nemo.img) somewhere into your phone. A good place could be in the same boot/ directory as the other files (/home/user/MyDocs/boot/). 8. Update ubiboot.conf accordingly. The ubiboot.conf which comes with this package has default configurations for Nemo and Sailfish assuming that you've put all files into /home/user/MyDocs/boot/. There are 3 new options in ubiboot.conf for this scenario: G_OS3_INITRAMFS, G_OS3_IMAGE_PARTITION, and G_OS3_IMAGE_PATH. You usually don't need to change G_OS3_INITRAMFS, but you might need to modify the other two. Hopefully, you should be able to boot your new OS successfully! Known Issues ------------ * It works for me, but might not work for you! * The installation procedure is very safe (if followed carefully). Also, it doesn't overwrite/change any existing files except ubiboot.conf. Therefore, keep a copy of your previous ubiboot.conf around so that you can replace it in ubiboot's maintenance mode if really needed. However, it should be sufficient to change G_UBIBOOT_ARCHIVE in ubiboot.conf to ubiboot-02.menus.cpio to boot with original ubiboot. New options in ubiboot.conf are ignored in original version.