Vagrant Cascadian <vagr...@debian.org> writes: > With libreboot re-installed, it's working for me as well!
Hooray! > I haven't tried just applying the minimal patches and/or configuration > on top of Guix's linux-libre, but that seems like a logical next step... One thing worth trying might be to turn off the patches in PrawnOS kernel, to see if they make a difference for booting. I think it is mostly the configuration that is making the difference. Also, I wrote a little script (see attached) that looks for semantic differences in kernel configuration files. I’ll attach it in case you could use it. My approach was to compare the PrawnOS and Arch Linux ARM configurations against the Guix one, and find things that former two have in common that Guix lacks. To this end, you can run guile --no-auto-compile kconfig.scm guix.cfg prawnos.cfg alarm.cfg and it should tell you all the things that both the working configurations explicitly enable (either as “m” or “y”) that Guix does not. (I found the output a little cleaner than using “diff”, “sort”, and friends.)
(use-modules (ice-9 match) (ice-9 rdelim)) (define (read-config path) (call-with-input-file path (lambda (port) (let loop ((line (read-line port)) (acc '())) (if (eof-object? line) acc (match (string-split line #\=) ((key-part value-part) (let ((key (string->symbol key-part)) (value (match value-part ("y" #t) ("n" #f) ("m" 'm) ((? (lambda (x) (string-prefix? "0x" x))) (string->number (substring value-part 2) 16)) (_ (call-with-input-string value-part read))))) (loop (read-line port) (cons `(,key . ,value) acc)))) (_ (loop (read-line port) acc)))))))) (define (kequal? a b) (or (equal? a b) (and (memq a '(m #t)) (memq b '(m #t))))) (match (program-arguments) ((_ p1 p2 p3) (let ((c1 (read-config p1)) (c2 (read-config p2)) (c3 (read-config p3))) (for-each (match-lambda ((k2 . v2) (let ((v1 (match (assq k2 c1) ((_ . v1) v1) (#f 'nil))) (v3 (match (assq k2 c3) ((_ . v3) v3) (#f 'nil)))) (unless (or (kequal? v1 v2) (kequal? v1 v3)) (write `(,k2 ,v1 -> ,v2 / ,v3)) (newline))))) c2))))
>> I did manage to get the rockchip.usb_uart with a hacked up USB cable to >> produce a serial console for debugging and actually seeing the kernel >> logs rather than them scrolling pass the screen only to give a kernel >> panic. >> >> (kernel-arguments '("console=ttyS2,115200" "rockchip.usb_uart")) > > To be clear, this feature doesn't actually make a serial console over > USB, it somehow "rewires" one of the USB ports to have a ground, rx and > tx serial-ttl pinout. So you pretty much need a custom USB-A plug and > solder/crimp the bare wires to a serial-ttl adapter. Slightly more > details in Documentation/admin-guide/kernel-parameters.txt. I made one of these cables, but wasn’t sure if it worked, and I didn’t know what settings I needed in the kernel to make it work. Thanks for figuring this out! I hope that it gives you a nicer way to debug the kernel when it boots to a white screen. Thanks for testing and working on this. -- Tim