1
1
mirror of https://github.com/NixOS/mobile-nixos.git synced 2024-12-17 21:11:34 +03:00
mobile-nixos/boot/init/main.rb

62 lines
1.6 KiB
Ruby
Raw Normal View History

begin
2019-12-22 07:12:39 +03:00
# TODO: Allow defining depending on stage-0/stage-1.
STAGE = 1
2019-12-23 06:32:34 +03:00
2019-12-22 07:12:39 +03:00
log("************************")
log("* Mobile NixOS stage-#{STAGE} *")
log("************************")
log("")
log("Built for device #{Configuration["device"]["name"]}")
2019-12-22 07:12:39 +03:00
log("")
2019-12-21 08:38:27 +03:00
# This file is a hard-coded map of non-implicit tasks.
# To these tasks, add all Singleton tasks found under tasks/*
# Without any added dependency, show a first splash ASAP
2019-12-23 06:32:34 +03:00
Tasks::Splash.new("stage-0")
# Some software (mainly extfs tools) bark angrily and fail when this is missing.
2019-12-23 06:32:34 +03:00
Tasks::Symlink.new("/proc/mounts", "/etc/mtab")
Mounting.create_special_mount_points()
Mounting.create_boot_mount_points()
2019-12-23 06:32:34 +03:00
[
"/etc/udev",
"/var/log",
].each do |dir|
Tasks::Directory.new(dir)
2019-12-21 08:38:27 +03:00
end
2019-12-23 06:32:34 +03:00
Tasks::Splash.new("stage-1")
.add_dependency(:Target, :Devices)
2019-12-21 08:38:27 +03:00
Tasks::Modules.new(*Configuration["kernel"]["modules"])
2019-12-23 06:32:34 +03:00
Tasks::go()
2019-12-21 08:38:27 +03:00
2019-12-23 06:32:34 +03:00
$logger.fatal("Tasks all ran, but we're still here...")
2019-12-24 08:21:29 +03:00
System.failure("did_not_switch", color: "ff0000")
rescue => e
System.sad_phone("765300")
3.times do
$logger.fatal("********************")
end
$logger.fatal("Handling exception")
$logger.fatal(e.inspect)
$logger.fatal("`init` will exit and the kernel will crash.")
$logger.fatal("********************")
# Leave some time for the $logger.fatals to flush before the kernel crashes.
sleep(1)
System.shell if System.respond_to?(:shell)
# Users with access to serial debug may prefer crashing to the bootloader.
# Though, crashing the kernel is *required* for console ramoops to be present.
if Configuration["boot"]["crashToBootloader"] then
System.run("reboot bootloader")
else
exit 99
end
end