Closed bam80 closed 2 years ago
Could you describe initial system partition layout? Particularly, for PinePhone.
@bam80 hi, the system boots to either an initramfs (in-memory copy of the SkiffOS build) or a .squashfs mount, depending on the target. (Pi uses initramfs, Jetson tx2 uses squashfs, for example).
The initial system partition layout for pinephone is:
or a .squashfs mount
Thanks. So the rootfs is loopback-mounted from that .squashfs file placed on some other fs, and not expanding to the whole rootfs partition?
That would be great, do you think it is possible to install it in parallel with some other OS (e.g Manjaro ARM) without initial formatting all the device?
@bam80 many single-board computers (pi) boot from the first partition and I'm not sure if you can specify an alternate to boot from.
However some of them - i.e. the ones that use u-boot like pinephone - search for boot.scr or extlinux.conf, so possibly that might be able to dual-boot.
E.g. Manjaro uses following partitions layout for PP:
So if one wanted to try install SkiffOS in parallel, basically he should follow the installation scripts and carefully unpack the images to appropriate places, and edit u-boot scripts afterwards?
Should he name the partitions in a proper way, and create persist
partition additionally?
Can u-boot be shared between systems?
You could make a single partition named "persist" and place the contents of the "boot" partition there. (See install_sd.sh).
The problem is some of the u-boot scripts use "ext4load" and "fatload" and some others assume that Skiff uses the 3-partition layout.
So it depends per-platform. Any platform that uses extlinux.conf should work.
There's a config used by jetson/tx2 which boots to a squashfs. This one puts both the persist and the /boot files into a single persist partition. So, using this type of setup for other platforms might also make it possible to multi-boot.
... That said for now I would just recommend having 1 SD card per OS you want, rather than trying to mix multiple on a single. You can just import your other OS (like manjaro) as a Skiff Core container.
You can just import your other OS (like manjaro) as a Skiff Core container.
I'm quite intrigued how would it work. Does it have full access to the hardware from the container - GUI, Modem, etc? What differences from vanilla Manjaro can I expect?
@bam80 You can run "tar -c . | docker import - my/image" to import a existing system rootfs to a image.
Then you can set it as the Skiff Core image and it will be started as a container.
The isolation features of the container are disabled so all hardware is available.
You will want to disable ModemManager in the container (or in Skiff) with systemctl mask ModemManager because otherwise there will be two of them running. Also, you probably want to mask NetworkManager in the container since Skiff runs an instance of that too.
https://github.com/skiffos/SkiffOS/tree/master/configs/core/pinephone_manjaro_kde
You will want to disable ModemManager in the container (or in Skiff) with systemctl mask ModemManager because otherwise there will be two of them running. Also, you probably want to mask NetworkManager in the container since Skiff runs an instance of that too.
Hmm, quite important note. Is it documented somewhere?
Probably not documented anywhere yet. The normal skiff core containers mask those things in their dockerfiles.
Hello, does rootfs install to a file and mount as loopback device from there or it's extracted to a whole dedicated partition finally? It doesn't quite clear from
push_image.bash
script.