xbps changes: * Installs a "locale" service into the "boot" runlevel to set a global system locale. * Adds consolefont by default in "boot" runlevel. * Removes hardcoded rpath for bins/lib. * Modified inittab to pass correct parameters to reboot(8). * Sets unicode, rc_logger and rc_shell in /etc/rc.conf by default. * Sets windowkeys and fix_euro in /etc/conf.d/keymaps by default. * The bootmisc service no longer cleans up /var/run, as it is now mounted tmpfs (symlinked to /run, which is tmpfs). * The mtab service now symlinks /proc/self/mounts to /etc/mtab. * mount_svcdir() doesn't mount any tmpfs or ramfs anymore, rather mounts an tmpfs in /run if not already mounted and creates a compat symlink for /dev/shm. * Backported a patch to skip unmounting the /run mountpoint from upstream git repo (Gentoo). --- runlevels/Makefile.Linux.orig 2009-05-07 15:48:37.075825332 +0000 +++ runlevels/Makefile.Linux 2009-05-07 15:48:52.008557039 +0000 @@ -1,3 +1,3 @@ SYSINIT+= devfs dmesg -BOOT+= hwclock keymaps modules mtab procfs termencoding +BOOT+= consolefont hwclock keymaps modules mtab procfs termencoding locale SHUTDOWN+= killprocs mount-ro --- init.d/Makefile.Linux.orig 2009-05-07 15:55:26.156910483 +0000 +++ init.d/Makefile.Linux 2009-05-07 15:55:35.682853819 +0000 @@ -2,7 +2,7 @@ NET_LO= net.lo SRCS+= devfs.in dmesg.in hwclock.in consolefont.in keymaps.in killprocs.in \ modules.in mount-ro.in mtab.in numlock.in procfs.in sysfs.in \ - termencoding.in + termencoding.in locale.in .SUFFIXES: .Linux.in --- support/sysvinit/inittab.orig 2009-05-07 12:03:07.533948107 +0000 +++ support/sysvinit/inittab 2009-05-07 12:04:45.178070711 +0000 @@ -18,7 +18,7 @@ l3:3:wait:/sbin/rc default l4:4:wait:/sbin/rc default l5:5:wait:/sbin/rc default l6:6:wait:/sbin/rc reboot -l6r:6:wait:/sbin/reboot -dk +l6r:6:wait:/sbin/reboot -dfi #z6:6:respawn:/sbin/sulogin # new-style single-user .Linux.in: --- conf.d/keymaps.orig 2009-10-09 17:09:02.537481085 +0200 +++ conf.d/keymaps 2009-10-09 17:12:19.694535631 +0200 @@ -1,10 +1,14 @@ # Use KEYMAP to specify the default console keymap. There is a complete tree # of keymaps in /usr/share/keymaps to choose from. -keymap="us" +# +# Please note that is mandatory to also specify the keyboard layout model, +# i.e qwerty, dvorak, etc; because otherwise loadkeys(1) will use the first +# one it finds and some keymaps do have the same name. +keymap="qwerty/us" # Should we first load the 'windowkeys' console keymap? Most x86 users will # say "yes" here. Note that non-x86 users should leave it as "no". -windowkeys="NO" +windowkeys="yes" # The maps to load for extended keyboards. Most users will leave this as is. extended_keymaps="" @@ -18,4 +22,4 @@ dumpkeys_charset="" # Some fonts map AltGr-E to the currency symbol ¤ instead of the Euro € # To fix this, set to "yes" -fix_euro="NO" +fix_euro="yes" --- mk/lib.mk.orig 2009-10-21 11:00:57.000000000 +0200 +++ mk/lib.mk 2009-10-21 11:01:17.000000000 +0200 @@ -32,7 +32,7 @@ lib${LIB}.a: ${OBJS} ${STATICOBJS} ${SHLIB_NAME}: ${VERSION_MAP} LDFLAGS+= -Wl,--version-script=${VERSION_MAP} # We need to ensure we use libraries in /lib -LDFLAGS+= -L/${LIBNAME} -Wl,-rpath=/${LIBNAME} +LDFLAGS+= -L/${LIBNAME} ${SHLIB_NAME}: ${SOBJS} @${ECHO} building shared library $@ --- etc/rc.conf.in.orig 2009-12-05 03:30:48.675483763 +0100 +++ etc/rc.conf.in 2009-12-05 03:31:13.034222373 +0100 @@ -18,7 +18,7 @@ # If not specified we use $SHELL, otherwise the one specified in /etc/passwd, # otherwise /bin/sh # Linux users could specify /sbin/sulogin -#rc_shell=/bin/sh +rc_shell=/sbin/sulogin # Do we allow any started service in the runlevel to satisfy the depedency # or do we want all of them regardless of state? For example, if net.eth0 @@ -44,7 +44,7 @@ # /var/log/rc.log # NOTE: Linux systems require the devfs service to be started before # logging can take place and as such cannot log the sysinit runlevel. -#rc_logger="YES" +rc_logger="YES" # By default we filter the environment for our running scripts. To allow other # variables through, add them here. Use a * to allow all variables through. @@ -73,7 +73,7 @@ # There variables are shared between many init scripts # Set unicode to YES to turn on unicode support for keyboards and screens. -#unicode="NO" +unicode="YES" # Network fstypes. Below is the default. net_fs_list="afs cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre ncpfs nfs nfs4 ocfs2 shfs smbfs" --- init.d/bootmisc.in.orig 2011-01-16 12:45:10.633395765 +0100 +++ init.d/bootmisc.in 2011-01-16 12:46:00.591163353 +0100 @@ -97,31 +97,6 @@ start() done [ -e /var/log/wtmp ] || mkutmp /var/log/wtmp eend 0 - - ebegin "Cleaning /var/run" - for x in $(find /var/run ! -type d ! -name utmp \ - ! -name random-seed ! -name dev.db \ - ! -name ld-elf.so.hints ! -name ld.so.hints); - do - # Clean stale sockets - if [ -S "$x" ]; then - if type fuser >/dev/null 2>&1; then - fuser "$x" >/dev/null 2>&1 || rm -- "$x" - else - rm -- "$x" - fi - fi - [ ! -f "$x" ] && continue - # Do not remove pidfiles of already running daemons - case "$x" in - *.pid) - start-stop-daemon --test --quiet \ - --stop --pidfile "$x" && continue - ;; - esac - rm -f -- "$x" - done - eend 0 fi # Clean up /tmp directories --- init.d/devfs.in.orig 2011-02-10 06:15:24.000000000 +0100 +++ init.d/devfs.in 2011-04-29 18:12:48.983999871 +0200 @@ -13,7 +13,6 @@ start() { # Mount required stuff as user may not have then in /etc/fstab for x in \ "devpts /dev/pts 0755 ,gid=5,mode=0620 devpts" \ - "tmpfs /dev/shm 1777 ,nodev shm" \ ; do set -- $x grep -Eq "[[:space:]]+$1$" /proc/filesystems || continue --- sh/init.sh.Linux.in.orig 2011-02-10 06:15:24.000000000 +0100 +++ sh/init.sh.Linux.in 2011-05-04 13:03:07.481471247 +0200 @@ -3,59 +3,22 @@ # Copyright (c) 2007-2009 Roy Marples # All rights reserved. Released under the 2-clause BSD license. -# This basically mounts $RC_SVCDIR as a ramdisk. -# The tricky part is finding something our kernel supports -# tmpfs and ramfs are easy, so force one or the other. -svcdir_restorecon() -{ - local rc=0 - if [ -x /usr/sbin/selinuxenabled -a -c /selinux/null ] && - selinuxenabled; then - restorecon $RC_SVCDIR - rc=$? - fi - return $rc -} - mount_svcdir() { - # mount from fstab if we can - fstabinfo --mount "$RC_SVCDIR" && return 0 - - local fs= fsopts="-o rw,noexec,nodev,nosuid" - local svcsize=${rc_svcsize:-1024} - - # Some buggy kernels report tmpfs even when not present :( - if grep -Eq "[[:space:]]+tmpfs$" /proc/filesystems; then - local tmpfsopts="${fsopts},mode=755,size=${svcsize}k" - mount -n -t tmpfs $tmpfsopts rc-svcdir "$RC_SVCDIR" - if [ $? -eq 0 ]; then - svcdir_restorecon - [ $? -eq 0 ] && return 0 - fi - fi - - if grep -Eq "[[:space:]]+ramfs$" /proc/filesystems; then - fs="ramfs" - # ramfs has no special options - elif [ -e /dev/ram0 ] \ - && grep -Eq "[[:space:]]+ext2$" /proc/filesystems; then - devdir="/dev/ram0" - fs="ext2" - dd if=/dev/zero of="$devdir" bs=1k count="$svcsize" - mkfs -t "$fs" -i 1024 -vm0 "$devdir" "$svcsize" - else - echo - eerror "OpenRC requires tmpfs, ramfs or a ramdisk + ext2" - eerror "compiled into the kernel" - echo - return 1 - fi + # Mount /run as tmpfs if not mounted already. + mountinfo -q /run || mount -t tmpfs -o mode=0755,nosuid,nodev tmpfs /run - mount -n -t "$fs" $fsopts rc-svcdir "$RC_SVCDIR" - if [ $? -eq 0 ]; then - svcdir_restorecon - [ $? -eq 0 ] && return 0 + for d in init.d udev; do + [ ! -d /run/${d} ] && mkdir -m0755 /run/${d} + done + for d in lock tmp shm; do + [ ! -d /run/${d} ] && mkdir -m1777 /run/${d} + done + + # Create /dev/shm -> /run/shm compat symlink. + if [ "$(readlink -f /dev/shm)" != "/run/shm" ]; then + rm -rf /dev/shm + ln -sf /run/shm /dev/shm fi } --- init.d/localmount.in.orig 2011-02-10 06:15:24.000000000 +0100 +++ init.d/localmount.in 2011-05-20 09:44:24.445841901 +0200 @@ -34,7 +34,7 @@ start() stop() { # We never unmount / or /dev or $RC_SVCDIR - local x= no_umounts_r="/|/dev|/dev/.*|${RC_SVCDIR}" + local x= no_umounts_r="/|/dev|/dev/.*" no_umounts_r="${no_umounts_r}|/bin|/sbin|/lib|/libexec" # RC_NO_UMOUNTS is an env var that can be set by plugins OIFS=$IFS SIFS=${IFS-y} @@ -49,7 +49,7 @@ stop() fi if [ "$RC_UNAME" = Linux ]; then - no_umounts_r="$no_umounts_r|/proc|/proc/.*|/sys|/sys/.*" + no_umounts_r="$no_umounts_r|/proc|/proc/.*|/run|/sys|/sys/.*|/cow|/rofs|/cdrom" fi no_umounts_r="^($no_umounts_r)$" --- init.d/mount-ro.in.orig 2011-05-20 09:45:08.199841890 +0200 +++ init.d/mount-ro.in 2011-05-20 09:45:33.285841883 +0200 @@ -19,7 +19,7 @@ start() # We need the do_unmount function . "$RC_LIBEXECDIR"/sh/rc-mount.sh eindent - local m="/dev|/dev/.*|/proc|/proc.*|/sys|/sys/.*|${RC_SVCDIR}" x= fs= + local m="/dev|/dev/.*|/proc|/proc.*|/sys|/sys/.*|/run|/cow|/rofs|/cdrom" x= fs= m="$m|/bin|/sbin|/lib|/libexec" # RC_NO_UMOUNTS is an env var that can be set by plugins local OIFS=$IFS SIFS=${IFS-y} IFS=$IFS --- init.d/mtab.in.orig 2011-06-25 16:16:49.284716701 +0200 +++ init.d/mtab.in 2011-06-25 16:18:13.986716755 +0200 @@ -6,31 +6,11 @@ description="Update /etc/mtab to match w depend() { - need root + need root keyword -prefix } start() { - # /etc/mtab could be a symlink to /proc/mounts - if [ ! -w /etc/mtab -a -L /etc/mtab ]; then - eeinfo "Skipping mtab update (non writeable symlink)" - return 0 - fi - - ebegin "Updating /etc/mtab" - if ! echo 2>/dev/null >/etc/mtab; then - ewend 1 "/etc/mtab is not updateable" - return 0 - fi - - # With / as tmpfs we cannot umount -at tmpfs in localmount as that - # makes / readonly and dismounts all tmpfs even if in use which is - # not good. Luckily, umount uses /etc/mtab instead of /proc/mounts - # which allows this hack to work. - grep -v "^[^ ]* / tmpfs " /proc/mounts > /etc/mtab - - # Remove stale backups - rm -f /etc/mtab~ /etc/mtab~~ - eend 0 + ln -sf /proc/self/mounts /etc/mtab }