diff --git a/NEWS.md b/NEWS.md index 0d386190..0378a08e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,19 @@ OpenRC NEWS This file will contain a list of notable changes for each release. Note the information in this file is in reverse order. +## OpenRC 0.40 + +In this version, the keymaps and termencoding services on Linux needed +to be modified so they do not write to the root file system. This was +done so they can run earlier in the boot sequence. AS a result, you will +need to add save-termencoding and save-keymaps to your boot runlevel. +This can be done as follows: + +``` +# rc-update add save-keymaps boot +# rc-update add save-termencoding boot +``` + ## OpenRC 0.39 This version removes the support for addons. diff --git a/init.d/.gitignore b/init.d/.gitignore index 90abdbbe..8e03e3b9 100644 --- a/init.d/.gitignore +++ b/init.d/.gitignore @@ -41,6 +41,8 @@ rc-enabled rpcbind runsvdir savecore +save-keymaps +save-termencoding swap-blk swclock syslogd diff --git a/init.d/Makefile b/init.d/Makefile index e18f7a9f..c97aeda9 100644 --- a/init.d/Makefile +++ b/init.d/Makefile @@ -23,8 +23,8 @@ SRCS-FreeBSD+= adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \ SRCS-Linux= agetty.in binfmt.in devfs.in cgroups.in dmesg.in hwclock.in \ consolefont.in keymaps.in killprocs.in modules.in \ - mount-ro.in mtab.in numlock.in procfs.in net-online.in sysfs.in \ -termencoding.in + mount-ro.in mtab.in numlock.in procfs.in net-online.in save-keymaps.in \ + save-termencoding.in sysfs.in termencoding.in # Generic BSD scripts SRCS-NetBSD= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \ diff --git a/init.d/keymaps.in b/init.d/keymaps.in index 4bece821..16ddcc96 100644 --- a/init.d/keymaps.in +++ b/init.d/keymaps.in @@ -14,7 +14,7 @@ description="Applies a keymap for the consoles." depend() { need termencoding - after bootmisc clock + after devfs keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu } @@ -68,10 +68,5 @@ start() echo "altgr keycode 18 = U+20AC" | loadkeys -q - eend $? fi - - # Save the keymapping for use immediately at boot - if checkpath -W "$RC_LIBEXECDIR"; then - mkdir -p "$RC_LIBEXECDIR"/console - dumpkeys >"$RC_LIBEXECDIR"/console/keymap - fi + return 0 } diff --git a/init.d/save-keymaps.in b/init.d/save-keymaps.in new file mode 100644 index 00000000..f35097ce --- /dev/null +++ b/init.d/save-keymaps.in @@ -0,0 +1,28 @@ +#!@SBINDIR@/openrc-run +# Copyright (c) 2018 Sony Interactive Entertainment, Inc. +# +# This file is part of OpenRC. It is subject to the license terms in +# the LICENSE file found in the top-level directory of this +# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE +# This file may not be copied, modified, propagated, or distributed +# except according to the terms contained in the LICENSE file. + +description="Save the keymap for use as early as possible" + +depend() +{ + need termencoding + after bootmisc clock keymaps + keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu +} + +start() +{ + # Save the keymapping for use immediately at boot + ebegin "Saving key mapping" + if checkpath -W "$RC_LIBEXECDIR"; then + mkdir -p "$RC_LIBEXECDIR"/console + dumpkeys >"$RC_LIBEXECDIR"/console/keymap + fi + eend $? "Unable to save keymapping" +} diff --git a/init.d/save-termencoding.in b/init.d/save-termencoding.in new file mode 100644 index 00000000..9e640dcc --- /dev/null +++ b/init.d/save-termencoding.in @@ -0,0 +1,35 @@ +#!@SBINDIR@/openrc-run +# Copyright (c) 2018 Sony Interactive Entertainment, Inc. +# +# This file is part of OpenRC. It is subject to the license terms in +# the LICENSE file found in the top-level directory of this +# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE +# This file may not be copied, modified, propagated, or distributed +# except according to the terms contained in the LICENSE file. + +description="Configures terminal encoding." + +ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} +: ${unicode:=${UNICODE}} + +depend() +{ + keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu + use root + after bootmisc clock termencoding +} + +start() +{ + ebegin "Saving terminal encoding" + # Save the encoding for use immediately at boot + if checkpath -W "$RC_LIBEXECDIR"; then + mkdir -p "$RC_LIBEXECDIR"/console + if yesno ${unicode:-${UNICODE}}; then + echo "" > "$RC_LIBEXECDIR"/console/unicode + else + rm -f "$RC_LIBEXECDIR"/console/unicode + fi + fi + eend 0 +} diff --git a/init.d/termencoding.in b/init.d/termencoding.in index 86f5b588..41ddc342 100644 --- a/init.d/termencoding.in +++ b/init.d/termencoding.in @@ -17,8 +17,7 @@ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} depend() { keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu - use root - after bootmisc clock + after devfs } start() diff --git a/runlevels/Makefile b/runlevels/Makefile index f000db0d..dbfb59ca 100644 --- a/runlevels/Makefile +++ b/runlevels/Makefile @@ -36,7 +36,8 @@ BOOT-FreeBSD+= hostid modules newsyslog savecore syslogd # FreeBSD specific stuff BOOT-FreeBSD+= adjkerntz dumpon syscons -BOOT-Linux+= binfmt hwclock keymaps modules mtab procfs termencoding +BOOT-Linux+= binfmt hwclock keymaps modules mtab procfs save-keymaps \ + save-termencoding termencoding SHUTDOWN-Linux= killprocs mount-ro SYSINIT-Linux= devfs cgroups dmesg sysfs