From e874c6d0c229f5cb64c6699208315e3a01bc171a Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Fri, 17 May 2013 16:13:42 +0200 Subject: [PATCH] Current state --- conf.d/dmcrypt | 98 +++++ csh.env | 1 - dbus-1/system.d/org.freedesktop.UDisks2.conf | 16 + .../system.d/org.gnome.CPUFreqSelector.conf | 20 + env.d/05portage | 1 - env.d/99polkit-kde | 1 + gconf/schemas/cpufreq-applet.schemas | 102 ++++++ init.d/dmcrypt | 346 ++++++++++++++++++ portage/package.keywords | 1 + profile.env | 1 - qt4/.keep_dev-qt_qtcore-4 | 0 11 files changed, 584 insertions(+), 3 deletions(-) create mode 100644 conf.d/dmcrypt create mode 100644 dbus-1/system.d/org.freedesktop.UDisks2.conf create mode 100644 dbus-1/system.d/org.gnome.CPUFreqSelector.conf delete mode 100644 env.d/05portage create mode 100644 env.d/99polkit-kde create mode 100644 gconf/schemas/cpufreq-applet.schemas create mode 100755 init.d/dmcrypt create mode 100644 qt4/.keep_dev-qt_qtcore-4 diff --git a/conf.d/dmcrypt b/conf.d/dmcrypt new file mode 100644 index 00000000..35a1fd2c --- /dev/null +++ b/conf.d/dmcrypt @@ -0,0 +1,98 @@ +# /etc/conf.d/dmcrypt + +# For people who run dmcrypt on top of some other layer (like raid), +# use rc_need to specify that requirement. See the runscript(8) man +# page for more information. + +#-------------------- +# Instructions +#-------------------- + +# Note regarding the syntax of this file. This file is *almost* bash, +# but each line is evaluated separately. Separate swaps/targets can be +# specified. The init-script which reads this file assumes that a +# swap= or target= line starts a new section, similar to lilo or grub +# configuration. + +# Note when using gpg keys and /usr on a separate partition, you will +# have to copy /usr/bin/gpg to /bin/gpg so that it will work properly +# and ensure that gpg has been compiled statically. +# See http://bugs.gentoo.org/90482 for more information. + +# Note that the init-script which reads this file detects whether your +# partition is LUKS or not. No mkfs is run unless you specify a makefs +# option. + +# Global options: +#---------------- + +# Max number of checks to perform (1 per second) +#dmcrypt_max_timeout=120 + +# Arguments: +#----------- +# target= == Mapping name for partition. +# swap= == Mapping name for swap partition. +# source='' == Real device for partition. +# key='[:]' == Fullpath from / or from inside removable media. +# remdev='' == Device that will be assigned to removable media. +# gpg_options='' == Default are --quiet --decrypt +# options='' == cryptsetup, for LUKS you can only use --readonly +# loop_file='' == Loopback file. +# pre_mount='cmds' == commands to execute before mounting partition. +# post_mount='cmds' == commands to execute after mounting partition. +#----------- +# Supported Modes +# gpg == decrypt and pipe key into cryptsetup. +# Note: new-line character must not be part of key. +# Command to erase \n char: 'cat key | tr -d '\n' > cleanKey' + +#-------------------- +# dm-crypt examples +#-------------------- + +## swap +# Swap partitions. These should come first so that no keys make their +# way into unencrypted swap. +# If no options are given, they will default to: -c aes -h sha1 -d /dev/urandom +# If no makefs is given then mkswap will be assumed +#swap=crypt-swap +#source='/dev/hda2' + +## /home with passphrase +#target=crypt-home +#source='/dev/hda5' + +## /home with regular keyfile +#target=crypt-home +#source='/dev/hda5' +#key='/full/path/to/homekey' + +## /home with gpg protected key +#target=crypt-home +#source='/dev/hda5' +#key='/full/path/to/homekey:gpg' + +## /home with regular keyfile on removable media(such as usb-stick) +#target=crypt-home +#source='/dev/hda5' +#key='/full/path/to/homekey' +#remdev='/dev/sda1' + +##/home with gpg protected key on removable media(such as usb-stick) +#target=crypt-home +#source='/dev/hda5' +#key='/full/path/to/homekey:gpg' +#remdev='/dev/sda1' + +##/tmp with regular keyfile +#target=crypt-tmp +#source='/dev/hda6' +#key='/full/path/to/tmpkey' +#pre_mount='/sbin/mkreiserfs -f -f ${dev}' +#post_mount='chown root:root ${mount_point}; chmod 1777 ${mount_point}' + +## Loopback file example +#mount='crypt-loop-home' +#source='/dev/loop0' +#loop_file='/mnt/crypt/home' diff --git a/csh.env b/csh.env index 768250f0..f9c40513 100644 --- a/csh.env +++ b/csh.env @@ -36,7 +36,6 @@ setenv PATH '/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/usr/lib64/subversi setenv PRELINK_PATH_MASK '/usr/lib64/libfreebl3.so:/usr/lib64/libnssdbm3.so:/usr/lib64/libsoftokn3.so:/opt/bin/skype' setenv PYTHONDOCS_2_7 '/usr/share/doc/python-docs-2.7.2/html/library' setenv PYTHONDOCS_3_2 '/usr/share/doc/python-docs-3.2.2/html/library' -setenv PYTHONPATH '/usr/lib/portage/pym' setenv QT_GRAPHICSSYSTEM 'raster' setenv QT_PLUGIN_PATH '/usr/lib64/kde4/plugins' setenv ROOTPATH '/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/usr/lib64/subversion/bin' diff --git a/dbus-1/system.d/org.freedesktop.UDisks2.conf b/dbus-1/system.d/org.freedesktop.UDisks2.conf new file mode 100644 index 00000000..7e176d3e --- /dev/null +++ b/dbus-1/system.d/org.freedesktop.UDisks2.conf @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/dbus-1/system.d/org.gnome.CPUFreqSelector.conf b/dbus-1/system.d/org.gnome.CPUFreqSelector.conf new file mode 100644 index 00000000..331b6bce --- /dev/null +++ b/dbus-1/system.d/org.gnome.CPUFreqSelector.conf @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/env.d/05portage b/env.d/05portage deleted file mode 100644 index e55d2d8f..00000000 --- a/env.d/05portage +++ /dev/null @@ -1 +0,0 @@ -PYTHONPATH="/usr/lib/portage/pym" diff --git a/env.d/99polkit-kde b/env.d/99polkit-kde new file mode 100644 index 00000000..d6646ad7 --- /dev/null +++ b/env.d/99polkit-kde @@ -0,0 +1 @@ +CONFIG_PROTECT="/usr/share/polkit-1/actions" diff --git a/gconf/schemas/cpufreq-applet.schemas b/gconf/schemas/cpufreq-applet.schemas new file mode 100644 index 00000000..cfd152b8 --- /dev/null +++ b/gconf/schemas/cpufreq-applet.schemas @@ -0,0 +1,102 @@ + + + + + /schemas/apps/cpufreq-applet/prefs/cpu + cpufreq-applet + int + 0 + + CPU to Monitor + Set the CPU to monitor. In a single processor system you don't have to change it. + + + + Zu überwachender Prozessor + Den zu überwachenden Prozessor festlegen. In einem Ein-Prozessorsystem kann dieser Wert nicht geändert werden. + + + + CPU to Monitor + Set the CPU to monitor. In a single processor system you don't have to change it. + + + + Отслеживаемый процессор + Устанавливает отслеживаемый процессор. На однопроцессорной системе изменять не надо. + + + + CPU cần theo dõi + Lập CPU cần theo dõi. Trong hệ thống chỉ có một bộ xử lý thì không cần thay đổi điều này. + + + + /schemas/apps/cpufreq-applet/prefs/show_mode + cpufreq-applet + int + 2 + + Mode to show cpu usage + A 0 value means to show the applet in graphic mode (pixmap only), 1 to show the applet in text mode (not to show the pixmap) and 2 to show the applet in graphic and text mode. + + + + Modus zur Anzeige der Prozessorlast + Der Wert 0 bedeutet, dass das Applet im Grafikmodus (nur Bilder), der Wert 1 dass das Applet im Textmodus (ohne Grafiken) und der Wert 2 dass das Applet im Grafik- und Textmodus angezeigt wird. + + + + Mode to show cpu usage + A 0 value means to show the applet in graphic mode (pixmap only), 1 to show the applet in text mode (not to show the pixmap) and 2 to show the applet in graphic and text mode. + + + + Режим показа использования ЦП + 0 - показывать апплет в графическом режиме (только изображение), 1 - текстовый режим (не показывать изображение), 2 - показывать и текст, и изображение. + + + + Chế độ cần hiển thị cách dùng CPU + Giá trị: + • 0 — hiển thi tiểu dụng trong chế độ đồ họa (chỉ ảnh bằng điểm) + • 1 — hiển thị tiểu dung trong chế độ chữ (không hiển thị ảnh bằng điểm) + • 2 — hiển thị tiểu dụng trong cả hai chế độ đồ họa và chữ đều. + + + + /schemas/apps/cpufreq-applet/prefs/show_text_mode + cpufreq-applet + int + 1 + + The type of text to display (if the text is enabled). + A 0 value means to show cpu frequency, 1 to show frequency and units, and 2 to show percentage instead of frequency. + + + + Die Art des anzuzeigenden Textes (falls der Text aktiviert ist). + Der Wert 0 bedeutet, dass der Prozessortakt angezeigt wird, der Wert 1 dass der Takt und die Einheiten angezeigt und der Wert 2 dass ein Prozentwert anstatt des Taktes angezeigt wird. + + + + The type of text to display (if the text is enabled). + A 0 value means to show cpu frequency, 1 to show frequency and units, and 2 to show percentage instead of frequency. + + + + Тип отображаемого текста (если текст разрешён). + 0 - показывать частоту ЦП, 1 - частоту и единицы, 2 - проценты вместо частоты. + + + + Kiểu chữ cần hiển thị (nếu chữ được bật). + Giá trị: + • 0 — hiển thị tần số CPU + • 1 — hiển thị tần số và đơn vi đều + • 2 — hiển thị phần trăm thay thế tần số. + + + + + diff --git a/init.d/dmcrypt b/init.d/dmcrypt new file mode 100755 index 00000000..130036b9 --- /dev/null +++ b/init.d/dmcrypt @@ -0,0 +1,346 @@ +#!/sbin/runscript +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/cryptsetup/files/dmcrypt.rc,v 1.4 2012/05/11 08:33:01 vapier Exp $ + +depend() { + before checkfs fsck +} + +# We support multiple dmcrypt instances based on $SVCNAME +execute_hook="dm_crypt_execute_dmcrypt" +# XXX: Should we drop this ? +# execute_hook="dm_crypt_execute_localmount" +conf_file="/etc/conf.d/${SVCNAME}" + +# Get splash helpers if available. +if [ -e /sbin/splash-functions.sh ] ; then + . /sbin/splash-functions.sh +fi + +# Setup mappings for an individual target/swap +# Note: This relies on variables localized in the main body below. +dm_crypt_execute_dmcrypt() { + local dev ret mode foo + + if [ -n "${target}" ] ; then + # let user set options, otherwise leave empty + : ${options:=' '} + elif [ -n "${swap}" ] ; then + if cryptsetup isLuks ${source} 2>/dev/null ; then + ewarn "The swap you have defined is a LUKS partition. Aborting crypt-swap setup." + return + fi + target=${swap} + # swap contents do not need to be preserved between boots, luks not required. + # suspend2 users should have initramfs's init handling their swap partition either way. + : ${options:='-c aes -h sha1 -d /dev/urandom'} + : ${pre_mount:='mkswap ${dev}'} + else + return + fi + if [ -z "${source}" ] && [ ! -e "${source}" ] ; then + ewarn "source \"${source}\" for ${target} missing, skipping..." + return + fi + + if [ -n "${loop_file}" ] ; then + dev="/dev/mapper/${target}" + ebegin " Setting up loop device ${source}" + losetup ${source} ${loop_file} + fi + + # cryptsetup: + # luksOpen # is $source + # create # is $target + local arg1="create" arg2="${target}" arg3="${source}" luks=0 + + cryptsetup isLuks ${source} 2>/dev/null && { arg1="luksOpen"; arg2="${source}"; arg3="${target}"; luks=1; } + + # Older versions reported: + # ${target} is active: + # Newer versions report: + # ${target} is active[ and is in use.] + if cryptsetup status ${target} | egrep -q ' is active' ; then + einfo "dm-crypt mapping ${target} is already configured" + return + fi + splash svc_input_begin ${SVCNAME} >/dev/null 2>&1 + + # Handle keys + if [ -n "${key}" ] ; then + read_abort() { + # some colors + local ans savetty resettty + [ -z "${NORMAL}" ] && eval $(eval_ecolors) + einfon " $1? (${WARN}yes${NORMAL}/${GOOD}No${NORMAL}) " + shift + # This is ugly as s**t. But POSIX doesn't provide `read -t`, so + # we end up having to implement our own crap with stty/etc... + savetty=$(stty -g) + resettty='stty ${savetty}; trap - EXIT HUP INT TERM' + trap 'eval "${resettty}"' EXIT HUP INT TERM + stty -icanon + [ "${1}" = -t ] && stty min 0 time "$(( $2 * 10 ))" + ans=$(dd count=1 bs=1 2>/dev/null) || ans='' + eval "${resettty}" + if [ -z "${ans}" ] ; then + printf '\r' + else + echo + fi + case ${ans} in + [yY]) return 0;; + *) return 1;; + esac + } + + # Notes: sed not used to avoid case where /usr partition is encrypted. + mode=${key/*:/} && ( [ "${mode}" = "${key}" ] || [ -z "${mode}" ] ) && mode=reg + key=${key/:*/} + case "${mode}" in + gpg|reg) + # handle key on removable device + if [ -n "${remdev}" ] ; then + # temp directory to mount removable device + local mntrem="${RC_SVCDIR}/dm-crypt-remdev.$$" + if [ ! -d "${mntrem}" ] ; then + if ! mkdir -p "${mntrem}" ; then + ewarn "${source} will not be decrypted ..." + einfo "Reason: Unable to create temporary mount point '${mntrem}'" + return + fi + fi + i=0 + einfo "Please insert removable device for ${target}" + while [ ${i} -lt ${dmcrypt_max_timeout:-120} ] ; do + foo="" + if mount -n -o ro "${remdev}" "${mntrem}" 2>/dev/null >/dev/null ; then + # keyfile exists? + if [ ! -e "${mntrem}${key}" ] ; then + umount -n "${mntrem}" + rmdir "${mntrem}" + einfo "Cannot find ${key} on removable media." + read_abort "Abort" ${read_timeout:--t 1} && return + else + key="${mntrem}${key}" + break + fi + else + [ -e "${remdev}" ] \ + && foo="mount failed" \ + || foo="mount source not found" + fi + : $((i += 1)) + read_abort "Stop waiting after $i attempts (${foo})" -t 1 && return + done + else # keyfile ! on removable device + if [ ! -e "${key}" ] ; then + ewarn "${source} will not be decrypted ..." + einfo "Reason: keyfile ${key} does not exist." + return + fi + fi + ;; + *) + ewarn "${source} will not be decrypted ..." + einfo "Reason: mode ${mode} is invalid." + return + ;; + esac + else + mode=none + fi + ebegin " ${target} using: ${options} ${arg1} ${arg2} ${arg3}" + if [ "${mode}" = "gpg" ] ; then + : ${gpg_options:='-q -d'} + # gpg available ? + if type -p gpg >/dev/null ; then + for i in 0 1 2 ; do + # paranoid, don't store key in a variable, pipe it so it stays very little in ram unprotected. + # save stdin stdout stderr "values" + gpg ${gpg_options} ${key} 2>/dev/null | cryptsetup ${options} ${arg1} ${arg2} ${arg3} + ret=$? + [ ${ret} -eq 0 ] && break + done + eend ${ret} "failure running cryptsetup" + else + ewarn "${source} will not be decrypted ..." + einfo "Reason: cannot find gpg application." + einfo "You have to install app-crypt/gnupg first." + einfo "If you have /usr on its own partition, try copying gpg to /bin ." + fi + else + if [ "${mode}" = "reg" ] ; then + cryptsetup ${options} -d ${key} ${arg1} ${arg2} ${arg3} + ret=$? + eend ${ret} "failure running cryptsetup" + else + cryptsetup ${options} ${arg1} ${arg2} ${arg3} + ret=$? + eend ${ret} "failure running cryptsetup" + fi + fi + if [ -d "${mntrem}" ] ; then + umount -n ${mntrem} 2>/dev/null >/dev/null + rmdir ${mntrem} 2>/dev/null >/dev/null + fi + splash svc_input_end ${SVCNAME} >/dev/null 2>&1 + + if [ ${ret} -ne 0 ] ; then + cryptfs_status=1 + else + if [ -n "${pre_mount}" ] ; then + dev="/dev/mapper/${target}" + ebegin " pre_mount: ${pre_mount}" + eval "${pre_mount}" > /dev/null + ewend $? || cryptfs_status=1 + fi + fi +} + +# Run any post_mount commands for an individual mount +# +# Note: This relies on variables localized in the main body below. +dm_crypt_execute_localmount() { + local mount_point + + [ -z "${target}" ] && [ -z "${post_mount}" ] && return + + if ! cryptsetup status ${target} | egrep -q '\/dev/null + eend $? || cryptfs_status=1 + fi +} + +# Lookup optional bootparams +get_bootparam_val() { + # We're given something like: + # foo=bar=cow + # Return the "bar=cow" part. + case $1 in + *\=*) + local key=$(echo "$1" | cut -f1 -d=) + echo "$1" | cut -c $(( ${#key} + 2 )) + ;; + esac +} + +start() { + local header=true cryptfs_status=0 + local gpg_options key loop_file target targetline options pre_mount post_mount source swap remdev + + local x + for x in $(cat /proc/cmdline) ; do + case "${x}" in + key_timeout\=*) + local KEY_TIMEOUT=$(get_bootparam_val "${x}") + if [ ${KEY_TIMEOUT} -gt 0 ] ; then + read_timeout="-t ${KEY_TIMEOUT}" + fi + ;; + esac + done + + while read -u 3 targetline ; do + case ${targetline} in + # skip comments and blank lines + ""|"#"*) continue ;; + # skip service-specific openrc configs #377927 + rc_*) continue ;; + esac + + ${header} && ebegin "Setting up dm-crypt mappings" + header=false + + # check for the start of a new target/swap + case ${targetline} in + target=*|swap=*) + # If we have a target queued up, then execute it + ${execute_hook} + + # Prepare for the next target/swap by resetting variables + unset gpg_options key loop_file target options pre_mount post_mount source swap remdev + ;; + + gpg_options=*|remdev=*|key=*|loop_file=*|options=*|pre_mount=*|post_mount=*|source=*) + if [ -z "${target}${swap}" ] ; then + ewarn "Ignoring setting outside target/swap section: ${targetline}" + continue + fi + ;; + + dmcrypt_max_timeout=*) + # ignore global options + continue + ;; + + *) + ewarn "Skipping invalid line in ${conf_file}: ${targetline}" + ;; + esac + + # Queue this setting for the next call to dm_crypt_execute_xxx + eval "${targetline}" + done 3< ${conf_file} + + # If we have a target queued up, then execute it + ${execute_hook} + + ewend ${cryptfs_status} "Failed to setup dm-crypt devices" +} + +stop() { + local line header + + # Break down all mappings + header=true + egrep "^(target|swap)=" ${conf_file} | \ + while read line ; do + ${header} && einfo "Removing dm-crypt mappings" + header=false + + target= swap= + eval ${line} + + [ -n "${swap}" ] && target=${swap} + if [ -z "${target}" ] ; then + ewarn "invalid line in ${conf_file}: ${line}" + continue + fi + + ebegin " ${target}" + cryptsetup remove ${target} + eend $? + done + + # Break down loop devices + header=true + grep '^source=./dev/loop' ${conf_file} | \ + while read line ; do + ${header} && einfo "Detaching dm-crypt loop devices" + header=false + + source= + eval ${line} + + ebegin " ${source}" + losetup -d "${source}" + eend $? + done + + return 0 +} diff --git a/portage/package.keywords b/portage/package.keywords index a65fdbc3..87b055ef 100644 --- a/portage/package.keywords +++ b/portage/package.keywords @@ -46,6 +46,7 @@ app-emulation/virtualbox-modules dev-python/fbrehm-libs ~dev-python/iniparse-0.4 # ~dev-python/isodate-0.4.9 +~dev-python/pylint-0.27.0 ~dev-python/stevedore-0.8 ~dev-python/virtualenv-clone-0.2.4 ~dev-python/virtualenvwrapper-3.6 diff --git a/profile.env b/profile.env index c8610aa3..e4749bd3 100644 --- a/profile.env +++ b/profile.env @@ -36,7 +36,6 @@ export PATH='/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/usr/lib64/subversi export PRELINK_PATH_MASK='/usr/lib64/libfreebl3.so:/usr/lib64/libnssdbm3.so:/usr/lib64/libsoftokn3.so:/opt/bin/skype' export PYTHONDOCS_2_7='/usr/share/doc/python-docs-2.7.2/html/library' export PYTHONDOCS_3_2='/usr/share/doc/python-docs-3.2.2/html/library' -export PYTHONPATH='/usr/lib/portage/pym' export QT_GRAPHICSSYSTEM='raster' export QT_PLUGIN_PATH='/usr/lib64/kde4/plugins' export ROOTPATH='/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/usr/lib64/subversion/bin' diff --git a/qt4/.keep_dev-qt_qtcore-4 b/qt4/.keep_dev-qt_qtcore-4 new file mode 100644 index 00000000..e69de29b -- 2.39.5