PrawnOS icon indicating copy to clipboard operation
PrawnOS copied to clipboard

Add: seamless boot splash, daemon for disabling keyboard and touchpad, and remove gzip compression on initramfs

Open Maccraft123 opened this issue 5 years ago • 19 comments

This needs to be tested on arm64 hardware and dumps of 1280x800, 1366x768 and 2400x1600 of splash have to be taken

Maccraft123 avatar Sep 15 '20 22:09 Maccraft123

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?

gregordinary avatar Sep 16 '20 03:09 gregordinary

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.

Maccraft123 avatar Sep 16 '20 13:09 Maccraft123

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

Maccraft123 avatar Sep 16 '20 15:09 Maccraft123

Update: blocked until https://github.com/SolidHal/PrawnOS/pull/216 is merged

Maccraft123 avatar Sep 17 '20 12:09 Maccraft123

I'm not surprised we went over, I made the config quite sparse and it just barely fit.

SolidEva avatar Sep 17 '20 14:09 SolidEva

I guess it's time to do kernel module support

Maccraft123 avatar Sep 17 '20 14:09 Maccraft123

kernel size bump is merged, pulling this to test

SolidEva avatar Sep 17 '20 15:09 SolidEva

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?

SolidEva avatar Sep 17 '20 16:09 SolidEva

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.

SolidEva avatar Sep 17 '20 16:09 SolidEva

Those settings are needed to silence systemd because any write to tty overwrites splash And initramfs loglevel sometimes doesn't work

Maccraft123 avatar Sep 17 '20 16:09 Maccraft123

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.

gdallasdye avatar Sep 18 '20 01:09 gdallasdye

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.

Maccraft123 avatar Sep 18 '20 05:09 Maccraft123

About selinux concerns: I've reverted commit that disables it.

Maccraft123 avatar Sep 18 '20 06:09 Maccraft123

hm, I got prompted to set LSM_MMAP_MIN_ADDR on the armhf build

SolidEva avatar Sep 23 '20 23:09 SolidEva

tested this on my c201 and got dropped right into the initramfs errr shell

SolidEva avatar Sep 24 '20 00:09 SolidEva

oops

Maccraft123 avatar Sep 25 '20 20:09 Maccraft123

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.

SolidEva avatar Sep 28 '20 02:09 SolidEva

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.

ghost avatar Sep 30 '20 16:09 ghost

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.

SolidEva avatar Dec 11 '20 03:12 SolidEva