saving uncommitted changes in /etc prior to emerge run
This commit is contained in:
		
							parent
							
								
									f44a71ee7f
								
							
						
					
					
						commit
						deb7fc4049
					
				
							
								
								
									
										139
									
								
								init.d/._cfg0000_qemu-binfmt
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										139
									
								
								init.d/._cfg0000_qemu-binfmt
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,139 @@ | |||||||
|  | #!/sbin/runscript | ||||||
|  | # Copyright 1999-2014 Gentoo Foundation | ||||||
|  | # Distributed under the terms of the GNU General Public License v2 | ||||||
|  | # $Id$ | ||||||
|  | 
 | ||||||
|  | # enable automatic i386/ARM/M68K/MIPS/SPARC/PPC/s390 program execution by the kernel | ||||||
|  | 
 | ||||||
|  | # Defaulting to OC should be safe because it comes down to: | ||||||
|  | #  - do we trust the interp itself to not be malicious?  yes; we built it. | ||||||
|  | #  - do we trust the programs we're running?  ish; same permission as native | ||||||
|  | #    binaries apply.  so if user can do bad stuff natively, cross isn't worse. | ||||||
|  | : ${QEMU_BINFMT_FLAGS:=OC} | ||||||
|  | 
 | ||||||
|  | depend() { | ||||||
|  |     after procfs | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | start() { | ||||||
|  |    ebegin "Registering qemu-user binaries (flags: ${QEMU_BINFMT_FLAGS})" | ||||||
|  | 
 | ||||||
|  |    if [ ! -d /proc/sys/fs/binfmt_misc ] ; then | ||||||
|  |       modprobe -q binfmt_misc | ||||||
|  |    fi | ||||||
|  | 
 | ||||||
|  |    if [ ! -d /proc/sys/fs/binfmt_misc ] ; then | ||||||
|  |        eend $? "You need support for 'misc binaries' in your kernel!" || return | ||||||
|  |    fi | ||||||
|  | 
 | ||||||
|  |    if [ ! -f /proc/sys/fs/binfmt_misc/register ] ; then | ||||||
|  |       mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc >/dev/null 2>&1 | ||||||
|  |       eend $? || return | ||||||
|  |    fi | ||||||
|  | 
 | ||||||
|  |    # probe cpu type | ||||||
|  |    cpu=`uname -m` | ||||||
|  |    case "$cpu" in | ||||||
|  |       i386|i486|i586|i686|i86pc|BePC|x86_64) | ||||||
|  |          cpu="i386" | ||||||
|  |          ;; | ||||||
|  |       m68k) | ||||||
|  |          cpu="m68k" | ||||||
|  |          ;; | ||||||
|  |       mips*) | ||||||
|  |          cpu="mips" | ||||||
|  |       ;; | ||||||
|  |       "Power Macintosh"|ppc|ppc64) | ||||||
|  |          cpu="ppc" | ||||||
|  |       ;; | ||||||
|  |       armv[4-9]*) | ||||||
|  |          cpu="arm" | ||||||
|  |       ;; | ||||||
|  |       sparc*) | ||||||
|  |          cpu="sparc" | ||||||
|  |       ;; | ||||||
|  |    esac | ||||||
|  | 
 | ||||||
|  |    # register the interpreter for each cpu except for the native one | ||||||
|  |    if [ $cpu != "i386" -a -x "/usr/bin/qemu-i386" ] ; then | ||||||
|  |       echo ':i386:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-i386:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |       echo ':i486:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06\x00:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-i386:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "alpha" -a -x "/usr/bin/qemu-alpha" ] ; then | ||||||
|  |       echo ':alpha:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-alpha:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "arm" -a -x "/usr/bin/qemu-arm" ] ; then | ||||||
|  |       echo   ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\x00\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "arm" -a -x "/usr/bin/qemu-armeb" ] ; then | ||||||
|  |       echo   ':armeb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-armeb:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "aarch64" -a -x "/usr/bin/qemu-aarch64" ] ; then | ||||||
|  |       echo ':aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "sparc" -a -x "/usr/bin/qemu-sparc" ] ; then | ||||||
|  |       echo   ':sparc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sparc:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "ppc" -a -x "/usr/bin/qemu-ppc" ] ; then | ||||||
|  |       echo   ':ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "m68k" -a -x "/usr/bin/qemu-m68k" ] ; then | ||||||
|  |       #echo   'Please check cpu value and header information for m68k!' | ||||||
|  |       echo   ':m68k:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-m68k:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "mips" -a -x "/usr/bin/qemu-mips" ] ; then | ||||||
|  |       # FIXME: We could use the other endianness on a MIPS host. | ||||||
|  |       echo   ':mips:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "mips" -a -x "/usr/bin/qemu-mipsel" ] ; then | ||||||
|  |       echo   ':mipsel:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsel:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "mips" -a -x "/usr/bin/qemu-mipsn32" ] ; then | ||||||
|  |       echo   ':mipsn32:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mipsn32:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "mips" -a -x "/usr/bin/qemu-mipsn32el" ] ; then | ||||||
|  |       echo   ':mipsn32el:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsn32el:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "mips" -a -x "/usr/bin/qemu-mips64" ] ; then | ||||||
|  |       echo   ':mips64:M::\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips64:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "mips" -a -x "/usr/bin/qemu-mips64el" ] ; then | ||||||
|  |       echo   ':mips64el:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mips64el:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "sh" -a -x "/usr/bin/qemu-sh4" ] ; then | ||||||
|  |       echo    ':sh4:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-sh4:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "sh" -a -x "/usr/bin/qemu-sh4eb" ] ; then | ||||||
|  |       echo    ':sh4eb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sh4eb:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    if [ $cpu != "s390x" -a -x "/usr/bin/qemu-s390x" ] ; then | ||||||
|  |       echo   ':s390x:M::\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-s390x:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register | ||||||
|  |    fi | ||||||
|  |    eend $? | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | stop() { | ||||||
|  |    ebegin "Unregistering qemu-user binaries" | ||||||
|  |    local arches | ||||||
|  | 
 | ||||||
|  |    arches="${arches} i386 i486" | ||||||
|  |    arches="${arches} alpha" | ||||||
|  |    arches="${arches} arm armeb" | ||||||
|  |    arches="${arches} aarch64" | ||||||
|  |    arches="${arches} sparc" | ||||||
|  |    arches="${arches} ppc" | ||||||
|  |    arches="${arches} m68k" | ||||||
|  |    arches="${arches} mips mipsel mipsn32 mipsn32el mips64 mips64el" | ||||||
|  |    arches="${arches} sh4 sh4eb" | ||||||
|  |    arches="${arches} s390x" | ||||||
|  | 
 | ||||||
|  |    for a in ${arches}; do | ||||||
|  |       if [ -f /proc/sys/fs/binfmt_misc/$a ] ; then | ||||||
|  |          echo '-1' > /proc/sys/fs/binfmt_misc/$a | ||||||
|  |       fi | ||||||
|  |    done | ||||||
|  | 
 | ||||||
|  |    eend $? | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # vim: ts=4 : | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Hans Wurst
							Hans Wurst