Add: seamless boot splash, daemon for disabling keyboard and touchpad, and remove gzip compression on initramfs
This needs to be tested on arm64 hardware and dumps of 1280x800, 1366x768 and 2400x1600 of splash have to be taken
Note: I don't have an arm64 chromebook to test with. I do have a NanoPi m4-v2 (RK3399-based) SBC, but I don't think that board is supported here. Still, wanted to try compiling for ARM-64 just to see the process as last time I compiled PrawnOS, this wasn't an option.
Anyway, tried compiling for arm64, first with @Maccraft123 's branch directly and got the following error:
+ mkdir brcm
+ cp /home/USERNAME/Development/git/ShrimpOS/kernel/resources/arm64/brcmfmac4354-sdio.bin brcm/
cp: cannot stat '/home/USERNAME/Development/git/ShrimpOS/kernel/resources/arm64/brcmfmac4354-sdio.bin': No such file or directory
make[1]: *** [/home/USERNAME/Development/git/ShrimpOS/kernel/makefile:68: /home/USERNAME/Development/git/ShrimpOS/build/arm64/linux/vmlinux.kpart] Error 1
make[1]: Leaving directory '/home/USERNAME/Development/git/ShrimpOS'
make: *** [makefile:89: image] Error 2
Tried again using the main repo from @SolidHal creating a local branch from this Pull Request (probably the right way to do this, I'm learning) and received the following:
1+0 records in
1+0 records out
512 bytes copied, 0.000100901 s, 5.1 MB/s
+ vbutil_kernel --pack vmlinux.kpart --version 1 --vmlinuz vmlinux.uimg --arch aarch64 --keyblock /usr/share/vboot/devkeys/kernel.keyblock --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk --config /home/USERNAME/Development/git/PrawnOS/kernel/resources/arm64/cmdline --bootloader bootloader.bin
+ RESULT=0
+ '[' '!' 0 -eq 0 ']'
++ stat -c %s vmlinux.kpart
+ KERNEL_SIZE=35241984
+ '[' 35241984 -gt 33554432 ']'
+ mv vmlinux.kpart oversized_vmlinux.kpart
+ echo 'kernel larger than max kernel size!'
kernel larger than max kernel size!
+ exit 1
make[1]: *** [/home/USERNAME/Development/git/PrawnOS/kernel/makefile:117: /home/USERNAME/Development/git/PrawnOS/build/arm64/linux-5.7.10/vmlinux.kpart] Error 1
make[1]: Leaving directory '/home/USERNAME/Development/git/PrawnOS'
make: *** [makefile:89: image] Error 2
Might the issue be from removing gzip compression?
Oh it barely doesn't fit. PrawnOS works only on devices that boot with depthcharge, so it won't work on any SBC that doesn't run coreboot.
I think that to fix this someone with arm64 chromebooks should remove some kernel config options to decrease space requirements and test if it still works fine
Update: blocked until https://github.com/SolidHal/PrawnOS/pull/216 is merged
I'm not surprised we went over, I made the config quite sparse and it just barely fit.
I guess it's time to do kernel module support
kernel size bump is merged, pulling this to test
on an armhf build I get prompted for the following:
scripts/kconfig/conf --syncconfig Kconfig
*
* Restart config...
*
*
* printk and dmesg options
*
Show timing information on printks (PRINTK_TIME) [Y/n/?] y
Show caller information on printks (PRINTK_CALLER) [N/y/?] n
Default console loglevel (1-15) (CONSOLE_LOGLEVEL_DEFAULT) [7] (NEW)
looks like this PR sets it to 0, which is not a valid value
that said, it looks like we manage the console log level in the initramfs, so is this needed?
Could I get some insight into why we want these systemd settings? We might need to implement these settings in a different way, as the file will get overwritten anytime the systemd package is updated.
Those settings are needed to silence systemd because any write to tty overwrites splash And initramfs loglevel sometimes doesn't work
Quick questions:
Is disabling selinux necessary? I do have some selinux troubleshooting experience, have seen plymouth boot screens on selinux, and have a preference for keeping selinux enabled as it's mandatory access controls help maintain security when the old fashioned discretionary aces controls fail. I could go on for hours about selinx btw...
And is this some kind of workaround to implement plymouth boot screens in the PrawnOS initrd system? Since as we know, Debian's initrd generator doesn't support depthcharge targets. If so, this could help me use the plymouth-spinner-theme while booting, which has been a goal :)
Taking a look here it would seem like the system.conf file should be place in /etc/systemd/system.conf.d/system.conf You'll want to tell the script to mkdir -p that directory, then change the folder it gets copied to.
Would you also mind creating another branch and post screenshots and camera pictures to visually documenting the changes? A few weeks ago I made a branch called readme-minor-changes, which implies a future branch with bigger changes. But that's another topic for another day.
Selinux displays some error message about some file not found, that overwrites part of splash. And this is NOT plymouth. I made a youttube video displaying how it looks with gdm, https://youtu.be/Ha1-sOUqaDY With other display managers it will work same way. I can make some pictures after it gets merged.
About selinux concerns: I've reverted commit that disables it.
hm, I got prompted to set LSM_MMAP_MIN_ADDR on the armhf build
tested this on my c201 and got dropped right into the initramfs errr shell
oops
tested the image built here by the PR automation, definitely doesn't work. something goes wrong int the initramfs. @Maccraft123 if you leave this long enough, I will get around to debugging it for you hahaha.
Sorry if im on the wrong track here, but i don't think all those suppressed log levels are needed. For FB-Coding you can tell the bootsplash program (whatever is used) to claim the framebuffer as a graphical console and thus silence all console messages like this:
int tty_fd = open("/dev/tty0", O_RDWR);
ioctl(tty_fd,KDSETMODE,KD_GRAPHICS);
//At exit:
ioctl(tty_fd,KDSETMODE,KD_TEXT);
in ubuntu the splashscreen can be disabled with a simple press on ESC.
I like this solution more because we can handle decrypting the root partition in a similiar nice manner and will give it a try.
Seems stock plymouth works just fine with depthcharge. Seems reasonable to attempt to implement the logo in plymouth if work picks back up on this.