Try this:
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 4dd740174..810a0d63f 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -507,7 +507,14 @@ to it are lost."
(switch-root "/root")
(format #t "loading '~a'...\n" to-load)
- (primitive-load to-load)
+ (catch #t
+ (lambda ()
+ (primitive-load to-load))
+ (lambda (key . args)
+ (format (current-error-port) "Error: ~a: ~a\n" key args)
+ (reboot))
+ (lambda (key . args)
+ (display-backtrace (make-stack #t) (current-error-port))))
(format (current-error-port)
"boot program '~a' terminated, rebooting~%"