The major problem with the current ordering is that loader.conf may contain all of the magic we need to actually setup the console, so loading local.lua prior to that can make it excessively difficult and annoying to debug (whoops, sorry Ravi & Warner). The new ordering has some implications, but I suspect they are a non-issue. The first is that it's no longer possible for the local module to inject any logic prior to loading config -- I suspect no one has relied on this. The second implication is that the config.loaded hook is now useless, as the local module will always be included after that hook would have fired. For config.loaded, I will opt to leave it in, just in case we add an early point for local lua to get injected or in case one wants to schedule some deferred logic in a custom loader.lua. The overhead of having it if no hooks will be invoked is relatively minimal. Diagnosed by: imp Reported by: imp, rpokala (most likely) MFC after: 3 days
67 lines
2.4 KiB
Lua
67 lines
2.4 KiB
Lua
--
|
|
-- SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
|
--
|
|
-- Copyright (c) 2015 Pedro Souza <pedrosouza@freebsd.org>
|
|
-- Copyright (c) 2018 Kyle Evans <kevans@FreeBSD.org>
|
|
-- All rights reserved.
|
|
--
|
|
-- Redistribution and use in source and binary forms, with or without
|
|
-- modification, are permitted provided that the following conditions
|
|
-- are met:
|
|
-- 1. Redistributions of source code must retain the above copyright
|
|
-- notice, this list of conditions and the following disclaimer.
|
|
-- 2. Redistributions in binary form must reproduce the above copyright
|
|
-- notice, this list of conditions and the following disclaimer in the
|
|
-- documentation and/or other materials provided with the distribution.
|
|
--
|
|
-- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
-- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
-- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
-- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
-- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
-- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
-- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
-- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
-- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
-- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
-- SUCH DAMAGE.
|
|
--
|
|
-- $FreeBSD$
|
|
--
|
|
|
|
-- The cli module should be included first here. Some of the functions that it
|
|
-- defines are necessary for the Lua-based loader to operate in general.
|
|
-- Other modules will also need some of the functions it defines to safely
|
|
-- execute loader commands.
|
|
require("cli")
|
|
local color = require("color")
|
|
local core = require("core")
|
|
local config = require("config")
|
|
local password = require("password")
|
|
-- The menu module will be brought in after config has loaded if we actually
|
|
-- need it.
|
|
local menu
|
|
|
|
config.load()
|
|
|
|
-- Our console may have been setup for a different color scheme before we get
|
|
-- here, so make sure we set the default.
|
|
if color.isEnabled() then
|
|
printc(color.default())
|
|
end
|
|
try_include("local")
|
|
if not core.isMenuSkipped() then
|
|
menu = require("menu")
|
|
end
|
|
if core.isUEFIBoot() then
|
|
loader.perform("efi-autoresizecons")
|
|
end
|
|
password.check()
|
|
-- menu might be disabled
|
|
if menu ~= nil then
|
|
menu.run()
|
|
else
|
|
-- Load kernel/modules before we go
|
|
config.loadelf()
|
|
end
|