From owner-svn-soc-all@FreeBSD.ORG Thu Aug 7 20:19:11 2014 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4E126791 for ; Thu, 7 Aug 2014 20:19:11 +0000 (UTC) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2F23C214D for ; Thu, 7 Aug 2014 20:19:11 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id s77KJBgX053838 for ; Thu, 7 Aug 2014 20:19:11 GMT (envelope-from pedrosouza@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id s77KJA9W053833 for svn-soc-all@FreeBSD.org; Thu, 7 Aug 2014 20:19:10 GMT (envelope-from pedrosouza@FreeBSD.org) Date: Thu, 7 Aug 2014 20:19:10 GMT Message-Id: <201408072019.s77KJA9W053833@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to pedrosouza@FreeBSD.org using -f From: pedrosouza@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r272049 - soc2014/pedrosouza/lua_loader/head/sys/boot/lua MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Aug 2014 20:19:11 -0000 Author: pedrosouza Date: Thu Aug 7 20:19:09 2014 New Revision: 272049 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=272049 Log: Added kernel selection menu Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/lua/config.lua soc2014/pedrosouza/lua_loader/head/sys/boot/lua/menu.lua Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/lua/config.lua ============================================================================== --- soc2014/pedrosouza/lua_loader/head/sys/boot/lua/config.lua Thu Aug 7 18:56:10 2014 (r272048) +++ soc2014/pedrosouza/lua_loader/head/sys/boot/lua/config.lua Thu Aug 7 20:19:09 2014 (r272049) @@ -286,4 +286,27 @@ else print("Configurations load failed!\n"); end +end + +function config.reload(kernel) + local res = 1; + + -- unload all modules + print("unloading modules . . .\n"); + loader.perform("unload"); + + if kernel ~= nil then + res = loader.perform("load "..kernel); + if res == 0 then print("Kernel '"..kernel.."' loaded!"); end + end + + -- failed to load kernel or it is nil + -- then load default + if res == 1 then + print("loading default kernel\n"); + config.loadkernel(); + end + + -- load modules + config.loadmod(modules); end \ No newline at end of file Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/lua/menu.lua ============================================================================== --- soc2014/pedrosouza/lua_loader/head/sys/boot/lua/menu.lua Thu Aug 7 18:56:10 2014 (r272048) +++ soc2014/pedrosouza/lua_loader/head/sys/boot/lua/menu.lua Thu Aug 7 20:19:09 2014 (r272049) @@ -1,4 +1,5 @@ include("/boot/core.lua"); +include("/boot/config.lua"); include("/boot/screen.lua"); include("/boot/drawer.lua"); @@ -159,7 +160,39 @@ index = 5, name = "Boot "..color.highlight("O").."ptions", func = function () menu.run(boot_options); return false; end - } + }, + ["6"] = { + index = 6, + getName = function () + local v = loader.getenv("kernels"); + if not v then + return "Kernels (not availabe)"; + end + return "Kernels"; + end, + func = function() + local kernels = {}; + local v = loader.getenv("kernels"); + local i = 1; + + if not v then return; end + + kernels[tostring(i)] = {index = i, name = "Return to menu "..color.highlight("[Backspace]"), func = function() return true; end}; + kernels.alias = {["\08"] = kernels[tostring(i)]}; + i = i + 1; + + for k in v:gmatch("([^;]+);?") do + kernels[tostring(i)] = { + index = i, + name = k, + func = function() config.reload(k); end + }; + i = i + 1; + end + menu.run(kernels); + return false; + end + } }; menu.options.alias = {