Arch Linux "pacman-enhanced Tux" :)
Hey,
I just wanted to gimp a unique 'start'-button for my fbpanel.. so I inkscaped a 'pacman-enhanced' tux (get it? ) that I'm of course sharing with you folks:
Well.. maybe somebody else out there also likes him
Thanks for the nice feedback! Concerning the art svg upload.. Err.. I just tried.. :oops: so where exactly is art.archlinux.org's 'upload' function?
By the way, Inkscape seems to distinguish 'Inkscape SVG' from 'Plain SVG'. I did not compare the xml and am not yet that much into svg as I'd like to be.. Does someone know the difference? Is it that plain is preferable for web and inkscape formatted files are preferable for editing?
Similar Messages
-
Arch Linux Pacman Proxy Script
Since my Arch box has no internet connection (yes, I'm that much of a masochist), I wrote a bash script to act as a proxy of sorts for pacman, at least as regards downloading. It took a while to get it working (intermittent web access and all) but here it finally is, as promised.
It works well for me, and I only hope that it will help anyone else in the same situation (if there is anyone else in the same situation).
The script has various options to explain everything you need to know, but here's a quick word of warning: it only works on POSIX-compatible computers (i.e. no Wintendows, usually) and the proxy box needs to have bash, wget, tar, grep and sed installed. I don't see this as being a problem, but if I'm wrong, tell me all about it.
#!/bin/bash
readonly VER="2.1"
readonly wgetVER=`wget -V|sed '1!d'`
# DEBUG levels:
# Set to 0 for ALERT-level messages only
# Set to 1 for INFO-level messages (I prefer this)
# Set to 2 for DEBUG-level messages
# Set to 3 for all messages
readonly DEBUG=0
# Set DEBUGLOG=1 to print ALERT, INFO and DEBUG messages to DEBUG.log
readonly DEBUGLOG=0
readonly COLOUR=true
if [[ $COLOUR == true ]] ; then
readonly red='\e[31m'
readonly warn='\e[31;7m '
readonly green='\e[32m'
readonly lgreen='\e[32;1m'
readonly yellow='\e[33;1m'
readonly lblue='\e[34;1m'
readonly dull='\e[0m' ; fi
# Sticky details:
# tar seems very slow (vfat? transform? USB?)
function bugspray {
[[ -z $2 ]] && verbosity=1 || verbosity=$2
if (( DEBUG >= verbosity )) ; then
(( $2 == 0 )) && intro="${warn}ALERT${dull} | "
(( $2 == 1 )) && intro=" INFO | "
(( $2 > 1 )) && intro=" ${yellow}DEBUG${dull} | "
echo -e "$intro$1"
(( DEBUGLOG == 1 )) && echo "`date +%F_%T` | $1">>log-alpps/DEBUG.log ; fi ; }
function compare_versions {
# Requires two ordinary, untweaked version strings, first local, second distant
if [[ -z $2 ]] ; then
bugspray "compare_versions didn't receive two variables." 2 ; fi
update='no'
[[ -z $2 ]] && return
local localversion=(`echo $1|sed -r 's/([[:alpha:]]+)/ \1 /g;s/[\.:~_-]/ /g'`)
local distantversion=(`echo $2|sed -r 's/([[:alpha:]]+)/ \1 /g;s/[\.:~_-]/ /g'`)
local max=$((${#distantversion[*]}))
bugspray "localversion: ${localversion[*]}; distantversion: ${distantversion[*]}" 2
for (( x=0 ; (( x < $max )) ; $((x++)) )) ; do
bugspray "local version part: `echo ${localversion[$x]}` | distant version part: `echo ${distantversion[$x]}`" 2
if [[ `echo ${localversion[$x]}|grep -E '^[0-9]*$'` && `echo ${distantversion[$x]}|grep -E '^[0-9]*$'` ]] ; then
bugspray "Numerical comparison" 2
bugspray "localver (${localversion[$x]}) less than distantver (${distantversion[$x]}): $(( 10#${localversion[$x]} < 10#${distantversion[$x]} ))" 3
# Different compare methods for numbers, single letters and multiple letters.
if (( 10#${localversion[$x]} < 10#${distantversion[$x]} )) ; then
update='yes'
break ; fi ; fi
if [[ `echo ${localversion[$x]}|grep -E '^[[:alpha:]]$'` && `echo ${distantversion[$x]}|grep -E '^[[:alpha:]]$'` ]] ; then # single letter -> compare
bugspray "Lexicographical comparison" 2
bugspray "localver (${localversion[$x]}) less than distantver (${distantversion[$x]}): [[ ${localversion[$x]} < ${distantversion[$x]} ]]" 3
if [[ ${localversion[$x]} < ${distantversion[$x]} ]] ; then
update='yes'
break ; fi ; fi
if [[ `echo ${localversion[$x]}|grep -E '^[[:alpha:]]+$'` && `echo ${distantversion[$x]}|grep -E '^[[:alpha:]]+$'` ]] ; then # string -> drop
# cvs / git / beta -> what are the rules?
bugspray "Sequence of letters. Not treating as version number." 2 ; fi
done ; }
function find_dependencies {
# Determine existence via unique path
bugspray "+ ${lgreen}Building download list for package \"$1\"${dull}" 1
local packagename
local dlfile
local package_found=no
if [[ `ls .temp-alpps/*.db/$1-* 2>/dev/null` ]] ; then
bugspray "Analogous package-name file(s) found" 2
for x in `ls .temp-alpps/*.db/$1-*/desc` ; do
bugspray "Checking $x" 2
packagename=`sed -r '/%NAME%/,+1!d;/%NAME%/d' $x`
if [[ j$packagename == j$1 ]] ; then
bugspray "Exact match found: $packagename = $1" 2
dlfile=`sed '/%FILENAME%/,+1!d;/%FILENAME%/d' $x`
local distantversion=`sed '/%VERSION%/,+1!d;/%VERSION%/d' $x`
local package_full=$packagename-$distantversion
local the_repo=`echo $x|sed -r 's/.temp-alpps\/(.*)\.db.*/\1/'`
local the_path=`echo $x|sed -r 's/desc//'`
unplus=`echo $packagename|sed 's/\+/\\\+/g'`
local local_version=`sed -r '/^'$unplus' /!d;s/.* //' .temp-alpps/snapshot.state`
package_found=yes
break ; fi ; done ; fi
if [[ -z $dlfile ]] ; then
bugspray "Exact match not found -> looking for replacements." 2
if ! [[ -z `grep $1 .temp-alpps/*.db/*/depends` ]] ; then
local provisional=`grep $1 .temp-alpps/*.db/*/depends|sed -r 's/\/depends.*//'`
for package in $provisional ; do
local providence=`sed -r '/%PROVIDES%/,/^$/!d;/%PROVIDES%/d;/^$/d;s/>.*//;s/=.*//' $package/depends`
for y in $providence ; do
if [[ j$y == j$1 ]] ; then
# But what about when several packages provide the same thing and ALPPS picks the wrong one? Can it happen?
local newdep=`sed -r '/%NAME%/,+1!d;/%NAME%/d' $package/desc`
bugspray " -> Package \"$newdep\" provides \"$1\"." 1
find_dependencies $newdep
break 2 ; fi ; done ; done
if [[ -z $newdep ]] ; then
bugspray "${warn}Warning:${dull} package \"$1\" not found in database." 0 ; fi ; fi ; fi
bugspray "package: $1 | package_found = $package_found" 2
# Add file to download_list if not up to date and if not already present
if [[ j$package_found == jyes ]] ; then
local already_got_one=no
unplus=`echo $dlfile|sed 's/\+/\\\+/g'`
[[ `echo $download_files|grep $unplus` ]] && already_got_one="yes" && bugspray "${green}Package in queue${dull}" 1
[[ `ls downloads/$dlfile 2>/dev/null` ]] && already_got_one="yes" && bugspray "${green}Package proxied${dull}" 1
compare_versions $local_version $distantversion
bugspray "compare_versions says: $update" 2
! [[ -z $local_version || $update == yes ]] && already_got_one="yes" && bugspray "${green}Package already installed and up-to-date${dull}" 1
if [[ j$already_got_one != jyes ]] ; then
bugspray "${green}Confirm downloading${dull}" 1
download_files+="$dlfile "
download_array[${dlfile}]=$the_repo
bugspray "Checking for further dependencies" 2
if [[ -a $the_path/depends && `grep -E '^%DEPENDS%$' $the_path/depends` ]] ; then
local dependency=`sed -r '/%DEPENDS%/d;/^$/q' $the_path/depends`
bugspray "Dependencies of \"$packagename\":$dependency" 3
for x in $dependency ; do
# Is this dependency already installed? Sort-of the same as higher up; it just saves time here.
local depname=`echo $x|sed -r 's/>.*//;s/=.*//'`
local depminver=`echo $x|sed -r 's/.*>//'`
bugspray "Dependency name: \"$depname\"" 2
if ! [[ `grep -E '^$depname ' .temp-alpps/snapshot.state` ]] ; then
find_dependencies $depname ; fi ; done
else
bugspray "${lblue}End of the line${dull}: package \"$packagename\" has no dependencies." 2
true ; fi ; fi ; fi ; }
function failover_fetch {
echo "Downloading `echo $1|sed 's/.*\///'`"
[[ -d log-alpps/ ]] || mkdir log-alpps/
[[ -z $success ]] || unset success
for mirror in $(<.temp-alpps/snapshot.mirrorlist) ; do
# If DEBUG>0, shouldn't redirect output
url=`echo $mirror|sed 's/$arch/'$arch'/;s/$repo/'${download_array[$1]}'/'`/$1
bugspray "Connecting to $url" 2
wget -o .temp-alpps/very-temp-log -U "Arch Linux Pacman Proxy Script version $VER / $wgetVER" -P downloads/ $url && success=true
cat .temp-alpps/very-temp-log>>log-alpps/download.log
rm -f .temp-alpps/very-temp-log
if [[ -n $success ]] ; then
bugspray "Download: \$success = true" 2
break ; fi ; done
if [[ -z $success ]] ; then
bugspray "${warn}FAIL:${dull} $1 not accessible on known mirrors." 0 ; fi ; }
case $1 in
warranty)
echo
echo -e " ${green}Warranty${dull}"
echo -e " ${green}========${dull}"
echo " This program is free software. It comes without any warranty, to"
echo " the extent permitted by applicable law. You can redistribute it"
echo " and/or modify it under the terms of the Do What The Fuck You Want"
echo " To Public License, Version 2, as published by Sam Hocevar. See"
echo " http://sam.zoy.org/wtfpl/COPYING for more details."
echo
howto)
echo
echo -e " ${green}How to use ALPPS${dull}"
echo -e " ${green}================${dull}"
echo -e " ${yellow}+ Step 0${dull}: prime the engine"
echo " On your offline box, copy the ALPPS script onto a removable medium, cd into"
echo " it's directory, then run it with the \"init\" option. This essentially"
echo " takes a snapshot of your system, package-wise. Your removable medium is"
echo " now ready for use!"
echo -e " ${yellow}+ Step 1${dull}:"
echo " On the proxy box the first order of business is to download and decompress"
echo " the current package lists. You can do this with the \"fetchdb\" option."
echo -e " ${yellow}+ Step 1 alt${dull}:"
echo " If you want to download the package lists without decompressing them,"
echo " \"fetchdb simple\" will do this. It's a lot quicker, but please keep"
echo " in mind that you cannot then do anything in step 2."
echo -e " ${yellow}+ Step 2${dull}:"
echo " If you want to download packages (and why wouldn't you?), the easiest way"
echo " is to prepare a simple text file containing the names of the packages you"
echo " want, one on each line. Run ALPPS with the option \"fetch <filename>\" and"
echo " sit back and wait until it's done. Don't worry about dependencies: ALPPS"
echo " handles them automatically."
echo -e " ${yellow}+ Step 2 alt${dull}:"
echo " As a convenience, \"fetch full\" will download all the packages needed to"
echo " update the offline box."
echo -e " ${yellow}+ Step 3${dull}:"
echo " Finally, back on your offline box, run ALPPS again with the \"install\""
echo " option. This will update the package list and copy the package files into"
echo " local cache. You can now run \"pacman -S <package names>\" to finish"
echo " installing the packages."
# ALPPS no longer installs the packages, just caches them locally.
# Not entirely sure why; it just felt too klutzy.
echo -e " ${yellow}+ Step 4${dull}:"
echo " You will now probably want to delete all the stuff you no longer need. Run"
echo " ALPPS with the option \"clean\". This won't touch your request file(s). It"
echo -e " ${red}WILL${dull} delete log files, so if you want to keep them, back them up first."
echo " Next time you do this, don't forget to run ALPPS with \"init\" again."
echo
bugs)
echo
echo -e " ${green}Where this goes wrong${dull}"
echo -e " ${green}=====================${dull}"
echo " + ALPPS is a bit slow when packages have many dependencies. It's a recursive"
echo " shell script: what did you expect?"
echo " + It only uses the settings in /etc/pacman.conf. If your conf file is"
echo " elsewhere, you're SOL. Similarly, the repositories are all taken from"
echo " /etc/pacman.d/mirrorlist. If you added any custom repositories in"
echo " /etc/pacman.conf (or any other file), ALPPS ignores them."
echo " + As it stands, ALPPS only works when the proxy box has bash, wget, sed,"
echo " grep and tar installed. The offline box needs bash, pacman and sed (in"
echo " theory, this shouldn't be a problem...)."
echo " + There is as yet no way of handling package groups, short of listing every"
echo " member of the group."
echo " + I don't think ALPPS will ever be able to handle AUR packages. Of course, if"
echo " you're compiling AUR packages, you probably won't need something like this!"
echo
faq)
echo
echo -e " ${green}Frequently Asked Questions${dull}"
echo -e " ${green}==========================${dull}"
echo
echo -e " ${red}Q:${dull} Can I run the whole thing off a USB stick?"
echo -e " ${lblue}A:${dull} Certainly."
echo
echo -e " ${red}Q:${dull} Can I use a non-POSIX computer as a proxy (e.g. Windows)?"
echo -e " ${lblue}A:${dull} Probably not, unless that computer has a POSIX-compatibility layer"
echo " installed (such as Cygwin) with bash, wget, tar, sed and grep."
echo
echo -e " ${red}Q:${dull} Do I need to download the package list, waste time updating my computer,"
echo " then go back again to download the packages I want?"
echo -e " ${lblue}A:${dull} Nope! You can update the packagelist database and download piping-hot"
echo " fresh packages, all in one sitting."
echo -e " ${red}Q:${dull} You mean I won't have to futz around with package lists that keep updating"
echo " ten minutes after I download them?"
echo -e " ${lblue}A:${dull} Exactly. Nice, isn't it?"
echo
echo -e " ${red}Q:${dull} Does this thing handle SSL and signed packages?"
echo -e " ${lblue}A:${dull} ALPPS uses SSL if:"
echo " - the mirror has an https address (at present, none do), and"
echo " - wget on the proxy box is compiled with SSL support"
echo " Concerning signed packages: no, but then again, it doesn't need to. ALPPS"
echo " downloads packages; it's pacman's responsibility to verify them. Your"
echo " system remains safe (or as safe as it ever was, at any rate)."
echo -e " ${red}Q:${dull} What about gpg keys? I need to get them."
echo -e " ${lblue}A:${dull} ...maybe later, say, in version 3."
echo
echo -e " ${red}Q:${dull} ALPPS says it \`prepares databases´. Can pacman still use them after this?"
echo -e " ${lblue}A:${dull} Yes, it can. In fact, what ALPPS does is extract the databases into a"
echo " temp directory, without altering the original .db files."
echo
echo -e " ${red}Q:${dull} Where can I contact you?"
echo -e " ${lblue}A:${dull} For constructive, useful questions and comments: [email protected] and"
echo " be sure to mention Arch Linux in the subject."
echo " For flames, trolling, spam and the like, visit your local bitbucket."
echo
todo)
echo
echo -e " ${green}What's next?${dull}"
echo -e " ${green}============${dull}"
echo -e " + I ${red}might${dull} be able to extend the reach of this thing to the AUR."
echo " Yes, I know I said ALPPS couldn't (in \"bugs\"), but I've learned"
echo " something new since then. It'll be tricky, though, since the AUR web"
echo " interface delivers results in python. While this should be a Good Thing,"
echo " bash isn't very good at handling python-format lists and dicts."
echo
-v|ver|version|--ver|--version)
echo -e "${lgreen}Arch Linux pacman proxy script${dull} | ${yellow}version $VER${dull}"
dl_list) # Debugging
(( DEBUG == 0 )) && echo "the \"dl_list\" option is only for debugging" && exit 0
arch=$(<.temp-alpps/snapshot.architecture)
unset download_files
unset download_array
declare -A download_array
find_dependencies $2
bugspray "Download list: $download_files" 3
echo "Download list v2:"
for x in $download_files ; do
bugspray " File \"$x\" from repo \"${download_array[$x]}\"" 3
echo " Full URL: http://mirror.archlinux.org/${download_array[$x]}/os/$arch/$x" ; done
verint) # Debugging
(( DEBUG == 0 )) && echo "the \"verint\" option is only for debugging" && exit 0
for x in `ls .temp-alpps/*/$2-*/desc` ; do
packagename=`sed -r '/%NAME%/,+1!d;/%NAME%/d' $x`
if [[ j$packagename == j$2 ]] ; then
bugspray "Unique package-name file found: $packagename=$2" 2
distantversion=`sed '/%VERSION%/,+1!d;/%VERSION%/d' $x`
dlfile=`sed '/%FILENAME%/,+1!d;/%FILENAME%/d' $x`
package_full=$packagename-$distantversion
the_repo=`echo $x|sed -r 's/.temp-alpps\/(.*)\.db.*/\1/'`
the_path=`echo $x|sed -r 's/desc//'`
local_version=`sed -r '/^'$packagename' /!d;s/.* //' .temp-alpps/snapshot.state`
break ; fi ; done
echo "full package filename: $dlfile"
echo "Comparing local ($local_version) and distant ($distantversion) versions of $2..."
compare_versions $local_version $distantversion
#compare_versions 2.5beta3-2 2.5cvs4-1
echo "...and the verdict is: $update"
init)
x=`uname -m`
if [[ -x /usr/bin/pacman ]] ; then
[[ -d .temp-alpps ]] || mkdir .temp-alpps/
pacman -Q>.temp-alpps/snapshot.state
sed -r '/^Se/!d;s/Server = //' /etc/pacman.d/mirrorlist>.temp-alpps/snapshot.mirrorlist
sed -r '/^\[/!d;/options/d;s/\[(.*)\]/\1/' /etc/pacman.conf>.temp-alpps/snapshot.repositories
sed -r '/^Architecture/!d;s/^.*= //' /etc/pacman.conf>.temp-alpps/snapshot.architecture
[[ ! -s .temp-alpps/snapshot.architecture || auto == $(<.temp-alpps/snapshot.architecture) ]] && $x>.temp-alpps/snapshot.architecture
sed -r '/^SyncFirst/!d;s/.*= //;s/ /\n/g' /etc/pacman.conf>.temp-alpps/snapshot.prioritypackages
echo "Current state recorded."
else
echo "You seem to be running ALPPs on an unsupported system."
echo "ALPPS is the ${lgreen}Arch Linux Pacman Proxy Script${dull} and simply"
echo "won't run properly on a non-pacman OS (except when proxying)."
echo "Aborting. Sorry."
exit 1 ; fi
fetchdb)
[[ -d downloads ]] || mkdir downloads
arch=$(<.temp-alpps/snapshot.architecture)
declare -A download_array
for repo in $(<.temp-alpps/snapshot.repositories) ; do
download_array[${repo}.db]=$repo
location="${repo}.db"
failover_fetch $location ; done
if [[ j$2 != jsimple ]] ; then
[[ -d log-alpps ]] || mkdir log-alpps
[[ -a syncfirst ]] && rm -f syncfirst
echo "Preparing databases for local processing. This might take a while."
for x in $(<.temp-alpps/snapshot.repositories) ; do
echo "Preparing $x.db"
if [[ -a downloads/$x.db ]] ; then
[[ -d .temp-alpps/$x.db ]] || mkdir .temp-alpps/$x.db/
tar -xzC .temp-alpps/$x.db/ -f downloads/$x.db --transform 's/:/§/' --no-same-owner && echo "$x database ready for use."
else
echo -e "Database $x.db is missing. Skipping. This will probably cause problems." ; fi ; done
# SyncFirst package warning
[[ -z $download_list ]] || unset download_list
[[ -a syncfirst ]] && rm -f syncfirst
for x in $(<.temp-alpps/snapshot.prioritypackages) ; do
find_dependencies $x ; done
bugspray "download_files: $download_files" 2
if [[ ! -z $download_files ]] ; then
echo "New version(s) of SyncFirst package(s):"
for x in $(<.temp-alpps/snapshot.prioritypackages) ; do
[[ ! -z `echo $download_files|grep $x` ]] && echo "- $x" && echo $x>>syncfirst ; done
echo "Package names placed in 'syncfirst'. Don't forget to download them!" ; fi ; fi
fetch)
for x in $(<.temp-alpps/snapshot.repositories) ; do
if ! [[ -d .temp-alpps/$x.db/ ]] ; then
bugspray "You must first download a fresh database with the \"fetchdb\" option" 0
exit 1 ; fi ; done
arch=$(<.temp-alpps/snapshot.architecture)
unset download_array
declare -A download_array
unset download_files
if [[ $2 == full ]] ; then
echo " Building full upgrade list. This will almost certainly take a while."
echo " Please wait..."
for y in `sed -r 's/^(.*) .*/\1/' .temp-alpps/snapshot.state` ; do
bugspray "Examining $y" 1
find_dependencies $y ; done
elif [[ -a $2 ]] ; then
echo " Determining dependencies. This might take a while. Please wait."
for y in $(<$2) ; do
bugspray "Examining $y" 1
find_dependencies $y ; done
else
echo " Error: you should provide a list-file or the keyword \"full\"."
echo " (see 'alpps.sh howto', step 2)"
exit 1 ; fi
if [[ -z $download_files ]] ; then
echo " No files to download: either none found, or all found are up to date."
else
[[ -d downloads ]] || mkdir downloads
for x in $download_files ; do
failover_fetch $x ; done ; fi
install)
dbpath=`sed -r '/^DBPath/!d;s/^.*= //' /etc/pacman.conf`
[[ -z $dbpath ]] && dbpath="/var/lib/pacman/"
bugspray "dbpath: $dbpath" 2
echo " Updating databases"
cp -ft ${dbpath}sync/ downloads/*.db
cachedir=`sed -r '/^CacheDir/!d;s/^.*= //' /etc/pacman.conf`
[[ -z $cachedir ]] && cachedir="/var/cache/pacman/pkg/"
echo " Caching packages"
cp -f downloads/*.pkg.tar.xz $cachedir
echo
echo " Don't forget to install/update your packages."
echo " Exercise proper caution."
echo " Have fun!"
clean)
echo "Cleaning up. This might take a while."
rm -fr .temp-alpps/ && echo "Buffer directory deleted" || echo "Problem deleting buffer directory '.temp-alpps/'"
rm -fr log-alpps/ && echo "Log directory deleted" || echo "Problem deleting 'log-alpps/'"
rm -fr downloads/ && echo "Downloaded packages deleted" || echo "Problem deleting 'downloads/'"
echo
echo -e " ${lgreen}Arch Linux pacman proxy script${dull}"
echo
echo -e " ${green}Description${dull}"
echo -e " ${green}===========${dull}"
echo -e " This is a bash script to fetch and install packages for an offline Arch box"
echo " using another, online box as a proxy of sorts. So far, this only works if"
echo " the proxy box has bash, wget, tar, sed and grep installed."
echo " It's probably also entirely unsafe, incompatible and will destroy your box"
echo " in a fiery blaze if you try to use it (you know the drill)."
echo
echo -e " ${green}Options${dull}"
echo -e " ${green}=======${dull}"
echo " init Step 0 (as it were): take a snapshot of your system"
echo " fetchdb Step 1: download the packagelist database"
echo " fetch <file> Step 2: download requested packages"
echo " install Step 3: update your system"
echo " clean Step 4: delete any unneeded files"
echo
echo " howto More detailed instructions"
echo " bugs Problems and future plans"
echo " faq As it says"
echo " warranty (in case it ever becomes necessary)"
echo " version (to be honest, I wasn't expecting to go beyond v1-rc or so)"
echo " help You're reading it, doofus :^)"
echo
# dl_list Test the find_dependencies function"
# verint Test the compare_versions function"
esacAnimaInvicta wrote:
Since my Arch box has no internet connection (yes, I'm that much of a masochist), I wrote a bash script to act as a proxy of sorts for pacman, at least as regards downloading. It took a while to get it working (intermittent web access and all) but here it finally is, as promised.
It works well for me, and I only hope that it will help anyone else in the same situation (if there is anyone else in the same situation).
The script has various options to explain everything you need to know, but here's a quick word of warning: it only works on POSIX-compatible computers (i.e. no Wintendows, usually) and the proxy box needs to have bash, wget, tar, grep and sed installed. I don't see this as being a problem, but if I'm wrong, tell me all about it.
#!/bin/bash
readonly VER="2.1"
readonly wgetVER=`wget -V|sed '1!d'`
# DEBUG levels:
# Set to 0 for ALERT-level messages only
# Set to 1 for INFO-level messages (I prefer this)
# Set to 2 for DEBUG-level messages
# Set to 3 for all messages
readonly DEBUG=0
# Set DEBUGLOG=1 to print ALERT, INFO and DEBUG messages to DEBUG.log
readonly DEBUGLOG=0
readonly COLOUR=true
if [[ $COLOUR == true ]] ; then
readonly red='\e[31m'
readonly warn='\e[31;7m '
readonly green='\e[32m'
readonly lgreen='\e[32;1m'
readonly yellow='\e[33;1m'
readonly lblue='\e[34;1m'
readonly dull='\e[0m' ; fi
# Sticky details:
# tar seems very slow (vfat? transform? USB?)
function bugspray {
[[ -z $2 ]] && verbosity=1 || verbosity=$2
if (( DEBUG >= verbosity )) ; then
(( $2 == 0 )) && intro="${warn}ALERT${dull} | "
(( $2 == 1 )) && intro=" INFO | "
(( $2 > 1 )) && intro=" ${yellow}DEBUG${dull} | "
echo -e "$intro$1"
(( DEBUGLOG == 1 )) && echo "`date +%F_%T` | $1">>log-alpps/DEBUG.log ; fi ; }
function compare_versions {
# Requires two ordinary, untweaked version strings, first local, second distant
if [[ -z $2 ]] ; then
bugspray "compare_versions didn't receive two variables." 2 ; fi
update='no'
[[ -z $2 ]] && return
local localversion=(`echo $1|sed -r 's/([[:alpha:]]+)/ \1 /g;s/[\.:~_-]/ /g'`)
local distantversion=(`echo $2|sed -r 's/([[:alpha:]]+)/ \1 /g;s/[\.:~_-]/ /g'`)
local max=$((${#distantversion[*]}))
bugspray "localversion: ${localversion[*]}; distantversion: ${distantversion[*]}" 2
for (( x=0 ; (( x < $max )) ; $((x++)) )) ; do
bugspray "local version part: `echo ${localversion[$x]}` | distant version part: `echo ${distantversion[$x]}`" 2
if [[ `echo ${localversion[$x]}|grep -E '^[0-9]*$'` && `echo ${distantversion[$x]}|grep -E '^[0-9]*$'` ]] ; then
bugspray "Numerical comparison" 2
bugspray "localver (${localversion[$x]}) less than distantver (${distantversion[$x]}): $(( 10#${localversion[$x]} < 10#${distantversion[$x]} ))" 3
# Different compare methods for numbers, single letters and multiple letters.
if (( 10#${localversion[$x]} < 10#${distantversion[$x]} )) ; then
update='yes'
break ; fi ; fi
if [[ `echo ${localversion[$x]}|grep -E '^[[:alpha:]]$'` && `echo ${distantversion[$x]}|grep -E '^[[:alpha:]]$'` ]] ; then # single letter -> compare
bugspray "Lexicographical comparison" 2
bugspray "localver (${localversion[$x]}) less than distantver (${distantversion[$x]}): [[ ${localversion[$x]} < ${distantversion[$x]} ]]" 3
if [[ ${localversion[$x]} < ${distantversion[$x]} ]] ; then
update='yes'
break ; fi ; fi
if [[ `echo ${localversion[$x]}|grep -E '^[[:alpha:]]+$'` && `echo ${distantversion[$x]}|grep -E '^[[:alpha:]]+$'` ]] ; then # string -> drop
# cvs / git / beta -> what are the rules?
bugspray "Sequence of letters. Not treating as version number." 2 ; fi
done ; }
function find_dependencies {
# Determine existence via unique path
bugspray "+ ${lgreen}Building download list for package \"$1\"${dull}" 1
local packagename
local dlfile
local package_found=no
if [[ `ls .temp-alpps/*.db/$1-* 2>/dev/null` ]] ; then
bugspray "Analogous package-name file(s) found" 2
for x in `ls .temp-alpps/*.db/$1-*/desc` ; do
bugspray "Checking $x" 2
packagename=`sed -r '/%NAME%/,+1!d;/%NAME%/d' $x`
if [[ j$packagename == j$1 ]] ; then
bugspray "Exact match found: $packagename = $1" 2
dlfile=`sed '/%FILENAME%/,+1!d;/%FILENAME%/d' $x`
local distantversion=`sed '/%VERSION%/,+1!d;/%VERSION%/d' $x`
local package_full=$packagename-$distantversion
local the_repo=`echo $x|sed -r 's/.temp-alpps\/(.*)\.db.*/\1/'`
local the_path=`echo $x|sed -r 's/desc//'`
unplus=`echo $packagename|sed 's/\+/\\\+/g'`
local local_version=`sed -r '/^'$unplus' /!d;s/.* //' .temp-alpps/snapshot.state`
package_found=yes
break ; fi ; done ; fi
if [[ -z $dlfile ]] ; then
bugspray "Exact match not found -> looking for replacements." 2
if ! [[ -z `grep $1 .temp-alpps/*.db/*/depends` ]] ; then
local provisional=`grep $1 .temp-alpps/*.db/*/depends|sed -r 's/\/depends.*//'`
for package in $provisional ; do
local providence=`sed -r '/%PROVIDES%/,/^$/!d;/%PROVIDES%/d;/^$/d;s/>.*//;s/=.*//' $package/depends`
for y in $providence ; do
if [[ j$y == j$1 ]] ; then
# But what about when several packages provide the same thing and ALPPS picks the wrong one? Can it happen?
local newdep=`sed -r '/%NAME%/,+1!d;/%NAME%/d' $package/desc`
bugspray " -> Package \"$newdep\" provides \"$1\"." 1
find_dependencies $newdep
break 2 ; fi ; done ; done
if [[ -z $newdep ]] ; then
bugspray "${warn}Warning:${dull} package \"$1\" not found in database." 0 ; fi ; fi ; fi
bugspray "package: $1 | package_found = $package_found" 2
# Add file to download_list if not up to date and if not already present
if [[ j$package_found == jyes ]] ; then
local already_got_one=no
unplus=`echo $dlfile|sed 's/\+/\\\+/g'`
[[ `echo $download_files|grep $unplus` ]] && already_got_one="yes" && bugspray "${green}Package in queue${dull}" 1
[[ `ls downloads/$dlfile 2>/dev/null` ]] && already_got_one="yes" && bugspray "${green}Package proxied${dull}" 1
compare_versions $local_version $distantversion
bugspray "compare_versions says: $update" 2
! [[ -z $local_version || $update == yes ]] && already_got_one="yes" && bugspray "${green}Package already installed and up-to-date${dull}" 1
if [[ j$already_got_one != jyes ]] ; then
bugspray "${green}Confirm downloading${dull}" 1
download_files+="$dlfile "
download_array[${dlfile}]=$the_repo
bugspray "Checking for further dependencies" 2
if [[ -a $the_path/depends && `grep -E '^%DEPENDS%$' $the_path/depends` ]] ; then
local dependency=`sed -r '/%DEPENDS%/d;/^$/q' $the_path/depends`
bugspray "Dependencies of \"$packagename\":$dependency" 3
for x in $dependency ; do
# Is this dependency already installed? Sort-of the same as higher up; it just saves time here.
local depname=`echo $x|sed -r 's/>.*//;s/=.*//'`
local depminver=`echo $x|sed -r 's/.*>//'`
bugspray "Dependency name: \"$depname\"" 2
if ! [[ `grep -E '^$depname ' .temp-alpps/snapshot.state` ]] ; then
find_dependencies $depname ; fi ; done
else
bugspray "${lblue}End of the line${dull}: package \"$packagename\" has no dependencies." 2
true ; fi ; fi ; fi ; }
function failover_fetch {
echo "Downloading `echo $1|sed 's/.*\///'`"
[[ -d log-alpps/ ]] || mkdir log-alpps/
[[ -z $success ]] || unset success
for mirror in $(<.temp-alpps/snapshot.mirrorlist) ; do
# If DEBUG>0, shouldn't redirect output
url=`echo $mirror|sed 's/$arch/'$arch'/;s/$repo/'${download_array[$1]}'/'`/$1
bugspray "Connecting to $url" 2
wget -o .temp-alpps/very-temp-log -U "Arch Linux Pacman Proxy Script version $VER / $wgetVER" -P downloads/ $url && success=true
cat .temp-alpps/very-temp-log>>log-alpps/download.log
rm -f .temp-alpps/very-temp-log
if [[ -n $success ]] ; then
bugspray "Download: \$success = true" 2
break ; fi ; done
if [[ -z $success ]] ; then
bugspray "${warn}FAIL:${dull} $1 not accessible on known mirrors." 0 ; fi ; }
case $1 in
warranty)
echo
echo -e " ${green}Warranty${dull}"
echo -e " ${green}========${dull}"
echo " This program is free software. It comes without any warranty, to"
echo " the extent permitted by applicable law. You can redistribute it"
echo " and/or modify it under the terms of the Do What The Fuck You Want"
echo " To Public License, Version 2, as published by Sam Hocevar. See"
echo " http://sam.zoy.org/wtfpl/COPYING for more details."
echo
howto)
echo
echo -e " ${green}How to use ALPPS${dull}"
echo -e " ${green}================${dull}"
echo -e " ${yellow}+ Step 0${dull}: prime the engine"
echo " On your offline box, copy the ALPPS script onto a removable medium, cd into"
echo " it's directory, then run it with the \"init\" option. This essentially"
echo " takes a snapshot of your system, package-wise. Your removable medium is"
echo " now ready for use!"
echo -e " ${yellow}+ Step 1${dull}:"
echo " On the proxy box the first order of business is to download and decompress"
echo " the current package lists. You can do this with the \"fetchdb\" option."
echo -e " ${yellow}+ Step 1 alt${dull}:"
echo " If you want to download the package lists without decompressing them,"
echo " \"fetchdb simple\" will do this. It's a lot quicker, but please keep"
echo " in mind that you cannot then do anything in step 2."
echo -e " ${yellow}+ Step 2${dull}:"
echo " If you want to download packages (and why wouldn't you?), the easiest way"
echo " is to prepare a simple text file containing the names of the packages you"
echo " want, one on each line. Run ALPPS with the option \"fetch <filename>\" and"
echo " sit back and wait until it's done. Don't worry about dependencies: ALPPS"
echo " handles them automatically."
echo -e " ${yellow}+ Step 2 alt${dull}:"
echo " As a convenience, \"fetch full\" will download all the packages needed to"
echo " update the offline box."
echo -e " ${yellow}+ Step 3${dull}:"
echo " Finally, back on your offline box, run ALPPS again with the \"install\""
echo " option. This will update the package list and copy the package files into"
echo " local cache. You can now run \"pacman -S <package names>\" to finish"
echo " installing the packages."
# ALPPS no longer installs the packages, just caches them locally.
# Not entirely sure why; it just felt too klutzy.
echo -e " ${yellow}+ Step 4${dull}:"
echo " You will now probably want to delete all the stuff you no longer need. Run"
echo " ALPPS with the option \"clean\". This won't touch your request file(s). It"
echo -e " ${red}WILL${dull} delete log files, so if you want to keep them, back them up first."
echo " Next time you do this, don't forget to run ALPPS with \"init\" again."
echo
bugs)
echo
echo -e " ${green}Where this goes wrong${dull}"
echo -e " ${green}=====================${dull}"
echo " + ALPPS is a bit slow when packages have many dependencies. It's a recursive"
echo " shell script: what did you expect?"
echo " + It only uses the settings in /etc/pacman.conf. If your conf file is"
echo " elsewhere, you're SOL. Similarly, the repositories are all taken from"
echo " /etc/pacman.d/mirrorlist. If you added any custom repositories in"
echo " /etc/pacman.conf (or any other file), ALPPS ignores them."
echo " + As it stands, ALPPS only works when the proxy box has bash, wget, sed,"
echo " grep and tar installed. The offline box needs bash, pacman and sed (in"
echo " theory, this shouldn't be a problem...)."
echo " + There is as yet no way of handling package groups, short of listing every"
echo " member of the group."
echo " + I don't think ALPPS will ever be able to handle AUR packages. Of course, if"
echo " you're compiling AUR packages, you probably won't need something like this!"
echo
faq)
echo
echo -e " ${green}Frequently Asked Questions${dull}"
echo -e " ${green}==========================${dull}"
echo
echo -e " ${red}Q:${dull} Can I run the whole thing off a USB stick?"
echo -e " ${lblue}A:${dull} Certainly."
echo
echo -e " ${red}Q:${dull} Can I use a non-POSIX computer as a proxy (e.g. Windows)?"
echo -e " ${lblue}A:${dull} Probably not, unless that computer has a POSIX-compatibility layer"
echo " installed (such as Cygwin) with bash, wget, tar, sed and grep."
echo
echo -e " ${red}Q:${dull} Do I need to download the package list, waste time updating my computer,"
echo " then go back again to download the packages I want?"
echo -e " ${lblue}A:${dull} Nope! You can update the packagelist database and download piping-hot"
echo " fresh packages, all in one sitting."
echo -e " ${red}Q:${dull} You mean I won't have to futz around with package lists that keep updating"
echo " ten minutes after I download them?"
echo -e " ${lblue}A:${dull} Exactly. Nice, isn't it?"
echo
echo -e " ${red}Q:${dull} Does this thing handle SSL and signed packages?"
echo -e " ${lblue}A:${dull} ALPPS uses SSL if:"
echo " - the mirror has an https address (at present, none do), and"
echo " - wget on the proxy box is compiled with SSL support"
echo " Concerning signed packages: no, but then again, it doesn't need to. ALPPS"
echo " downloads packages; it's pacman's responsibility to verify them. Your"
echo " system remains safe (or as safe as it ever was, at any rate)."
echo -e " ${red}Q:${dull} What about gpg keys? I need to get them."
echo -e " ${lblue}A:${dull} ...maybe later, say, in version 3."
echo
echo -e " ${red}Q:${dull} ALPPS says it \`prepares databases´. Can pacman still use them after this?"
echo -e " ${lblue}A:${dull} Yes, it can. In fact, what ALPPS does is extract the databases into a"
echo " temp directory, without altering the original .db files."
echo
echo -e " ${red}Q:${dull} Where can I contact you?"
echo -e " ${lblue}A:${dull} For constructive, useful questions and comments: [email protected] and"
echo " be sure to mention Arch Linux in the subject."
echo " For flames, trolling, spam and the like, visit your local bitbucket."
echo
todo)
echo
echo -e " ${green}What's next?${dull}"
echo -e " ${green}============${dull}"
echo -e " + I ${red}might${dull} be able to extend the reach of this thing to the AUR."
echo " Yes, I know I said ALPPS couldn't (in \"bugs\"), but I've learned"
echo " something new since then. It'll be tricky, though, since the AUR web"
echo " interface delivers results in python. While this should be a Good Thing,"
echo " bash isn't very good at handling python-format lists and dicts."
echo
-v|ver|version|--ver|--version)
echo -e "${lgreen}Arch Linux pacman proxy script${dull} | ${yellow}version $VER${dull}"
dl_list) # Debugging
(( DEBUG == 0 )) && echo "the \"dl_list\" option is only for debugging" && exit 0
arch=$(<.temp-alpps/snapshot.architecture)
unset download_files
unset download_array
declare -A download_array
find_dependencies $2
bugspray "Download list: $download_files" 3
echo "Download list v2:"
for x in $download_files ; do
bugspray " File \"$x\" from repo \"${download_array[$x]}\"" 3
echo " Full URL: http://mirror.archlinux.org/${download_array[$x]}/os/$arch/$x" ; done
verint) # Debugging
(( DEBUG == 0 )) && echo "the \"verint\" option is only for debugging" && exit 0
for x in `ls .temp-alpps/*/$2-*/desc` ; do
packagename=`sed -r '/%NAME%/,+1!d;/%NAME%/d' $x`
if [[ j$packagename == j$2 ]] ; then
bugspray "Unique package-name file found: $packagename=$2" 2
distantversion=`sed '/%VERSION%/,+1!d;/%VERSION%/d' $x`
dlfile=`sed '/%FILENAME%/,+1!d;/%FILENAME%/d' $x`
package_full=$packagename-$distantversion
the_repo=`echo $x|sed -r 's/.temp-alpps\/(.*)\.db.*/\1/'`
the_path=`echo $x|sed -r 's/desc//'`
local_version=`sed -r '/^'$packagename' /!d;s/.* //' .temp-alpps/snapshot.state`
break ; fi ; done
echo "full package filename: $dlfile"
echo "Comparing local ($local_version) and distant ($distantversion) versions of $2..."
compare_versions $local_version $distantversion
#compare_versions 2.5beta3-2 2.5cvs4-1
echo "...and the verdict is: $update"
init)
x=`uname -m`
if [[ -x /usr/bin/pacman ]] ; then
[[ -d .temp-alpps ]] || mkdir .temp-alpps/
pacman -Q>.temp-alpps/snapshot.state
sed -r '/^Se/!d;s/Server = //' /etc/pacman.d/mirrorlist>.temp-alpps/snapshot.mirrorlist
sed -r '/^\[/!d;/options/d;s/\[(.*)\]/\1/' /etc/pacman.conf>.temp-alpps/snapshot.repositories
sed -r '/^Architecture/!d;s/^.*= //' /etc/pacman.conf>.temp-alpps/snapshot.architecture
[[ ! -s .temp-alpps/snapshot.architecture || auto == $(<.temp-alpps/snapshot.architecture) ]] && $x>.temp-alpps/snapshot.architecture
sed -r '/^SyncFirst/!d;s/.*= //;s/ /\n/g' /etc/pacman.conf>.temp-alpps/snapshot.prioritypackages
echo "Current state recorded."
else
echo "You seem to be running ALPPs on an unsupported system."
echo "ALPPS is the ${lgreen}Arch Linux Pacman Proxy Script${dull} and simply"
echo "won't run properly on a non-pacman OS (except when proxying)."
echo "Aborting. Sorry."
exit 1 ; fi
fetchdb)
[[ -d downloads ]] || mkdir downloads
arch=$(<.temp-alpps/snapshot.architecture)
declare -A download_array
for repo in $(<.temp-alpps/snapshot.repositories) ; do
download_array[${repo}.db]=$repo
location="${repo}.db"
failover_fetch $location ; done
if [[ j$2 != jsimple ]] ; then
[[ -d log-alpps ]] || mkdir log-alpps
[[ -a syncfirst ]] && rm -f syncfirst
echo "Preparing databases for local processing. This might take a while."
for x in $(<.temp-alpps/snapshot.repositories) ; do
echo "Preparing $x.db"
if [[ -a downloads/$x.db ]] ; then
[[ -d .temp-alpps/$x.db ]] || mkdir .temp-alpps/$x.db/
tar -xzC .temp-alpps/$x.db/ -f downloads/$x.db --transform 's/:/§/' --no-same-owner && echo "$x database ready for use."
else
echo -e "Database $x.db is missing. Skipping. This will probably cause problems." ; fi ; done
# SyncFirst package warning
[[ -z $download_list ]] || unset download_list
[[ -a syncfirst ]] && rm -f syncfirst
for x in $(<.temp-alpps/snapshot.prioritypackages) ; do
find_dependencies $x ; done
bugspray "download_files: $download_files" 2
if [[ ! -z $download_files ]] ; then
echo "New version(s) of SyncFirst package(s):"
for x in $(<.temp-alpps/snapshot.prioritypackages) ; do
[[ ! -z `echo $download_files|grep $x` ]] && echo "- $x" && echo $x>>syncfirst ; done
echo "Package names placed in 'syncfirst'. Don't forget to download them!" ; fi ; fi
fetch)
for x in $(<.temp-alpps/snapshot.repositories) ; do
if ! [[ -d .temp-alpps/$x.db/ ]] ; then
bugspray "You must first download a fresh database with the \"fetchdb\" option" 0
exit 1 ; fi ; done
arch=$(<.temp-alpps/snapshot.architecture)
unset download_array
declare -A download_array
unset download_files
if [[ $2 == full ]] ; then
echo " Building full upgrade list. This will almost certainly take a while."
echo " Please wait..."
for y in `sed -r 's/^(.*) .*/\1/' .temp-alpps/snapshot.state` ; do
bugspray "Examining $y" 1
find_dependencies $y ; done
elif [[ -a $2 ]] ; then
echo " Determining dependencies. This might take a while. Please wait."
for y in $(<$2) ; do
bugspray "Examining $y" 1
find_dependencies $y ; done
else
echo " Error: you should provide a list-file or the keyword \"full\"."
echo " (see 'alpps.sh howto', step 2)"
exit 1 ; fi
if [[ -z $download_files ]] ; then
echo " No files to download: either none found, or all found are up to date."
else
[[ -d downloads ]] || mkdir downloads
for x in $download_files ; do
failover_fetch $x ; done ; fi
install)
dbpath=`sed -r '/^DBPath/!d;s/^.*= //' /etc/pacman.conf`
[[ -z $dbpath ]] && dbpath="/var/lib/pacman/"
bugspray "dbpath: $dbpath" 2
echo " Updating databases"
cp -ft ${dbpath}sync/ downloads/*.db
cachedir=`sed -r '/^CacheDir/!d;s/^.*= //' /etc/pacman.conf`
[[ -z $cachedir ]] && cachedir="/var/cache/pacman/pkg/"
echo " Caching packages"
cp -f downloads/*.pkg.tar.xz $cachedir
echo
echo " Don't forget to install/update your packages."
echo " Exercise proper caution."
echo " Have fun!"
clean)
echo "Cleaning up. This might take a while."
rm -fr .temp-alpps/ && echo "Buffer directory deleted" || echo "Problem deleting buffer directory '.temp-alpps/'"
rm -fr log-alpps/ && echo "Log directory deleted" || echo "Problem deleting 'log-alpps/'"
rm -fr downloads/ && echo "Downloaded packages deleted" || echo "Problem deleting 'downloads/'"
echo
echo -e " ${lgreen}Arch Linux pacman proxy script${dull}"
echo
echo -e " ${green}Description${dull}"
echo -e " ${green}===========${dull}"
echo -e " This is a bash script to fetch and install packages for an offline Arch box"
echo " using another, online box as a proxy of sorts. So far, this only works if"
echo " the proxy box has bash, wget, tar, sed and grep installed."
echo " It's probably also entirely unsafe, incompatible and will destroy your box"
echo " in a fiery blaze if you try to use it (you know the drill)."
echo
echo -e " ${green}Options${dull}"
echo -e " ${green}=======${dull}"
echo " init Step 0 (as it were): take a snapshot of your system"
echo " fetchdb Step 1: download the packagelist database"
echo " fetch <file> Step 2: download requested packages"
echo " install Step 3: update your system"
echo " clean Step 4: delete any unneeded files"
echo
echo " howto More detailed instructions"
echo " bugs Problems and future plans"
echo " faq As it says"
echo " warranty (in case it ever becomes necessary)"
echo " version (to be honest, I wasn't expecting to go beyond v1-rc or so)"
echo " help You're reading it, doofus :^)"
echo
# dl_list Test the find_dependencies function"
# verint Test the compare_versions function"
esac
I've always resorted to use VPN, then I started using cntlm, this looks very useful (and a lot of work on your part!) Thanks alot!
DoctorZeus -
Tux, Tux linux, Arch Linux, T-shirt artwork.
He he sounds really easy till you realize you need 10" by about 11" inch prints with about 600px res resulting in huge files and load times. Anyways I am on a disability and run a small Tux Linux Artwork Swag shop and here is some of the artwork. I am working on a large tux logo with small Arch Linux writing on the side but still in the planning stages.
Concept proof.
This is a post about the swag shop on this forum
http://bbs.archlinux.org/viewtopic.php?id=79807
Last edited by TomWitko (2010-06-11 03:15:58)xc1024 wrote:Can I use the grafitti logo for a wallpaper? http://witko.ca/image-shack/tux/archlin … -shirt.png
The grafitti logo wallpaper is Streetart Arch Linux from kde-look.org the owner said I could use it for t-shirts but you would have to ask him.
http://kde-look.org/content/show.php/Ar … ent=102620
You could send him a pm from there thats how I got in touch with him. He has some real nice artwork -
Arch Linux Wallpaper 1080p (Rendered with Blender Cycles)
Title pretty much says it all. I've included the source .blend (Blender) file for those that want to tweek it.
Wallpaper:
Blender Source File: DownloadHaikarainen wrote:
This is really beautiful! I read you rendered it using blender, is this available for linux also or is it windows/mac only?
Criticism: Tux stands out too much, doesn't feel like he fits in. I think it would be really cool and better if you worked on his materials, perhaps making him look like a plushy? You know a little furry.
Thank you Yes, Blender works very well on Linux, you can get it from the official arch repo ($ sudo pacman -S blender). This image was modeled and rendered entirely on Arch Linux using Blender + Gimp for some touch-ups (I would never make an Arch Linux wallpaper on Windows/Mac, that's sacrilege ).
Thanks for the criticism as well. Like I mentioned above, I'm working on a couple improvements and different designs already. I'll keep your suggestion in mine while designing them. -
Hi everyone,i am facing two important problems in my Arch Linux
1)Slow boot-up and Shut-down
2)Poor battery life
I am using an Dell Inspiron-N5010 laptop with intel-i3 processor and 3 GB RAM and i have updated my Arch system recently and my kernel version is
Linux 3.12.9-2-ARCH #1 SMP PREEMPT Fri Jan 31 10:22:54 CET 2014 x86_64 GNU/Linux
Login Manager=GDM
Desktop Environment=Cinnamon 2.0.14
Here is my /etc/mkinitcpio.conf
MODULES="i915 drm_kms_helper msr intel_agp dell_wmi dell_laptop acpi"
BINARIES=""
FILES=""
HOOKS="base udev autodetect modconf block fsck filesystems keyboard fsck"
Here is my output of systemd-analyze blame
5.927s pacman-init.service
4.811s NetworkManager.service
4.686s dkms.service
2.206s systemd-logind.service
2.126s gdm.service
1.672s systemd-vconsole-setup.service
1.327s plymouth-read-write.service
1.232s plymouth-start.service
1.104s kmod-static-nodes.service
1.073s polkit.service
1.038s systemd-fsck-root.service
1.012s systemd-udev-trigger.service
866ms accounts-daemon.service
813ms systemd-modules-load.service
785ms systemd-sysctl.service
785ms sys-kernel-debug.mount
784ms dev-mqueue.mount
784ms dev-hugepages.mount
587ms colord.service
569ms sys-kernel-config.mount
504ms systemd-backlight@acpi_video0.service
496ms systemd-journal-flush.service
422ms systemd-tmpfiles-setup-dev.service
402ms tmp.mount
400ms systemd-tmpfiles-clean.service
396ms dhcpcd.service
233ms systemd-random-seed.service
229ms haveged.service
217ms etc-pacman.d-gnupg.mount
182ms wpa_supplicant.service
181ms systemd-remount-fs.service
129ms systemd-user-sessions.service
115ms systemd-udevd.service
114ms systemd-update-utmp.service
81ms udisks2.service
76ms systemd-tmpfiles-setup.service
71ms dev-disk-by\x2duuid-6ff023ec\x2d720b\x2d4c7a\x2d87ff\x2ddf5224b293c3.swap
63ms upower.service
58ms cpupower.service
56ms laptop-mode.service
51ms rtkit-daemon.service
43ms [email protected]
10ms alsa-restore.service
and still its taking more time to get the Display Manager and after entering my login and password its taking more time to get my cinnamon desktop
I am using Laptop-Mode-Tools ,cpupower(Conservative Governor),Thermald to improve my batterylife but nothing is helping me out its just 45~1 hour in my arch system but its actually 2 to 2.5 hours in my windows 7
and i was googling for good solutions but nothing is helping me to get out of the problems and i hope i could fix this issue by means of this forum.Neburski wrote:
Dinesh raja wrote:No its not Manjaro but an custom system which i have built using Arch-Iso
Ah, anyway identify all the service files for systemd to see if there are some that you don't need. Looks like you already did.
For the slow boot up and shutdown you could give a closer look at dmesg.
Check http://freedesktop.org/wiki/Software/sy … eventually to see how you can save your dmesg for the shutdown part. Then look for entries that have a large gap in time (the numbers in [###] are seconds since bootup).
Can you maybe also define slow. How many seconds / minutes does it take?
its taking 23.099s for Kernel+User space and the time gap between Display Manager and Cinnamon desktop is approximately 30 sto 40 s
here is my dmesg complete output
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.12.9-2-ARCH (nobody@var-lib-archbuild-extra-x86_64-thomas) (gcc version 4.8.2 20131219 (prerelease) (GCC) ) #1 SMP PREEMPT Fri Jan 31 10:22:54 CET 2014
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-linux root=UUID=175a6905-635d-455d-a489-e2afaaaeb274 ro quiet splash resume=/dev/sda6 i915.semaphores=1 i915.i915_enable_rc6=0
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000b75a5fff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000b75a6000-0x00000000b75edfff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000b75ee000-0x00000000b75f8fff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x00000000b75f9000-0x00000000b75fbfff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000b75fc000-0x00000000b761ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000b7620000-0x00000000b7620fff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000b7621000-0x00000000b7628fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000b7629000-0x00000000b762bfff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000b762c000-0x00000000b7630fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000b7631000-0x00000000b7650fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000b7651000-0x00000000b7693fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000b7694000-0x00000000b77fffff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000b9e00000-0x00000000bbffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] SMBIOS 2.6 present.
[ 0.000000] DMI: Dell Inc. Inspiron N5010/0P2H9M, BIOS A09 10/19/2010
[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.000000] No AGP bridge found
[ 0.000000] e820: last_pfn = 0xb7800 max_arch_pfn = 0x400000000
[ 0.000000] MTRR default type: uncachable
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-BFFFF uncachable
[ 0.000000] C0000-CFFFF write-protect
[ 0.000000] D0000-E7FFF uncachable
[ 0.000000] E8000-FFFFF write-protect
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 000000000 mask F00000000 write-back
[ 0.000000] 1 base 0B8000000 mask FF8000000 uncachable
[ 0.000000] 2 base 0C0000000 mask FC0000000 uncachable
[ 0.000000] 3 disabled
[ 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
[ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[ 0.000000] found SMP MP-table at [mem 0x000fcda0-0x000fcdaf] mapped at [ffff8800000fcda0]
[ 0.000000] Scanning 1 areas for low memory corruption
[ 0.000000] Base memory trampoline at [ffff880000097000] 97000 size 24576
[ 0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[ 0.000000] [mem 0x00000000-0x000fffff] page 4k
[ 0.000000] BRK [0x01b32000, 0x01b32fff] PGTABLE
[ 0.000000] BRK [0x01b33000, 0x01b33fff] PGTABLE
[ 0.000000] BRK [0x01b34000, 0x01b34fff] PGTABLE
[ 0.000000] init_memory_mapping: [mem 0xb7200000-0xb73fffff]
[ 0.000000] [mem 0xb7200000-0xb73fffff] page 2M
[ 0.000000] BRK [0x01b35000, 0x01b35fff] PGTABLE
[ 0.000000] init_memory_mapping: [mem 0xb4000000-0xb71fffff]
[ 0.000000] [mem 0xb4000000-0xb71fffff] page 2M
[ 0.000000] init_memory_mapping: [mem 0x80000000-0xb3ffffff]
[ 0.000000] [mem 0x80000000-0xb3ffffff] page 2M
[ 0.000000] init_memory_mapping: [mem 0x00100000-0x7fffffff]
[ 0.000000] [mem 0x00100000-0x001fffff] page 4k
[ 0.000000] [mem 0x00200000-0x7fffffff] page 2M
[ 0.000000] init_memory_mapping: [mem 0xb7400000-0xb75a5fff]
[ 0.000000] [mem 0xb7400000-0xb75a5fff] page 4k
[ 0.000000] BRK [0x01b36000, 0x01b36fff] PGTABLE
[ 0.000000] init_memory_mapping: [mem 0xb7620000-0xb7620fff]
[ 0.000000] [mem 0xb7620000-0xb7620fff] page 4k
[ 0.000000] BRK [0x01b37000, 0x01b37fff] PGTABLE
[ 0.000000] init_memory_mapping: [mem 0xb7694000-0xb77fffff]
[ 0.000000] [mem 0xb7694000-0xb77fffff] page 4k
[ 0.000000] RAMDISK: [mem 0x37912000-0x37c80fff]
[ 0.000000] ACPI: RSDP 00000000000f0410 00024 (v03 DELL )
[ 0.000000] ACPI: XSDT 00000000b75ee088 0005C (v01 DELL WN09 01072009 AMI 00010013)
[ 0.000000] ACPI: FACP 00000000b75f7a50 000F4 (v04 DELL WN09 01072009 AMI 00010013)
[ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20130725/tbfadt-395)
[ 0.000000] ACPI BIOS Warning (bug): 32/64X FACS address mismatch in FADT - 0xB762CF40/0x00000000B762CF80, using 32 (20130725/tbfadt-522)
[ 0.000000] ACPI: DSDT 00000000b75ee170 098DF (v02 DELL WN09 00005010 INTL 20051117)
[ 0.000000] ACPI: FACS 00000000b762cf40 00040
[ 0.000000] ACPI: APIC 00000000b75f7b48 00072 (v01 DELL WN09 01072009 AMI 00010013)
[ 0.000000] ACPI: SSDT 00000000b75f7bc0 0014E (v01 AMICPU PROC 00000001 MSFT 03000001)
[ 0.000000] ACPI: MCFG 00000000b75f7d10 0003C (v01 DELL WN09 01072009 MSFT 00000097)
[ 0.000000] ACPI: SLIC 00000000b75f7d50 00176 (v01 DELL WN09 01072009 AMI 00010013)
[ 0.000000] ACPI: HPET 00000000b75f7ec8 00038 (v01 DELL WN09 01072009 AMI. 00000003)
[ 0.000000] ACPI: OSFR 00000000b75f7f00 0008C (v01 DELL M08 07DA0A13 ASL 00000061)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] No NUMA configuration found
[ 0.000000] Faking a node at [mem 0x0000000000000000-0x00000000b77fffff]
[ 0.000000] Initmem setup node 0 [mem 0x00000000-0xb77fffff]
[ 0.000000] NODE_DATA [mem 0xb77fb000-0xb77fffff]
[ 0.000000] [ffffea0000000000-ffffea0002dfffff] PMD -> [ffff8800b3c00000-ffff8800b69fffff] on node 0
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x00001000-0x00ffffff]
[ 0.000000] DMA32 [mem 0x01000000-0xffffffff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x00001000-0x0009cfff]
[ 0.000000] node 0: [mem 0x00100000-0xb75a5fff]
[ 0.000000] node 0: [mem 0xb7620000-0xb7620fff]
[ 0.000000] node 0: [mem 0xb7694000-0xb77fffff]
[ 0.000000] On node 0 totalpages: 751279
[ 0.000000] DMA zone: 64 pages used for memmap
[ 0.000000] DMA zone: 21 pages reserved
[ 0.000000] DMA zone: 3996 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 11680 pages used for memmap
[ 0.000000] DMA32 zone: 747283 pages, LIFO batch:31
[ 0.000000] ACPI: PM-Timer IO Port: 0x408
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x04] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x01] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x05] enabled)
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] high edge lint[0x1])
[ 0.000000] ACPI: IOAPIC (id[0x00] address[0xfec00000] gsi_base[0])
[ 0.000000] IOAPIC[0]: apic_id 0, version 32, address 0xfec00000, GSI 0-23
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: IRQ0 used by override.
[ 0.000000] ACPI: IRQ2 used by override.
[ 0.000000] ACPI: IRQ9 used by override.
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x8086a701 base: 0xfed00000
[ 0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[ 0.000000] nr_irqs_gsi: 40
[ 0.000000] PM: Registered nosave memory: [mem 0x0009d000-0x0009dfff]
[ 0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000dffff]
[ 0.000000] PM: Registered nosave memory: [mem 0x000e0000-0x000fffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xb75a6000-0xb75edfff]
[ 0.000000] PM: Registered nosave memory: [mem 0xb75ee000-0xb75f8fff]
[ 0.000000] PM: Registered nosave memory: [mem 0xb75f9000-0xb75fbfff]
[ 0.000000] PM: Registered nosave memory: [mem 0xb75fc000-0xb761ffff]
[ 0.000000] PM: Registered nosave memory: [mem 0xb7621000-0xb7628fff]
[ 0.000000] PM: Registered nosave memory: [mem 0xb7629000-0xb762bfff]
[ 0.000000] PM: Registered nosave memory: [mem 0xb762c000-0xb7630fff]
[ 0.000000] PM: Registered nosave memory: [mem 0xb7631000-0xb7650fff]
[ 0.000000] PM: Registered nosave memory: [mem 0xb7651000-0xb7693fff]
[ 0.000000] e820: [mem 0xbc000000-0xdfffffff] available for PCI devices
[ 0.000000] Booting paravirtualized kernel on bare hardware
[ 0.000000] setup_percpu: NR_CPUS:128 nr_cpumask_bits:128 nr_cpu_ids:4 nr_node_ids:1
[ 0.000000] PERCPU: Embedded 29 pages/cpu @ffff8800b7000000 s86464 r8192 d24128 u524288
[ 0.000000] pcpu-alloc: s86464 r8192 d24128 u524288 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0 1 2 3
[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 739514
[ 0.000000] Policy zone: DMA32
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux root=UUID=175a6905-635d-455d-a489-e2afaaaeb274 ro quiet splash resume=/dev/sda6 i915.semaphores=1 i915.i915_enable_rc6=0
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] Checking aperture...
[ 0.000000] No AGP bridge found
[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area
[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[ 0.000000] Memory: 2942184K/3005116K available (5119K kernel code, 807K rwdata, 1628K rodata, 1144K init, 1288K bss, 62932K reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] Preemptible hierarchical RCU implementation.
[ 0.000000] RCU dyntick-idle grace-period acceleration is enabled.
[ 0.000000] Dump stacks of tasks blocking RCU-preempt GP.
[ 0.000000] RCU restricting CPUs from NR_CPUS=128 to nr_cpu_ids=4.
[ 0.000000] NR_IRQS:8448 nr_irqs:712 16
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] allocated 12058624 bytes of page_cgroup
[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[ 0.000000] hpet clockevent registered
[ 0.000000] tsc: Fast TSC calibration using PIT
[ 0.003333] tsc: Detected 2260.785 MHz processor
[ 0.000003] Calibrating delay loop (skipped), value calculated using timer frequency.. 4523.96 BogoMIPS (lpj=7535950)
[ 0.000007] pid_max: default: 32768 minimum: 301
[ 0.000041] Security Framework initialized
[ 0.000053] AppArmor: AppArmor disabled by boot time parameter
[ 0.000055] Yama: becoming mindful.
[ 0.000408] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
[ 0.002121] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
[ 0.002882] Mount-cache hash table entries: 256
[ 0.003130] Initializing cgroup subsys memory
[ 0.003144] Initializing cgroup subsys devices
[ 0.003147] Initializing cgroup subsys freezer
[ 0.003149] Initializing cgroup subsys net_cls
[ 0.003151] Initializing cgroup subsys blkio
[ 0.003177] CPU: Physical Processor ID: 0
[ 0.003178] CPU: Processor Core ID: 0
[ 0.003185] mce: CPU supports 9 MCE banks
[ 0.003198] CPU0: Thermal monitoring enabled (TM1)
[ 0.003211] Last level iTLB entries: 4KB 512, 2MB 7, 4MB 7
Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32
tlb_flushall_shift: 6
[ 0.003319] Freeing SMP alternatives memory: 20K (ffffffff819e9000 - ffffffff819ee000)
[ 0.004634] ACPI: Core revision 20130725
[ 0.009965] ACPI: All ACPI Tables successfully acquired
[ 0.019630] ftrace: allocating 20320 entries in 80 pages
[ 0.032100] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.065112] smpboot: CPU0: Intel(R) Core(TM) i3 CPU M 350 @ 2.27GHz (fam: 06, model: 25, stepping: 02)
[ 0.171587] Performance Events: PEBS fmt1+, 16-deep LBR, Westmere events, Intel PMU driver.
[ 0.171595] perf_event_intel: CPUID marked event: 'bus cycles' unavailable
[ 0.171599] ... version: 3
[ 0.171600] ... bit width: 48
[ 0.171601] ... generic registers: 4
[ 0.171602] ... value mask: 0000ffffffffffff
[ 0.171604] ... max period: 000000007fffffff
[ 0.171605] ... fixed-purpose events: 3
[ 0.171606] ... event mask: 000000070000000f
[ 0.211654] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[ 0.198312] smpboot: Booting Node 0, Processors # 1 # 2 # 3 OK
[ 0.251580] Brought up 4 CPUs
[ 0.251586] smpboot: Total of 4 processors activated (18093.87 BogoMIPS)
[ 0.254266] devtmpfs: initialized
[ 0.257030] PM: Registering ACPI NVS region [mem 0xb75a6000-0xb75edfff] (294912 bytes)
[ 0.257037] PM: Registering ACPI NVS region [mem 0xb75f9000-0xb75fbfff] (12288 bytes)
[ 0.257039] PM: Registering ACPI NVS region [mem 0xb7621000-0xb7628fff] (32768 bytes)
[ 0.257040] PM: Registering ACPI NVS region [mem 0xb762c000-0xb7630fff] (20480 bytes)
[ 0.257042] PM: Registering ACPI NVS region [mem 0xb7651000-0xb7693fff] (274432 bytes)
[ 0.258060] RTC time: 15:04:06, date: 02/18/14
[ 0.258105] NET: Registered protocol family 16
[ 0.258225] cpuidle: using governor ladder
[ 0.258227] cpuidle: using governor menu
[ 0.258271] ACPI: bus type PCI registered
[ 0.258273] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.258334] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[ 0.258337] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820
[ 0.281454] PCI: Using configuration type 1 for base access
[ 0.282099] bio: create slab <bio-0> at 0
[ 0.282221] ACPI: Added _OSI(Module Device)
[ 0.282223] ACPI: Added _OSI(Processor Device)
[ 0.282225] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.282226] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.283469] ACPI: EC: Look up EC in DSDT
[ 0.284754] ACPI: Executed 1 blocks of module-level executable AML code
[ 0.289116] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[ 0.302665] ACPI: SSDT 00000000b7621c18 003A4 (v01 AMI IST 00000001 MSFT 03000001)
[ 0.303013] ACPI: Dynamic OEM Table Load:
[ 0.303016] ACPI: SSDT (null) 003A4 (v01 AMI IST 00000001 MSFT 03000001)
[ 0.303484] ACPI: Interpreter enabled
[ 0.303491] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20130725/hwxface-571)
[ 0.303495] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20130725/hwxface-571)
[ 0.303510] ACPI: (supports S0 S3 S4 S5)
[ 0.303512] ACPI: Using IOAPIC for interrupt routing
[ 0.303547] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.303686] ACPI: No dock devices found.
[ 0.322094] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.322239] acpi PNP0A08:00: Requesting ACPI _OSC control (0x1d)
[ 0.322442] acpi PNP0A08:00: ACPI _OSC control (0x19) granted
[ 0.322704] PCI host bridge to bus 0000:00
[ 0.322708] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 0.322710] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7]
[ 0.322712] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff]
[ 0.322714] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[ 0.322716] pci_bus 0000:00: root bus resource [mem 0xbc000000-0xffffffff]
[ 0.322725] pci 0000:00:00.0: [8086:0044] type 00 class 0x060000
[ 0.322744] DMAR: BIOS has allocated no shadow GTT; disabling IOMMU for graphics
[ 0.322818] pci 0000:00:02.0: [8086:0046] type 00 class 0x030000
[ 0.322831] pci 0000:00:02.0: reg 0x10: [mem 0xfa400000-0xfa7fffff 64bit]
[ 0.322838] pci 0000:00:02.0: reg 0x18: [mem 0xc0000000-0xcfffffff 64bit pref]
[ 0.322843] pci 0000:00:02.0: reg 0x20: [io 0xf080-0xf087]
[ 0.322962] pci 0000:00:16.0: [8086:3b64] type 00 class 0x078000
[ 0.322991] pci 0000:00:16.0: reg 0x10: [mem 0xfbd09000-0xfbd0900f 64bit]
[ 0.323088] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
[ 0.323185] pci 0000:00:1a.0: [8086:3b3c] type 00 class 0x0c0320
[ 0.323212] pci 0000:00:1a.0: reg 0x10: [mem 0xfbd08000-0xfbd083ff]
[ 0.323324] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
[ 0.325807] pci 0000:00:1a.0: System wakeup disabled by ACPI
[ 0.325857] pci 0000:00:1b.0: [8086:3b56] type 00 class 0x040300
[ 0.325880] pci 0000:00:1b.0: reg 0x10: [mem 0xfbd00000-0xfbd03fff 64bit]
[ 0.325979] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[ 0.326066] pci 0000:00:1c.0: [8086:3b42] type 01 class 0x060400
[ 0.326169] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[ 0.326222] pci 0000:00:1c.0: System wakeup disabled by ACPI
[ 0.326261] pci 0000:00:1c.1: [8086:3b44] type 01 class 0x060400
[ 0.326362] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[ 0.326415] pci 0000:00:1c.1: System wakeup disabled by ACPI
[ 0.326453] pci 0000:00:1c.2: [8086:3b46] type 01 class 0x060400
[ 0.326553] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[ 0.326608] pci 0000:00:1c.2: System wakeup disabled by ACPI
[ 0.326649] pci 0000:00:1c.4: [8086:3b4a] type 01 class 0x060400
[ 0.326750] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
[ 0.326803] pci 0000:00:1c.4: System wakeup disabled by ACPI
[ 0.326851] pci 0000:00:1d.0: [8086:3b34] type 00 class 0x0c0320
[ 0.326878] pci 0000:00:1d.0: reg 0x10: [mem 0xfbd07000-0xfbd073ff]
[ 0.326988] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[ 0.329810] pci 0000:00:1d.0: System wakeup disabled by ACPI
[ 0.329853] pci 0000:00:1e.0: [8086:2448] type 01 class 0x060401
[ 0.329965] pci 0000:00:1e.0: System wakeup disabled by ACPI
[ 0.330003] pci 0000:00:1f.0: [8086:3b0b] type 00 class 0x060100
[ 0.330187] pci 0000:00:1f.2: [8086:3b2f] type 00 class 0x010601
[ 0.330216] pci 0000:00:1f.2: reg 0x10: [io 0xf070-0xf077]
[ 0.330227] pci 0000:00:1f.2: reg 0x14: [io 0xf060-0xf063]
[ 0.330238] pci 0000:00:1f.2: reg 0x18: [io 0xf050-0xf057]
[ 0.330249] pci 0000:00:1f.2: reg 0x1c: [io 0xf040-0xf043]
[ 0.330261] pci 0000:00:1f.2: reg 0x20: [io 0xf020-0xf03f]
[ 0.330272] pci 0000:00:1f.2: reg 0x24: [mem 0xfbd06000-0xfbd067ff]
[ 0.330340] pci 0000:00:1f.2: PME# supported from D3hot
[ 0.330421] pci 0000:00:1f.3: [8086:3b30] type 00 class 0x0c0500
[ 0.330443] pci 0000:00:1f.3: reg 0x10: [mem 0xfbd05000-0xfbd050ff 64bit]
[ 0.330474] pci 0000:00:1f.3: reg 0x20: [io 0xf000-0xf01f]
[ 0.330575] pci 0000:00:1f.6: [8086:3b32] type 00 class 0x118000
[ 0.330604] pci 0000:00:1f.6: reg 0x10: [mem 0xfbd04000-0xfbd04fff 64bit]
[ 0.330829] pci 0000:00:1c.0: PCI bridge to [bus 11]
[ 0.330946] pci 0000:12:00.0: [14e4:4727] type 00 class 0x028000
[ 0.330979] pci 0000:12:00.0: reg 0x10: [mem 0xfbc00000-0xfbc03fff 64bit]
[ 0.331144] pci 0000:12:00.0: supports D1 D2
[ 0.331146] pci 0000:12:00.0: PME# supported from D0 D3hot D3cold
[ 0.338279] pci 0000:00:1c.1: PCI bridge to [bus 12]
[ 0.338291] pci 0000:00:1c.1: bridge window [mem 0xfbc00000-0xfbcfffff]
[ 0.338460] pci 0000:13:00.0: [10ec:8136] type 00 class 0x020000
[ 0.338526] pci 0000:13:00.0: reg 0x10: [io 0xe000-0xe0ff]
[ 0.338640] pci 0000:13:00.0: reg 0x18: [mem 0xd0b10000-0xd0b10fff 64bit pref]
[ 0.338706] pci 0000:13:00.0: reg 0x20: [mem 0xd0b00000-0xd0b0ffff 64bit pref]
[ 0.338752] pci 0000:13:00.0: reg 0x30: [mem 0xfb200000-0xfb21ffff pref]
[ 0.338976] pci 0000:13:00.0: supports D1 D2
[ 0.338978] pci 0000:13:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.339173] pci 0000:00:1c.2: PCI bridge to [bus 13]
[ 0.339178] pci 0000:00:1c.2: bridge window [io 0xe000-0xefff]
[ 0.339183] pci 0000:00:1c.2: bridge window [mem 0xfb200000-0xfbbfffff]
[ 0.339190] pci 0000:00:1c.2: bridge window [mem 0xd0b00000-0xd14fffff 64bit pref]
[ 0.339268] pci 0000:00:1c.4: PCI bridge to [bus 15]
[ 0.339274] pci 0000:00:1c.4: bridge window [io 0xd000-0xdfff]
[ 0.339278] pci 0000:00:1c.4: bridge window [mem 0xfa800000-0xfb1fffff]
[ 0.339286] pci 0000:00:1c.4: bridge window [mem 0xd0000000-0xd09fffff 64bit pref]
[ 0.339371] pci 0000:00:1e.0: PCI bridge to [bus 20] (subtractive decode)
[ 0.339385] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode)
[ 0.339387] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode)
[ 0.339389] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode)
[ 0.339391] pci 0000:00:1e.0: bridge window [mem 0xbc000000-0xffffffff] (subtractive decode)
[ 0.339814] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 10 *11 12 14 15)
[ 0.339874] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 *5 6 7 10 11 12 14 15)
[ 0.339932] ACPI: PCI Interrupt Link [LNKC] (IRQs *3 4 5 6 10 11 12 14 15)
[ 0.339990] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 *4 5 6 10 11 12 14 15)
[ 0.340047] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 12 14 15) *0
[ 0.340106] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 10 11 12 14 15) *0
[ 0.340164] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 *10 11 12 14 15)
[ 0.340222] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 *7 10 11 12 14 15)
[ 0.340440] ACPI: Enabled 5 GPEs in block 00 to 3F
[ 0.340472] ACPI: \_SB_.PCI0: notify handler is installed
[ 0.340534] Found 1 acpi root devices
[ 0.340641] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[ 0.340644] vgaarb: loaded
[ 0.340645] vgaarb: bridge control possible 0000:00:02.0
[ 0.340690] PCI: Using ACPI for IRQ routing
[ 0.350522] PCI: Discovered peer bus ff
[ 0.350524] PCI: root bus ff: using default resources
[ 0.350525] PCI: Probing PCI hardware (bus ff)
[ 0.350548] PCI host bridge to bus 0000:ff
[ 0.350551] pci_bus 0000:ff: root bus resource [io 0x0000-0xffff]
[ 0.350553] pci_bus 0000:ff: root bus resource [mem 0x00000000-0xfffffffff]
[ 0.350555] pci_bus 0000:ff: No busn resource found for root bus, will use [bus ff-ff]
[ 0.350561] pci 0000:ff:00.0: [8086:2c62] type 00 class 0x060000
[ 0.350602] pci 0000:ff:00.1: [8086:2d01] type 00 class 0x060000
[ 0.350643] pci 0000:ff:02.0: [8086:2d10] type 00 class 0x060000
[ 0.350680] pci 0000:ff:02.1: [8086:2d11] type 00 class 0x060000
[ 0.350718] pci 0000:ff:02.2: [8086:2d12] type 00 class 0x060000
[ 0.350756] pci 0000:ff:02.3: [8086:2d13] type 00 class 0x060000
[ 0.350804] pci_bus 0000:ff: busn_res: [bus ff] end is updated to ff
[ 0.350807] PCI: pci_cache_line_size set to 64 bytes
[ 0.350880] e820: reserve RAM buffer [mem 0x0009d400-0x0009ffff]
[ 0.350882] e820: reserve RAM buffer [mem 0xb75a6000-0xb7ffffff]
[ 0.350884] e820: reserve RAM buffer [mem 0xb7621000-0xb7ffffff]
[ 0.350886] e820: reserve RAM buffer [mem 0xb7800000-0xb7ffffff]
[ 0.350986] NetLabel: Initializing
[ 0.350988] NetLabel: domain hash size = 128
[ 0.350989] NetLabel: protocols = UNLABELED CIPSOv4
[ 0.351002] NetLabel: unlabeled traffic allowed by default
[ 0.351040] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[ 0.351046] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[ 0.353079] Switched to clocksource hpet
[ 0.357893] pnp: PnP ACPI init
[ 0.357912] ACPI: bus type PNP registered
[ 0.358057] system 00:00: [mem 0xfed14000-0xfed19fff] has been reserved
[ 0.358060] system 00:00: [mem 0xe0000000-0xefffffff] has been reserved
[ 0.358062] system 00:00: [mem 0xfed90000-0xfed93fff] has been reserved
[ 0.358064] system 00:00: [mem 0xfed20000-0xfed3ffff] has been reserved
[ 0.358066] system 00:00: [mem 0xfee00000-0xfee0ffff] has been reserved
[ 0.358070] system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active)
[ 0.358105] pnp 00:01: [dma 4]
[ 0.358125] pnp 00:01: Plug and Play ACPI device, IDs PNP0200 (active)
[ 0.358162] pnp 00:02: Plug and Play ACPI device, IDs PNP0b00 (active)
[ 0.358187] pnp 00:03: Plug and Play ACPI device, IDs PNP0800 (active)
[ 0.358217] pnp 00:04: Plug and Play ACPI device, IDs PNP0c04 (active)
[ 0.358267] system 00:05: [io 0x04d0-0x04d1] has been reserved
[ 0.358270] system 00:05: [mem 0xfe800000-0xfe8001ff] has been reserved
[ 0.358273] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 0.358309] pnp 00:06: Plug and Play ACPI device, IDs DLL0447 SYN0600 SYN0002 PNP0f13 (active)
[ 0.358347] pnp 00:07: Plug and Play ACPI device, IDs PNP0303 (active)
[ 0.358508] system 00:08: [io 0x0400-0x047f] could not be reserved
[ 0.358511] system 00:08: [io 0x1180-0x119f] has been reserved
[ 0.358513] system 00:08: [io 0x0500-0x057f] has been reserved
[ 0.358516] system 00:08: [mem 0xfed1c000-0xfed1ffff] has been reserved
[ 0.358518] system 00:08: [mem 0xfec00000-0xfecfffff] could not be reserved
[ 0.358520] system 00:08: [mem 0xfed08000-0xfed08fff] has been reserved
[ 0.358523] system 00:08: [mem 0xff000000-0xffffffff] has been reserved
[ 0.358526] system 00:08: Plug and Play ACPI device, IDs PNP0c01 (active)
[ 0.358636] pnp 00:09: Plug and Play ACPI device, IDs PNP0103 (active)
[ 0.358854] pnp: PnP ACPI: found 10 devices
[ 0.358856] ACPI: bus type PNP unregistered
[ 0.365989] pci 0000:00:1c.0: bridge window [io 0x1000-0x0fff] to [bus 11] add_size 1000
[ 0.365994] pci 0000:00:1c.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 11] add_size 200000
[ 0.365996] pci 0000:00:1c.0: bridge window [mem 0x00100000-0x000fffff] to [bus 11] add_size 200000
[ 0.366007] pci 0000:00:1c.1: bridge window [io 0x1000-0x0fff] to [bus 12] add_size 1000
[ 0.366010] pci 0000:00:1c.1: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 12] add_size 200000
[ 0.366040] pci 0000:00:1c.0: res[14]=[mem 0x00100000-0x000fffff] get_res_add_size add_size 200000
[ 0.366042] pci 0000:00:1c.0: res[15]=[mem 0x00100000-0x000fffff 64bit pref] get_res_add_size add_size 200000
[ 0.366044] pci 0000:00:1c.1: res[15]=[mem 0x00100000-0x000fffff 64bit pref] get_res_add_size add_size 200000
[ 0.366047] pci 0000:00:1c.0: res[13]=[io 0x1000-0x0fff] get_res_add_size add_size 1000
[ 0.366049] pci 0000:00:1c.1: res[13]=[io 0x1000-0x0fff] get_res_add_size add_size 1000
[ 0.366053] pci 0000:00:1c.0: BAR 14: assigned [mem 0xbc000000-0xbc1fffff]
[ 0.366056] pci 0000:00:1c.0: BAR 15: assigned [mem 0xbc200000-0xbc3fffff 64bit pref]
[ 0.366059] pci 0000:00:1c.1: BAR 15: assigned [mem 0xbc400000-0xbc5fffff 64bit pref]
[ 0.366061] pci 0000:00:1c.0: BAR 13: assigned [io 0x2000-0x2fff]
[ 0.366064] pci 0000:00:1c.1: BAR 13: assigned [io 0x3000-0x3fff]
[ 0.366066] pci 0000:00:1c.0: PCI bridge to [bus 11]
[ 0.366071] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff]
[ 0.366077] pci 0000:00:1c.0: bridge window [mem 0xbc000000-0xbc1fffff]
[ 0.366082] pci 0000:00:1c.0: bridge window [mem 0xbc200000-0xbc3fffff 64bit pref]
[ 0.366089] pci 0000:00:1c.1: PCI bridge to [bus 12]
[ 0.366093] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff]
[ 0.366100] pci 0000:00:1c.1: bridge window [mem 0xfbc00000-0xfbcfffff]
[ 0.366104] pci 0000:00:1c.1: bridge window [mem 0xbc400000-0xbc5fffff 64bit pref]
[ 0.366112] pci 0000:00:1c.2: PCI bridge to [bus 13]
[ 0.366116] pci 0000:00:1c.2: bridge window [io 0xe000-0xefff]
[ 0.366122] pci 0000:00:1c.2: bridge window [mem 0xfb200000-0xfbbfffff]
[ 0.366127] pci 0000:00:1c.2: bridge window [mem 0xd0b00000-0xd14fffff 64bit pref]
[ 0.366135] pci 0000:00:1c.4: PCI bridge to [bus 15]
[ 0.366139] pci 0000:00:1c.4: bridge window [io 0xd000-0xdfff]
[ 0.366145] pci 0000:00:1c.4: bridge window [mem 0xfa800000-0xfb1fffff]
[ 0.366150] pci 0000:00:1c.4: bridge window [mem 0xd0000000-0xd09fffff 64bit pref]
[ 0.366157] pci 0000:00:1e.0: PCI bridge to [bus 20]
[ 0.366172] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7]
[ 0.366174] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff]
[ 0.366176] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[ 0.366178] pci_bus 0000:00: resource 7 [mem 0xbc000000-0xffffffff]
[ 0.366180] pci_bus 0000:11: resource 0 [io 0x2000-0x2fff]
[ 0.366182] pci_bus 0000:11: resource 1 [mem 0xbc000000-0xbc1fffff]
[ 0.366184] pci_bus 0000:11: resource 2 [mem 0xbc200000-0xbc3fffff 64bit pref]
[ 0.366186] pci_bus 0000:12: resource 0 [io 0x3000-0x3fff]
[ 0.366188] pci_bus 0000:12: resource 1 [mem 0xfbc00000-0xfbcfffff]
[ 0.366190] pci_bus 0000:12: resource 2 [mem 0xbc400000-0xbc5fffff 64bit pref]
[ 0.366192] pci_bus 0000:13: resource 0 [io 0xe000-0xefff]
[ 0.366194] pci_bus 0000:13: resource 1 [mem 0xfb200000-0xfbbfffff]
[ 0.366196] pci_bus 0000:13: resource 2 [mem 0xd0b00000-0xd14fffff 64bit pref]
[ 0.366198] pci_bus 0000:15: resource 0 [io 0xd000-0xdfff]
[ 0.366200] pci_bus 0000:15: resource 1 [mem 0xfa800000-0xfb1fffff]
[ 0.366202] pci_bus 0000:15: resource 2 [mem 0xd0000000-0xd09fffff 64bit pref]
[ 0.366204] pci_bus 0000:20: resource 4 [io 0x0000-0x0cf7]
[ 0.366206] pci_bus 0000:20: resource 5 [io 0x0d00-0xffff]
[ 0.366207] pci_bus 0000:20: resource 6 [mem 0x000a0000-0x000bffff]
[ 0.366209] pci_bus 0000:20: resource 7 [mem 0xbc000000-0xffffffff]
[ 0.366212] pci_bus 0000:ff: resource 4 [io 0x0000-0xffff]
[ 0.366214] pci_bus 0000:ff: resource 5 [mem 0x00000000-0xfffffffff]
[ 0.366254] NET: Registered protocol family 2
[ 0.366468] TCP established hash table entries: 32768 (order: 7, 524288 bytes)
[ 0.366709] TCP bind hash table entries: 32768 (order: 7, 524288 bytes)
[ 0.366902] TCP: Hash tables configured (established 32768 bind 32768)
[ 0.366941] TCP: reno registered
[ 0.366949] UDP hash table entries: 2048 (order: 4, 65536 bytes)
[ 0.366986] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes)
[ 0.367076] NET: Registered protocol family 1
[ 0.367090] pci 0000:00:02.0: Boot video device
[ 0.613312] PCI: CLS 64 bytes, default 64
[ 0.613356] Unpacking initramfs...
[ 0.685162] Freeing initrd memory: 3516K (ffff880037912000 - ffff880037c81000)
[ 0.685427] Scanning for low memory corruption every 60 seconds
[ 0.685724] audit: initializing netlink socket (disabled)
[ 0.685739] type=2000 audit(1392735846.573:1): initialized
[ 0.697728] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.698983] zbud: loaded
[ 0.699170] VFS: Disk quotas dquot_6.5.2
[ 0.699211] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.699398] msgmni has been set to 5753
[ 0.699768] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 0.699834] io scheduler noop registered
[ 0.699836] io scheduler deadline registered
[ 0.699865] io scheduler cfq registered (default)
[ 0.700108] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X
[ 0.700288] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X
[ 0.700460] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X
[ 0.700630] pcieport 0000:00:1c.4: irq 43 for MSI/MSI-X
[ 0.700717] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 0.700804] pciehp: Using ACPI for slot detection.
[ 0.700872] pciehp 0000:00:1c.4:pcie04: HPC vendor_id 8086 device_id 3b4a ss_vid 1028 ss_did 447
[ 0.700927] pciehp 0000:00:1c.4:pcie04: service driver pciehp loaded
[ 0.700934] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[ 0.700978] vesafb: mode is 1024x768x32, linelength=4096, pages=0
[ 0.700980] vesafb: scrolling: redraw
[ 0.700982] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[ 0.701276] vesafb: framebuffer at 0xc0000000, mapped to 0xffffc90010800000, using 3072k, total 3072k
[ 0.827851] Console: switching to colour frame buffer device 128x48
[ 0.954320] fb0: VESA VGA frame buffer device
[ 0.954333] intel_idle: MWAIT substates: 0x1120
[ 0.954334] intel_idle: v0.4 model 0x25
[ 0.954336] intel_idle: lapic_timer_reliable_states 0xffffffff
[ 0.954490] GHES: HEST is not enabled!
[ 0.954559] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 0.955036] Linux agpgart interface v0.103
[ 0.955109] i8042: PNP: PS/2 Controller [PNP0303:KBC,PNP0f13:PS2] at 0x60,0x64 irq 1,12
[ 0.983471] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 0.983499] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 0.983628] mousedev: PS/2 mouse device common for all mice
[ 0.984635] rtc_cmos 00:02: RTC can wake from S4
[ 0.984795] rtc_cmos 00:02: rtc core: registered rtc_cmos as rtc0
[ 0.984828] rtc_cmos 00:02: alarms up to one year, y3k, 114 bytes nvram, hpet irqs
[ 0.984891] drop_monitor: Initializing network drop monitor service
[ 0.984966] TCP: cubic registered
[ 0.985061] NET: Registered protocol family 10
[ 0.985242] NET: Registered protocol family 17
[ 0.985251] Key type dns_resolver registered
[ 0.985582] registered taskstats version 1
[ 0.986258] Magic number: 2:431:83
[ 0.986415] rtc_cmos 00:02: setting system clock to 2014-02-18 15:04:07 UTC (1392735847)
[ 0.986464] PM: Checking hibernation image partition /dev/sda6
[ 1.020768] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[ 1.032423] PM: Hibernation image not present or could not be loaded.
[ 1.033852] Freeing unused kernel memory: 1144K (ffffffff818cb000 - ffffffff819e9000)
[ 1.033855] Write protecting the kernel read-only data: 8192k
[ 1.036680] Freeing unused kernel memory: 1012K (ffff880001503000 - ffff880001600000)
[ 1.037857] Freeing unused kernel memory: 420K (ffff880001797000 - ffff880001800000)
[ 1.048632] systemd-udevd[58]: starting version 208
[ 1.051934] [drm] Initialized drm 1.1.0 20060810
[ 1.052681] agpgart-intel 0000:00:00.0: Intel HD Graphics Chipset
[ 1.052752] agpgart-intel 0000:00:00.0: detected gtt size: 2097152K total, 262144K mappable
[ 1.053489] agpgart-intel 0000:00:00.0: detected 32768K stolen memory
[ 1.053683] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xc0000000
[ 1.054243] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input2
[ 1.054250] ACPI: Power Button [PWRB]
[ 1.054309] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input3
[ 1.056341] ACPI: Lid Switch [LID0]
[ 1.056390] input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input4
[ 1.056394] ACPI: Sleep Button [SBTN]
[ 1.056449] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input5
[ 1.056453] ACPI: Power Button [PWRF]
[ 1.061806] [drm] Memory usable by graphics device = 2048M
[ 1.061813] checking generic (c0000000 300000) vs hw (c0000000 10000000)
[ 1.061816] fb: conflicting fb hw usage inteldrmfb vs VESA VGA - removing generic driver
[ 1.061836] Console: switching to colour dummy device 80x25
[ 1.061989] i915 0000:00:02.0: setting latency timer to 64
[ 1.088158] i915 0000:00:02.0: irq 44 for MSI/MSI-X
[ 1.088167] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[ 1.088168] [drm] Driver supports precise vblank timestamp query.
[ 1.088247] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 1.125908] fbcon: inteldrmfb (fb0) is primary device
[ 1.686801] tsc: Refined TSC clocksource calibration: 2261.000 MHz
[ 2.030270] Console: switching to colour frame buffer device 170x48
[ 2.033661] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[ 2.033664] i915 0000:00:02.0: registered panic notifier
[ 2.043083] acpi device:2e: registered as cooling_device0
[ 2.043220] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no)
[ 2.043321] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:02/input/input6
[ 2.043365] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[ 2.072732] ACPI: bus type USB registered
[ 2.072789] usbcore: registered new interface driver usbfs
[ 2.072800] usbcore: registered new interface driver hub
[ 2.072970] usbcore: registered new device driver usb
[ 2.073041] SCSI subsystem initialized
[ 2.075058] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 2.075393] ehci-pci: EHCI PCI platform driver
[ 2.075595] libata version 3.00 loaded.
[ 2.075607] ehci-pci 0000:00:1a.0: setting latency timer to 64
[ 2.075628] ehci-pci 0000:00:1a.0: EHCI Host Controller
[ 2.075664] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
[ 2.075687] ehci-pci 0000:00:1a.0: debug port 2
[ 2.079676] ehci-pci 0000:00:1a.0: cache line size of 64 is not supported
[ 2.079703] ehci-pci 0000:00:1a.0: irq 16, io mem 0xfbd08000
[ 2.086921] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[ 2.087210] hub 1-0:1.0: USB hub found
[ 2.087224] hub 1-0:1.0: 2 ports detected
[ 2.087609] ehci-pci 0000:00:1d.0: setting latency timer to 64
[ 2.087620] ehci-pci 0000:00:1d.0: EHCI Host Controller
[ 2.087628] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 2
[ 2.087646] ehci-pci 0000:00:1d.0: debug port 2
[ 2.091655] ehci-pci 0000:00:1d.0: cache line size of 64 is not supported
[ 2.091677] ehci-pci 0000:00:1d.0: irq 23, io mem 0xfbd07000
[ 2.100198] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[ 2.100402] hub 2-0:1.0: USB hub found
[ 2.100413] hub 2-0:1.0: 2 ports detected
[ 2.100556] ahci 0000:00:1f.2: version 3.0
[ 2.100724] ahci 0000:00:1f.2: irq 45 for MSI/MSI-X
[ 2.100819] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 3 Gbps 0x13 impl SATA mode
[ 2.100823] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck pm led clo pio slum part ems sxs apst
[ 2.100828] ahci 0000:00:1f.2: setting latency timer to 64
[ 2.114500] scsi0 : ahci
[ 2.114680] scsi1 : ahci
[ 2.114837] scsi2 : ahci
[ 2.114999] scsi3 : ahci
[ 2.115160] scsi4 : ahci
[ 2.115327] scsi5 : ahci
[ 2.115387] ata1: SATA max UDMA/133 abar m2048@0xfbd06000 port 0xfbd06100 irq 45
[ 2.115391] ata2: SATA max UDMA/133 abar m2048@0xfbd06000 port 0xfbd06180 irq 45
[ 2.115393] ata3: DUMMY
[ 2.115394] ata4: DUMMY
[ 2.115398] ata5: SATA max UDMA/133 abar m2048@0xfbd06000 port 0xfbd06300 irq 45
[ 2.115399] ata6: DUMMY
[ 2.393678] usb 1-1: new high-speed USB device number 2 using ehci-pci
[ 2.433682] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 2.433781] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 2.433831] ata5: SATA link down (SStatus 0 SControl 300)
[ 2.434884] ata1.00: ATA-8: HGST HTS545050A7E380, GG2OAC90, max UDMA/133
[ 2.434889] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[ 2.436127] ata2.00: ATAPI: PLDS DVD+/-RW DS-8A4S, JD12, max UDMA/100
[ 2.436147] ata1.00: configured for UDMA/133
[ 2.436450] scsi 0:0:0:0: Direct-Access ATA HGST HTS545050A7 GG2O PQ: 0 ANSI: 5
[ 2.437560] ata2.00: configured for UDMA/100
[ 2.443701] scsi 1:0:0:0: CD-ROM PLDS DVD+-RW DS-8A4S JD12 PQ: 0 ANSI: 5
[ 2.447926] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[ 2.447932] sd 0:0:0:0: [sda] 4096-byte physical blocks
[ 2.448029] sd 0:0:0:0: [sda] Write Protect is off
[ 2.448032] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 2.448096] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 2.455780] sr0: scsi3-mmc drive: 24x/8x writer dvd-ram cd/rw xa/form2 cdda pop-up
[ 2.455783] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 2.455953] sr 1:0:0:0: Attached scsi CD-ROM sr0
[ 2.517726] hub 1-1:1.0: USB hub found
[ 2.517904] hub 1-1:1.0: 6 ports detected
[ 2.539836] sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 >
[ 2.541577] sd 0:0:0:0: [sda] Attached SCSI disk
[ 2.623825] usb 2-1: new high-speed USB device number 2 using ehci-pci
[ 2.687279] Switched to clocksource tsc
[ 2.748052] hub 2-1:1.0: USB hub found
[ 2.748154] hub 2-1:1.0: 8 ports detected
[ 2.827208] usb 1-1.6: new high-speed USB device number 3 using ehci-pci
[ 3.020708] usb 2-1.1: new low-speed USB device number 3 using ehci-pci
[ 3.111476] hidraw: raw HID events driver (C) Jiri Kosina
[ 3.114205] usbcore: registered new interface driver usbhid
[ 3.114208] usbhid: USB HID core driver
[ 3.114758] input: SIGMACH1P U+P Mouse as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/input/input7
[ 3.114892] hid-generic 0003:1C4F:0003.0001: input,hidraw0: USB HID v1.10 Mouse [SIGMACH1P U+P Mouse] on usb-0000:00:1d.0-1.1/input0
[ 3.177353] usb 2-1.6: new full-speed USB device number 4 using ehci-pci
[ 3.263497] hub 2-1.6:1.0: USB hub found
[ 3.263678] hub 2-1.6:1.0: 3 ports detected
[ 3.530764] usb 2-1.6.1: new full-speed USB device number 5 using ehci-pci
[ 3.620086] input: HID 413c:8161 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.1/2-1.6.1:1.0/input/input8
[ 3.620222] hid-generic 0003:413C:8161.0002: input,hidraw1: USB HID v1.11 Keyboard [HID 413c:8161] on usb-0000:00:1d.0-1.6.1/input0
[ 3.687480] usb 2-1.6.2: new full-speed USB device number 6 using ehci-pci
[ 3.777822] input: HID 413c:8162 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0/input/input9
[ 3.777977] hid-generic 0003:413C:8162.0003: input,hidraw2: USB HID v1.11 Mouse [HID 413c:8162] on usb-0000:00:1d.0-1.6.2/input0
[ 6.791593] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: (null)
[ 7.770413] systemd[1]: systemd 208 running in system mode. (+PAM -LIBWRAP -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ)
[ 7.798237] systemd[1]: Set hostname to <MyDellora>.
[ 8.906388] systemd[1]: Starting Forward Password Requests to Wall Directory Watch.
[ 8.906452] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 8.906465] systemd[1]: Starting Login Prompts.
[ 8.906476] systemd[1]: Reached target Login Prompts.
[ 8.906483] systemd[1]: Starting Remote File Systems.
[ 8.906491] systemd[1]: Reached target Remote File Systems.
[ 8.906499] systemd[1]: Starting Device-mapper event daemon FIFOs.
[ 8.906530] systemd[1]: Listening on Device-mapper event daemon FIFOs.
[ 8.906538] systemd[1]: Starting Delayed Shutdown Socket.
[ 8.906563] systemd[1]: Listening on Delayed Shutdown Socket.
[ 8.906571] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
[ 8.906588] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ 8.906595] systemd[1]: Starting LVM2 metadata daemon socket.
[ 8.906618] systemd[1]: Listening on LVM2 metadata daemon socket.
[ 8.906626] systemd[1]: Starting Encrypted Volumes.
[ 8.906634] systemd[1]: Reached target Encrypted Volumes.
[ 8.906666] systemd[1]: Starting Arbitrary Executable File Formats File System Automount Point.
[ 8.906771] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 8.906783] systemd[1]: Starting Journal Socket.
[ 8.906825] systemd[1]: Listening on Journal Socket.
[ 8.923805] systemd[1]: Starting Load Kernel Modules...
[ 8.940933] systemd[1]: Starting Apply Kernel Variables...
[ 8.941260] systemd[1]: Starting Setup Virtual Console...
[ 8.941566] systemd[1]: Mounting Debug File System...
[ 8.941964] systemd[1]: Mounting POSIX Message Queue File System...
[ 8.942263] systemd[1]: Mounting Huge Pages File System...
[ 8.942663] systemd[1]: Starting Journal Service...
[ 8.943150] systemd[1]: Started Journal Service.
[ 9.533948] systemd-journald[128]: Vacuuming done, freed 0 bytes
[ 10.753314] EXT4-fs (sda7): re-mounted. Opts: (null)
[ 10.860199] systemd-udevd[161]: starting version 208
[ 10.978562] systemd-journald[128]: Received request to flush runtime journal from PID 1
[ 12.670501] ACPI: Requesting acpi_cpufreq
[ 12.791154] ACPI: AC Adapter [AC] (on-line)
[ 13.046379] ACPI: Battery Slot [BAT0] (battery present)
[ 13.075713] thermal LNXTHERM:00: registered as thermal_zone0
[ 13.075718] ACPI: Thermal Zone [THM] (61 C)
[ 13.109004] wmi: Mapper loaded
[ 13.169313] snd_hda_intel 0000:00:1b.0: irq 46 for MSI/MSI-X
[ 13.267456] input: PC Speaker as /devices/platform/pcspkr/input/input10
[ 13.386188] microcode: CPU0 sig=0x20652, pf=0x10, revision=0x9
[ 13.535845] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input12
[ 13.668535] input: HDA Intel MID HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input15
[ 13.668663] input: HDA Intel MID Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input14
[ 13.668776] input: HDA Intel MID Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input13
[ 13.669369] mei_me 0000:00:16.0: setting latency timer to 64
[ 13.669426] mei_me 0000:00:16.0: irq 47 for MSI/MSI-X
[ 13.671461] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 13.671504] ACPI Warning: 0x0000000000000540-0x000000000000054f SystemIO conflicts with Region \_SB_.PCI0.SBRG.GPI1 1 (20130725/utaddress-251)
[ 13.671511] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[ 13.671513] ACPI Warning: 0x0000000000000530-0x000000000000053f SystemIO conflicts with Region \_SB_.PCI0.SBRG.GPI1 1 (20130725/utaddress-251)
[ 13.671517] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[ 13.671519] ACPI Warning: 0x0000000000000500-0x000000000000052f SystemIO conflicts with Region \_SB_.PCI0.SBRG.GPI1 1 (20130725/utaddress-251)
[ 13.671523] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[ 13.671524] lpc_ich: Resource conflict(s) found affecting gpio_ich
[ 13.671562] intel ips 0000:00:1f.6: CPU TDP doesn't match expected value (found 25, expected 29)
[ 13.671870] intel ips 0000:00:1f.6: IPS driver initialized, MCP temp limit 90
[ 13.672007] ACPI Warning: 0x000000000000f000-0x000000000000f01f SystemIO conflicts with Region \_SB_.PCI0.SMB_.SMBI 1 (20130725/utaddress-251)
[ 13.672014] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[ 13.726676] dcdbas dcdbas: Dell Systems Management Base Driver (version 5.6.0-3.2)
[ 13.796857] microcode: CPU1 sig=0x20652, pf=0x10, revision=0x9
[ 13.804028] microcode: CPU2 sig=0x20652, pf=0x10, revision=0x9
[ 13.804444] microcode: CPU3 sig=0x20652, pf=0x10, revision=0x9
[ 13.804899] microcode: Microcode Update Driver: v2.00 <[email protected]>, Peter Oruba
[ 13.871967] iTCO_vendor_support: vendor-support=0
[ 13.912022] input: Dell WMI hotkeys as /devices/virtual/input/input16
[ 14.205694] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.10
[ 14.205738] iTCO_wdt: Found a HM57 TCO device (Version=2, TCOBASE=0x0460)
[ 14.206640] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
[ 14.234179] bcma: bus0: Found chip with id 0x4313, rev 0x01 and package 0x08
[ 14.234212] bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x24, class 0x0)
[ 14.234237] bcma: bus0: Core 1 found: IEEE 802.11 (manuf 0x4BF, id 0x812, rev 0x18, class 0x0)
[ 14.234286] bcma: bus0: Core 2 found: PCIe (manuf 0x4BF, id 0x820, rev 0x11, class 0x0)
[ 14.246839] bcma: bus0: Bus registered
[ 14.434160] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[ 14.434457] r8169 0000:13:00.0: irq 48 for MSI/MSI-X
[ 14.434659] r8169 0000:13:00.0 eth0: RTL8102e at 0xffffc900212fe000, a4:ba:db:c8:85:03, XID 04e00000 IRQ 48
[ 14.725165] psmouse serio1: synaptics: Touchpad model: 1, fw: 7.2, id: 0x1c0b1, caps: 0xd04733/0xa40000/0xa0000, board id: 3655, fw id: 581785
[ 14.769986] systemd-udevd[180]: renamed network interface eth0 to enp19s0
[ 14.800096] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input11
[ 14.878089] kvm: VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL does not work properly. Using workaround
[ 15.153982] cfg80211: Calling CRDA to update world regulatory domain
[ 15.553384] Support for cores revisions 0x17 and 0x18 disabled by module param allhwsupport=0. Try b43.allhwsupport=1
[ 15.553458] b43: probe of bcma0:0 failed with error -524
[ 15.553508] Broadcom 43xx driver loaded [ Features: PMNLS ]
[ 15.951790] brcmsmac bcma0:0: mfg 4bf core 812 rev 24 class 0 irq 17
[ 15.998636] media: Linux media interface: v0.10
[ 16.075766] Linux video capture interface: v2.00
[ 16.159110] uvcvideo: Found UVC 1.00 device Laptop_Integrated_Webcam_1.3M (0c45:6461)
[ 16.184262] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[ 16.184588] ieee80211 phy0: registered radio enabled led device: brcmsmac-phy0:radio gpio: 243
[ 16.229297] input: Laptop_Integrated_Webcam_1.3M as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/1-1.6:1.0/input/input17
[ 16.229578] usbcore: registered new interface driver uvcvideo
[ 16.229581] USB Video Class driver (1.1.1)
[ 16.373654] systemd-udevd[172]: renamed network interface wlan0 to wlp18s0
[ 18.144304] Adding 2269180k swap on /dev/sda6. Priority:-1 extents:1 across:2269180k FS
[ 86.950402] fuse init (API version 7.22)
[ 277.029449] usb 2-1.2: new high-speed USB device number 7 using ehci-pci
[ 277.467071] NET: Registered protocol family 35
[ 277.472157] usbcore: registered new interface driver cdc_ether
[ 277.476281] usbcore: registered new interface driver cdc_phonet
[ 277.483771] usb 2-1.2: bad CDC descriptors
[ 277.484376] usbcore: registered new interface driver rndis_host
[ 277.496455] cdc_acm 2-1.2:1.4: ttyACM0: USB ACM device
[ 277.498229] usbcore: registered new interface driver cdc_acm
[ 277.498258] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 277.519452] usb 2-1.2: bad CDC descriptors
[ 277.519767] usbcore: registered new interface driver rndis_wlan
[ 288.768279] PPP generic driver version 2.4.2
[ 293.996611] PPP BSD Compression module registered
[ 294.129600] PPP Deflate Compression module registered
here is the critical chain output
systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.
graphical.target @15.633s
└─multi-user.target @15.633s
└─dkms.service @11.596s +4.037s
└─basic.target @11.593s
└─timers.target @11.592s
└─systemd-tmpfiles-clean.timer @11.545s
└─sysinit.target @11.543s
└─swap.target @11.494s
└─dev-disk-by\x2duuid-6ff023ec\x2d720b\x2d4c7a\x2d87ff\x2ddf5224b2
└─system.slice @2.016s
└─-.slice @2.015s
lines 1-14/14 (END)...skipping...
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.
graphical.target @15.633s
└─multi-user.target @15.633s
└─dkms.service @11.596s +4.037s
└─basic.target @11.593s
└─timers.target @11.592s
└─systemd-tmpfiles-clean.timer @11.545s
└─sysinit.target @11.543s
└─swap.target @11.494s
└─dev-disk-by\x2duuid-6ff023ec\x2d720b\x2d4c7a\x2d87ff\x2ddf5224b293c3.swap @10.524s +41ms
└─system.slice @2.016s
└─-.slice @2.015s
Last edited by Dinesh raja (2014-02-18 14:06:46) -
Arch Linux Newsletter for July 01, 2008, Discussion.
http://archlinux.org/static/newsletters … ul-07.html
Here we are going to discuss any questions, suggestions or random talk about the newsletter for June 04, 2008. Feel free to contribute with ideas and suggestions.
As always thanks for your support,
In the name of the Arch Linux Newsletter Team
Eduardo "kensai" RomeroMisfit138 wrote:
kensai wrote:
Dusty wrote:apparently people are more loyal to the Arch brand than the tux brand. :-D
Those people have not seen an angry penguin charging at them.
I most certainly am. Philosophically, I resent using the penguin kernel.
It's just that Arch is so damn good, it has spoiled me for anything else.
-->Same Here<--
The linux kernel can drive me crazy sometimes...
Hmmm, do you want to start ArchBSD Misfit? That is, FreeBSD + Pacman goodness + updated rc.conf?
I shouldn't have suggested that, I don't have the time to be a dev for anything right now. -
[GUIDE] How to get MapleStory working in Arch Linux
MapleStory is a free-of-charge, 2D, side-scrolling massively multiplayer online role-playing game developed by the South Korean company Wizet. Several versions of the game are available for specific countries or regions, and each is published by various companies such as Wizet and Nexon. Although playing the game is free, character appearances and gameplay enhancements can be purchased from the "Cash Shop" using real money. MapleStory has a combined total of over 50 million subscriber accounts in all of its versions. MapleStory North America (Global), for players mainly in North America and outside of East Asia, Southeast Asia and Europe, has over three million players.
In the game, players travel the "Maple World", defeating monsters and developing their characters' skills and abilities as is typical in role-playing games. Players can interact with others in many ways, such as through chatting, trading, and playing minigames. Groups of players can band together in parties to hunt monsters and share the rewards. Players can also join a guild to interact more easily with each other.
I am an avid mapler myself, however, I am also an avid archer! For some time, I have wanted to get MapleStory working on Arch Linux in some way, but nothing seemed to work. As you might have guessed by now, recently, while playing around with VirtualBox, I discovered a method to get MapleStory working on it! Though in this method you won't actually have MapleStory running on Arch Linux, you'll have it running on a VirtualBox Windows virtual machine, that is still pretty good compared to other people's experiences.
I hope there are at least a few maplers on this forum, and if there aren't, I hope that someone will port this post over to other Linux, or even MapleStory, forums. Anyways, let's begin.
1. Download and install a version of Virtual Box that is version 3.0+. The reason for this is that, only versions 3.0+ support an experimental DirectX Driver with 3D acceleration that is required for MapleStory to run.
2. Create a Windows Virtual Machine, add a hard disk to it, and install and update Windows on it(preferably Windows XP, as it uses less resources than other contemporary Windows installations).
3. Once you have done all you needed and wanted on that Windows installation, restart it, boot it into safe mode by holding F8 at the boot, and wait until the desktop is fully loaded.
4. After you are at the desktop, go to "Devices" at the top of the menu of the Windows virtual machine, and select "Install Guest Additions...". Wait until Guest Additions finishes installing, and when VirtualBox asks you if you want to mount the disk containing the Guest Additions on the virtual machine, say "Yes".
5. Run the main executable on the disk that doesn't have amd64 or x86 following its name. Follow the instructions it gives you, and when it asks you what components to install, make sure both of the boxes it shows you are checked.
6. After the install is completed, the virtual machine will restart. After it restarts, shut it down.
7. Congratulations! You now have DirectX installed on your VirtualBox virtual machine! Now you need to activate the "3D Acceleration", that enables it.
8. In the VirtualBox main window, make sure you have your machine with Windows selected. Then, click on "Machine", and then "Settings...", at the top. A new window should pop up. On the left hand side, click on the display panel, and in the new settings section, tick Enable 3D Acceleration. Click "OK", to save the settings.
9. Start your Windows virtual machine, install MapleStory just as you would on a normal windows computer, and run MapleStory.
Notes: This way of running MapleStory is slower than by running it normally, on a normal windows computer. Also, try to not interact with your Linux desktop while playing MapleStory, because this can cause HackShield to shut down MapleStory, due to the fact that it believes there is a hacking attempt.
If any of you port this guide to any other place on the web, please, credit me, neovaysburd5.
For any further questions or inquiries, this goes to all of you, please contact me at [email protected].
Last edited by neovaysburd5 (2009-08-19 16:51:31)Alright, I've posted it in the wiki. I don't know if it meets the Arch Linux wiki standards, so if there is absolutely anything wrong with it, please fix it right away. Don't even ask my permission.
http://wiki.archlinux.org/index.php/MapleStory -
[SOLVED]Arch Linux / UEFI / BTRFS using Grub2 & Windows 8 in a 2nd HDD
PROBLEM:
====================================================================================
Dear fellas
I just purchased an new HP TouchSmart 17.3" laptop that comes with Windows 8.1 pro (1 tb HDD + small SSD for cache only ) and still have space for one more HDD or SSD.
I Google a lot and read a lot but many questions emerged since seems that no one has the same scenario (maybe I pick the wrong choices) like me.
The problem is.. I didn't wish to re-install Windows 8.1 since it came with from factory.. so I purchased a 750 gb hdd and put it into the free slot to install Arch Linux in a different HDD.
As I am not familiar with UEFI what I did was to reorder the hdds. I just put the Windows HDD as second disk and the new disk (For Arch Linux) as primary and changed into Bios from UEFI to compatibility mode and installed Arch Linux into the primary one.
I reaaaally need help to add to grub the correct "path" to Windows 8.1 disk that came with UEFI..
Anyone could please help me?
Thanks in advance!
====================================================================================
SOLUTION:
A huge thanks to @TheSaint and other users for their help and assistance!
More sources:
http://www.kossboss.com/linux---arch-in … -grub-boot
https://www.youtube.com/watch?v=METZCp_JCec#t=146
https://bbs.archlinux.org/viewtopic.php … 1#p1390741
Step by Step Summary:
Use gdisk to create partitions on /dev/sda:
- 512MB - EF02 type partition (for EFI boot)
- 690GB - Linux partition for the BTRFS.
- Create an EF00 (ESP) with 512mb
- Create a Linux System partition with the rest of space
Make the FAT 32 system for EFI boot:
# mkfs.vfat -F32 /dev/sda1
Make the BTRFS partition. If it complains about existing filesystems just add a "-f":
# mkfs.btrfs -L arch -f /dev/sda2
We will make out a root subvolume for sda1, this will be a folder called root located at the root of sda2. The way we will design this is that When the system boots we will not see /root, we will be inside root. Inside root you will have all of your etc,sys,proc,whatever folders etc.
# mount /dev/sda2 /mnt
# cd /mnt
# btrfs subvolume create /mnt/root
This should show you your root
# btrfs subvolume list -a /mnt
Something like this: ID 256 gen 5 top level 5 path root
# cd /
# umount /dev/sda2
Now we will mount sda2 root subvolume as /mnt and we will dump the arch system into there with pacman. We will also enable compress to utilize btrfs compress feature.
# mount -o defaults,compress=lzo,subvol=root /dev/sda2 /mnt
NOTE: the command "mount" will not show which subvolume is mounted, to see how subvolumes are mounted you need to look inside proc (cat /proc/self/mountinfo):
# cat /proc/self/mountinfo | egrep sda2
The line for the mount of sda2 looks like this:
43 21 0:34 /root /mnt rw,relatime shared:30 - btrfs /dev/sda2 rw,compress=zlib,ssd,space_cache
We can see that the subvolume /root is mounted to /mnt from the device /dev/sda3
Notice how with regular mount command its missing:
# mount | egrep sda2
/dev/sda3 on /mnt type btrfs (rw,relatime,compress=zlib,ssd,space_cache)
Pacman will dump stuff into a boot folder, so we better mount our sda1 EFI boot partition to it. Or else all of the boot stuff will go to sda3 instead of sda1:
# cd /
# pacstrap -i /mnt base base-devel
Let us create the directory and mount the EFI partition
# cd /mnt
# mkdir -p /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
Let us generate the FSTAB:
# genfstab -p /mnt >> /mnt/etc/fstab
Let us chroot into the arch installation:
# arch-chroot /mnt /bin/bash
Change password:
# passwd
Then pick the right one like this and associate it with a link to /etc/localtime
# ln -s /usr/share/zoneinfo/US/Pacific /etc/localtime
Let us generate the initial RAM disk
# mkinitcpio -p linux
Let us setup the bootloader (GRUB)
# pacman -Syu grub efibootmgr
Let us generate the grub configuration
# grub-mkconfig -o /boot/grub/grub.cfg
Let us install grub into the HDD
# grub-install /dev/sda
# umount -R /mnt
# umount /mnt
# reboot
From this step you can go straight and forward with the https://wiki.archlinux.org/index.php/Beginners%27_guide
Last edited by erickwill (2014-11-21 20:41:06)TheSaint wrote:As UEFI BIOS is a boot loader itself. You should make on each HDD an ESP.
When you want to start win8 you go to BIOS and chose its entry, so will do for Arch the same.
For this way I suggest you write to boot the kernel directly from the BIOS. It just take some reading on this topic
Other option you set on you second ESP the boot loader of your liking and it will try to find win8 partition.
Thanks for your reply.
For the second option, may I use the compatibility mode and install the booloader into the first partition along with Arch?
Or in case the first option is still the better option, could you pleaaaase give me some directions from the scratch? Do you have Google Hangout?
Thanks in advance.
Last edited by erickwill (2014-11-18 19:54:26) -
[SOLVED] Arch Linux on Macbook - Can't fix Screen Resolution
I just installed Arch Linux as a dual-boot on my Macbook. I really like it so far. However, I came across a problem that is really bothering me. It may seem simple, but no matter what I try, I only get "1024x768" and "800x600" resolution options. What I need is "1280x800." Here is my xorg.conf file right now:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/100dpi:unscaled"
FontPath "/usr/share/fonts/75dpi:unscaled"
FontPath "/usr/share/fonts/TTF"
FontPath "/usr/share/fonts/Type1"
EndSection
Section "Module"
Load "glx"
Load "dri2"
Load "extmod"
Load "dbe"
Load "dri"
Load "record"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Device"
### Available Driver options are:-
### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
### [arg]: arg optional
#Option "ShadowFB" # [<bool>]
#Option "DefaultRefresh" # [<bool>]
#Option "ModeSetClearScreen" # [<bool>]
Identifier "Card0"
Driver "vesa"
VendorName "Intel Corporation"
BoardName "Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Modes "1280x800"
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Modes "1280x800"
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Modes "1280x800"
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Modes "1280x800"
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Modes "1280x800"
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Modes "1280x800"
Depth 24
EndSubSection
EndSection
I just followed the instruction on the Arch Linux - Macbook Wiki page, and everything worked perfectly, except the resolution question. The only thing I added to the file is the 'Modes "1280x800"' lines. This is exactly what I've always done with linux, and it has always worked. So I'm perplexed, and I can't find any solutions that actually work by googling it. Has anyone else come across this problem, and even more important, does anyone know what is wrong?
Thanks.
Last edited by meolson (2009-09-23 04:44:23)Ok. I figured it out. I found this forum:
http://bbs.archlinux.org/viewtopic.php?id=56899
I found it before, but I had done everything, or so I thought. At the end, he mentions two things that are important to fix the resolution. I've repeated them here, and adapted them to what I had before:
pacman -S xf86-video-intel
edit /etc/X11/xorg.conf, and change video card driver from 'vesa' to 'intel'
I thought I had installed xf86-video-intel already, but apparently I hadn't. So, I followed those two steps, and now, it looks so much better! Thanks to anyone who tried to looked for a solution. -
Progress on Unity under Arch Linux!
See here for information about the new GNOME 3.12-compatible packages: https://bbs.archlinux.org/viewtopic.php … 3#p1404683
I'm now on IRC! Come join us at #unityforarch on Freenode
To install Unity from my repos:
See the wiki: https://wiki.archlinux.org/index.php/un … mmended.29
To install Unity from source:
See the wiki: https://wiki.archlinux.org/index.php/unity#From_source
-- You probably don't want to read anything below --
The story
So...rather than wasting internet bandwith to download a new Ubuntu ISO to test out the new Unity features, I decided to try to make it work under Arch Linux. It took a whole lot longer than I expected to get it even partially working. So, here's my story:
Knowing that Unity isn't in the main repositories, I went the AUR's website and looked for a user created Unity package. That didn't go too well. The Unity package hasn't been updated for 6 months. D'oh! I decided to download the existing PKGBUILD and modify it to work with the Unity 4.xx series. After changing the version number, I tried to "makepkg" it, and was greeted with a message about installing Compiz 0.9.x. I thought it would be an easy install. It was quite the opposite. Compiz's install prefix was set to /opt/unity, but FindCompiz cmake build file expected Compiz to be in /usr, so none of the Compiz packages, except for compiz-core would compile. Then, I tried reinstalling compiz-core, but this time, changing the prefix to /usr. The compiled package ended up being only a few kilobytes big. I guess the mouse wheel was invented for a reason. I looked at the PKGBUILD again, only to find that there was a line at the very bottom that ran "rm -rf ${pkgdir}/usr". That explains a lot! I ended up adopting all the compiz*-git packages and fixing them so they would compile and install.
So, now that Compiz is working (restarted and tested just to make sure I didn't waste my time with something that didn't work), I went on to install the rest of the dependencies listed in the Unity PKGBUILD file. That went relatively well. I was so happy after seeing the progress counter go up after running "makepkg", but at about 8%, gcc spat out an error about an undeclared function (sorry, I forgot what the function was). Natually, I went to Google and searched the name of the function. 0 results! Exactly was I was looking for! I ended up downloading the Ubuntu 11.10 Alpha 3 ISO and running "find -type f /usr/lib | xargs objdump -T | grep the_function". The problem lied in the libindicator package. There was a newer version available which contained that function. I have no idea why a package that's only 0.02 versions ahead of the AUR package would contain new functions...
Next! Utouch...ugh...great memories! Not! I was so glad that I had fixed the utouch packages earlier (for touchegg to work). I was too frustrated from compiz and libindicator to try to compile more stuff.
Cmake. Whoever created the CMakeLists.txt file didn't list all the dependencies required. So after running "makepkg" 10 billion times, waiting for "somebodydidntputthisincmake.h not found" errors to appear, I finally got all the dependencies I needed installed...or so I thought. After installing and compiling all these dependencies, the cmake only continues 3% further before encountering another cryptic gcc error. This time, there no error about a file not being found. So not knowing what dependency was missing, I headed over to http://packages.ubuntu.com and downloaded the Unity DEB source to find the dependencies in then debian/control file. After install those few dependencies that I missed, I ran "makepkg" again, hoping that it would finally compile successfully. CMake went a little further--5% further to be exact--before running into another error. It complained about DndSourceDragBegin() having two return types. Sure, enough "./plugins/unityshell/src/ResultViewGrid.h" had the return type as boolean and "/usr/include/Nux-1.0/Nux/InputArea.h" had the return type as void. WTF? How the heck does this even compile under 11.10???
After changing void to bool in "/usr/include/Nux-1.0/Nux/InputArea.h", I ran "makepkg" once again anxiously waiting to the see the line "Finished making: unity 4.10.2". CMake compiled about 35% before running into error about an undeclared gtk function. Nooooooooooooo!!! I wasn't brave enough to install the git version of gtk3, so I created a chroot, installed the base packages, and installed all of those dependencies fairly quickly (it gets a lot easier after doing it so many times).
Moving on to gtk3. After cloning the ~200MB git repository, autotools spits out an error about cairo-gl missing. So, I proceeded to install the cairo-gl-git package, which failed to compile (it compiled successfully outside of the chroot...). GREAT. So, Unity fails to compile because GTK version is too old, and GTK failed to compile because cairo-gl is missing, and cairo-gl fails to compile because I'm in a chroot. GAHHH!!! While thinking about throwing the computer out of the window, I searched the AUR for other GTK3 packages. I just happened to find a package named "GTK3-UBUNTU"! That package was still at version 3.0, but it was pretty easy to get the patches and source code for 3.1 from the Ubuntu GTK source package.
So, FINALLY, Unity compiles. I was so darn happy, I didn't even care if it ran or not. I logged out and logged back into the GNOME 3 fallback mode, and entered the chroot. After running "xhost +SI:localuser:chenxiaolong" to run X11 apps in the chroot, I crossed my fingers and ran "DISPLAY=:0.0 unity --replace". It failed with python 3 complaining about missing modules. That's okay, since the Unity launch script is written in python 2. I changed the shebang line in "/usr/bin/unity" to point to python 2 and ran "DISPLAY=:0.0 unity --replace". It didn't necessarily fail, but it didn't succeed either. It didn't print out any error messages. Weird... I thought I'd try enabling Unity from the compiz settings manager then. I ran "DISPLAY=:0.0 compiz --replace" and "DISPLAY=:0.0 ccsm" and enabled the Unity plugin. Unity runs! Although nothing shows on the screen, it runs! It shows up in the process list! Woohoo!
And that's about how far I got. There were quite a few Vala errors during the compiling process (I forgot which package it was), which is probably why Unity won't appear. I'll try again later with the vala-devel or vala-git package and hopefully Unity will work then. Here are screenshots of what I've gotten working so far:
http://i.imgur.com/7F1fm.jpg
http://i.imgur.com/zGNJc.jpg
http://i.imgur.com/3mCgd.jpg
By then way, I love the simplicity of pacman and the AUR. I can't imagine how long this would have taken with other package managers.
Moderator edit: Do not place large images in line. If you want, you may embed links to thumbnails inside url tags.
Last edited by chenxiaolong (2014-04-15 17:11:04)City-busz: I'm getting a ton of Vala errors when I compile libunity (AUR version) with vala or vala-devel. libunity fails to compile with vala-git. I'll try your packages in a virtual machine and see how they work on 64 bit.
In the meantime, Unity still fails to show up: http://i.imgur.com/btPwo.png I'll try out your PKGBUILDS and see how that works. I'm glad there are people who want to port Unity to Arch Linux
EDIT: City-busz: Just to let you know, Unity will fail to compile at around 45% with GTK 3.0. Here's my source packaage for Ubuntu's GTK 3.1: http://ubuntuone.com/p/1EzX/ It contains all of the patches in the Ubuntu source package. I'm not sure if all the patches are needed, but GTK compiles fine with all of them.
EDIT2: Right now, I'm trying to compile Vala 0.10.4, then version used in Ubuntu 11.10. Hopefully that will eliminate some of the Vala errors.
EDIT3: Vala 0.10 is too old. 0.12 and 0.14 are also in the Ubuntu repository. Trying those...
EDIT4: 0.14 is actually 0.13.1. Gah... Vala takes longer to compile under VirtualBox than GTK3...
EDIT5: Okay...so VirtualBox "helpfully" became slow enough that I could read the error messages. The Vala error messages aren't actually error messages, but rather warnings about unused methods. I wonder what prevents Unity from running then...
Last edited by chenxiaolong (2011-08-30 02:30:29) -
HOWTO: Repairing a headless Arch Linux system that fails to boot
The scenario...
I have a "headless" (no monitor or input peripherals) Arch Linux computer that is connected to a local network via a wireless adapter, and accessed from other computers via SSH.
Earlier today I accidentally broke its kernel so it did not boot anymore.
Idea: Temporarily connect a monitor to the computer, boot from a live CD (like the Arch Linux install CD), then chroot into the system and fix it.
Problem: I didn't have a compatible monitor at hand.
Idea: Log in to the live CD session from another computer via SSH.
Problem: The live CD can't auto-configure the headless computer's wireless connection, and setting it up manually while working "blind" would be a major hassle. A direct LAN connection to the router wasn't available either.
Idea: Connect directly with a laptop via an Ethernet cable, and then use SSH from the laptop => This solution worked for me!
If you find yourself in a similar situation, you can follow this tutorial which describes the solution that worked for me in detail...
You need:
a copy of the Arch Linux install CD (I used the 2013-05-01 version)
an Ethernet cable
a keyboard (might be dispensable, with additional preparation)
a functional Arch Linux laptop (or other computer within physical range)
Step 1) Prepare the live CD...
I used the plain Arch Linux install iso, burnt to CD.
By creating a carefully customized version of the live CD using Archiso, you might be able to eliminate the need for steps 2 and 4 - however that's not covered in this tutorial.
Step 2) Prepare the laptop...
The laptop needs to be configured in such a way, that the live CD's attempt to automatically establish an Ethernet connection with it will succeed:
a) IP address
In my case, the Laptop's wireless adapter had an IP address in the range 192.168.1.*, connecting it to the local network and Internet via the central router 192.168.1.1.
The Ethernet connection between the laptop and the headless computer becomes a separate mini-network, for which I decided to use IP addresses in the range 192.168.0.* (note the different third number). Specifically, I set the IP address of my laptop's Ethernet card to 192.168.0.1. You can do this by running the following as root (replace "eth0" with the name of your Ethernet interface):
ip link set eth0 up
ip addr add 192.168.0.1/24 dev eth0
b) IP forwarding (optional)
While we're at it, we might as well enable IP forwarding, so that the live CD session on the headless computer will be able to directly use the laptop's outgoing Internet connection (which will make it much more convenient to install/upgrade packages during the repair session). To enable this, run the following as root (replace "eth0" and "wlan0" with the names of your laptop's Ethernet and wireless interfaces, respectively):
iptables --table nat --append POSTROUTING --out-interface wlan0 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
c) DHCP
The live CD will assume there's a router on the other side of the Ethernet link, and ask for an IP address via DHCP. So all we need to do, is run a dhcp server on the Laptop that will answer this request. It's surprisingly easy: Just install the package dnsmasq, and put the following in the file /etc/dnsmasq.conf (again replacing "eth0" as appropriate):
interface=eth0
dhcp-range=192.168.0.2,192.168.0.2
By setting the start & end values of dhcp-range to the same IP address, we enforce that this specific IP address will be used by the live CD on the headless computer.
Then start the daemon by running the following as root:
systemctl start dnsmasq.service
Step 3) Connect everything and boot up the live CD...
Connect the laptop and the headless computer via the Ethernet cable.
Connect the external keyboard to the headless computer.
Then put the Arch Linux install CD into the headless computer's drive, and boot. Wait a minute or so to give the CD time to load its boot menu (you should hear the CD drive spin up and settle down again). Then hit ENTER on the connected keyboard, to activate the default menu choice (which will boot straight to a live Arch Linux session with root privileges).
You can check whether it booted up and successfully initialized the Ethernet connection, by ping'ing the IP address that was specified in step 2c) from the laptop:
ping -c3 192.168.0.2
Step 4) Start the SSH server...
Unfortunately, the Arch Linux install CD doesn't automatically start its SSH server, and also it uses a randomized root password. To make SSH connections possible, you will have to use the connected keyboard to type in some stuff "blindly" (but it's simple enough):
type "passwd" (without the quotes)
type in a new password of your choice
press ENTER
type in the same password again
press ENTER
type "systemctl start sshd" (without the quotes)
press ENTER
Step 5) Connect from the laptop via SSH...
Now you can open an SSH connection, by executing the following on the laptop (when it asks for the password, enter the one you chose in step 4):
ssh [email protected]
Step 6) Profit!
Within this SSH shell on the laptop, you can now do whatever you would usually do to fix an Arch Linux system from a live CD.
You'll probably want to chroot into your Arch root partition, which is very easy thanks to the arch-chroot tool that is included on the live CD (replace "/dev/sda3" with the name of the headless computer's root partition):
mount /dev/sda3 /mnt
arch-chroot /mnt
If you set up IP forwarding as described in step 2b), then Internet access should magically work in this shell without any further configuration, so you can freely use pacman etc. inside the chroot.
Enjoy!
Last edited by sas (2013-07-26 22:17:03)It is definitely able to recognize the USB and DVDs as separate drives; it gives the option of booting from USB, and it gives the memory capacity of the USB drive I used as a live USB, and the memory used for the live CD. But when it comes time to actually boot, something is going wrong.
I would suspect it is a problem with the BIOS, if not for the fact that I had a similar issue on my previous system, which used a completely different motherboard. If it is the same issue, it would either have to be a problem with the DVD drive (although I don't know why it would be against loading some live CDs but not others) or perhaps the way I created the live CDs. Although, again, I don't understand why the Linux Mint 32-bit DVD would work fine, while both 64-bit DVDs would not.
I will try using a different DVD drive to boot the DVDs, and if that does not work, I'll try creating a new Arch live CD to see if I can resolve the issue. But if anyone has any ideas, it would still be greatly appreciated. -
Debtap - A script to convert .deb packages to Arch Linux packages
I wrote this script in my free time to help people who, for any reason, want to convert a .deb to an Arch Linux package. It works in a similar way with alien (which converts .deb packages to .rpm packages and vice versa), but, unlike alien, it is focused on accuracy of conversion, trying to translate Debian/Ubuntu packages names to the correct Arch Linux packages names and store them in the dependencies fields of the .PKGINFO metadata in the final package. In other words, it won't only create an Arch package with the data of the original .deb package, but also it will try to create a valid and as accurate as possible .PKGINFO metadata file in the converted package. It uses pkgfile and pacman utilities to achieve this accuracy. The final package can be installed like any local Arch Linux package. Debtap is now available on AUR!
FAQ
Q: What "debtap" stands for?
A: DEB To Arch (Linux) Package
Q: Isn't better to download an official package or write a PKGBUILD in case I need to compile a package or convert a .deb package to an Arch Linux package?
A: Sure it is, and I truely encourage you to do so. Debtap was written to create packages that either cannot be compiled (closed source packages) or cannot be built from AUR for various reasons (error during compiling or unavailable files), as a quick 'n' dirty solution and an extra option for creating Arch Linux packages for Arch Linux users.
Q: So debtap will help me only in case I need to convert specific .deb packages to Arch Linux packages?
A: No. In case you need to write a new PKGBUILD for a package that already exists in the Debian/Ubuntu distributions, by converting its .deb package to Arch package with debtap, thanks to the packages names translator function inside the script, it can help you determine which dependencies are needed for the package you write the PKGBUILD for and complete the necessary fields.
Q: What are the minimum requirements to run this script?
A: You need to have installed these dependencies: bash, binutils (provides ar utility for extracting .deb package), pkgfile, and fakeroot. You must run at least once (preferably recently) "debtap -u" to create/update pkgfile and debtap database (you do this with root privileges).
Q: Debtap needs a lot of time to convert a package. So, why this is happening?
A: Like I said, debtap is focused on accuracy. It won't just unpack a .deb package and then repackage its data to an Arch Linux package, ignoring metadata. Depending on the speed of your processor and the package itself, conversion can take from a few seconds to several minutes.
Q: During conversion I get several warning messages, why?
A: Debtap cannot be 100% accurate for several reasons, the main reason for this is the complexity of packages names. If you want to check the freshly generated .PKGINFO and .INSTALL (this is optional file) metadata files or even fix the untranslated packages names inside .PKGINFO, debtap offers you the option to edit these files before compressing the final package.
Q: How do I use debtap?
A: The syntax is quite simple actually: debtap [option] package_filename
For example: debtap world-of-goo-demo_1.0_i386.deb
Any recommendations or questions for debtap are welcomed!
Last edited by helix (2015-05-21 22:54:17)Hi helix. I've had trouble trying to use your script with ubuntu software from The Open University
debtap OpenUniversity-ubuntu-0.1.3.20130104.deb
==> Extracting package data...
==> Fixing possible directories structure differencies...
==> Generating .PKGINFO file...
debtap OpenUniversity-ubuntu-0.1.3.20130104.deb
==> Extracting package data...
==> Fixing possible directories structure differencies...
==> Generating .PKGINFO file...
:: Enter Packager name:
NewPepper2013
:: Enter package license (you can enter multiple licenses comma seperated):
closed
:: If you want to edit .PKGINFO file, press (1) For vi (2) For nano (3) For a cu stom editor or any other key to continue:
==> Generating .MTREE file...
==> Creating final package...
xz: unrecognized option '--1-any.pkg.tar'
xz: Try `xz --help' for more information.
mv: cannot stat â*.xzâ: No such file or directory
==> Removing leftover files...
==> Package successfully created!
The software is called NewPepper 2013 but i've not been able to find it online except on the ou website. -
[Bounty] Free Macbook Pro to get Arch Linux running on Amazon's EC2
First, the details:
I will purchase a lowest–end Macbook Pro 13″ ($US 1,200 on Apple's store, new) for the first person to deliver to me a working set of step–by–step instructions for installing the latest Arch Linux on top of Amazon's EC2 platform.
Caveats & Rules:
- I don't care how long it takes you—there's a good chance I'm doing something absolutely stupid in my noobishness that's causing the problems I've been experiencing; if it takes you half an hour to make a working AMI, and produce instructions to do such… you just won yourself a Macbook Pro for half an hour's work. Booyah!
- Again, I say, I don't care how long it takes you—if you don't produce a working set of instructions, there will be no payout, even if you spend 200 hours trying (as I already have!). It's a bounty, not a work contract d-:
- You must provide me with instructions that work for me (as I don't intend to use your AMI, but rather modify the steps that worked for you a bit at a time until I arrive at an AMI configured exactly as I want it). If you arrive at a working AMI, and can reproduce your steps successfully locally, but they can't be made to work for me, I may be able to go about procuring alternative hardware for myself on which to preform the steps, or taking other measures to reproduce your environment; but the bottom line is I will not shell out until I can, personally, produce a working AMI running Arch Linux.
- The instructions are considered to be "working" when I can successfully SSH into the root account on an instance instantiated from an AMI created by following the instructions using the key generated by EC2.
- Your instructions must work both for x86_32 and x86_64 instance types; however, this shouldn't be too much of a problem, as (barring any weirdness) anything that works on x86_32 should be easily made to work on x86_64.
- Instructions that involve instantiating an intermediate bundling host (say, a CentOS or Fedora Core instance) and then installing Arch to a loopback filesystem using a statically–built pacman are much preferred to instructions that involve me having to install and package Arch locally and then ship it up to S3, because my upstream is unimaginably slow and I eventually will need to create something between eight and twenty different AMIs (see below). But anything that works will be accepted.
- If you don't want a Macbook Pro, alternative payment methods may be arranged, though you need to contact me before you start and arrange these, as there's only so much I can do.
- If you are in any way confused or unsure of what I'm offering here, please contact me before you start (see below for contact info)
Backstory:
I set up the first AMI for Arch Linux on Amazon, but unfortunately, I did some really stupid things (hey, I was completely new to Linux at the time, gimmie a break!). The root filesystem was limited to 1GB, there was a whole bunch of software that really was completely unnecessary (WiFi drivers? on a virtualized server? seriously?), there were no kernel modules provided… and so on.
So, after running all my stuff on instances of that for a while, I finally got fed up and found the time to start setting up a newer, cleaner AMI. Unfortunately, I made the mistake of deleting my old AMI before starting work on the first. Now I find myself completely unable to create an AMI that will work whatsoever, and I cannot for the life of me figure out why.
I've already invested 200 or so hours of my personal time since deleting my original, broken AMI; I'm very fed up and in badly need of working instances. I tried every method I could think of; running the Arch installer from a LiveCD locally and then bundling the running (and thus proved working) Arch install and shipping it off to S3; installing Arch on a loopback filesystem locally, cloning it to a local partition, booting to it to ensure it works, and shipping it off to S3; installing Arch on a loopback filesystem on a remote bundling host running CentOS or whatever and then shipping it off to S3… I've tried installing nothing but the essentials, I've tried installing everything the installer offers… I've tried to do my best to remember the exact steps I took the first time around, years ago, and reproduce them exactly… nothing has worked.
If I take EC2 out of the equation, and install the images I've prepared locally, they work. If I take Arch out of the equation, and install, say, CentOS instead, and then ship it off to EC2, it works. The only time I have problems is when I attempt to install Arch Linux specifically on EC2 specifically; the exact use–case I need.
I've run into a lot of problems along the way, and fixed them as I go, but I universally end up with an AMI that, once instantiated, does not successfully boot. Worse yet, I get absolutely no output from the console (provided by the ec2-get-console command–line tool) to help me debug the problem. I can't give you any more specifics beyond this to help you, because I don't want to insinuate some idea that will cause you to make some little stupid mistake that I also made, thus dooming the project.
Contact:
For more info of any sort, please hit me up on Google Talk or Jabber (… or any other XMPP–federated chat service, or AIM, or ICQ, or MSN, or whatever you like, they all use the same address anyway) at the following address:
[email protected]
Edit: I should point out that it would be good form to post here if you're going to make a stab at it, so interested parties know how many people are already making attempts.
Last edited by elliottcable (2009-07-25 03:59:46)drtoki wrote:
http://blog.mudy.info/2009/04/archlinux-ec2-public-ami/
lolwat
from fryguy
Public AMIs aren't what I need, because I need to mass–produce quite a few AMIs with different custom configurations for different purposes; so I have to be able to start from scratch and arrive at a working AMI *myself*.
As for the script, I'm sitting down to play with it now; it looks just about exactly like what I've been doing so far. Maybe there's some small thing he did differently that will make it work. Here's hoping it works for me; that'll be a real load off my chest. -
System encryption using LUKS and GPG encrypted keys for arch linux
Update: As of 2012-03-28, arch changed from gnupg 1.4 to 2.x which uses pinentry for the password dialog. The "etwo" hook described here doesn't work with gnupg 2. Either use the openssl hook below or use a statically compiled version of gnupg 1.4.
Update: As of 2012-12-19, the mkinitcpio is not called during boot, unless the "install" file for the hook contains "add_runscript". This resulted in an unbootable system for me. Also, the method name was changed from install () to build ().
Update: 2013-01-13: Updated the hook files using the corrections by Deth.
Note: This guide is a bit dated now, in particular the arch installation might be different now. But essentially, the approach stays the same. Please also take a look at the posts further down, specifically the alternative hooks that use openssl.
I always wanted to set up a fully encrypted arch linux server that uses gpg encrypted keyfiles on an external usb stick and luks for root filesystem encryption. I already did it once in gentoo using this guide. For arch, I had to play alot with initcpio hooks and after one day of experimentation, I finally got it working. I wrote a little guide for myself which I'm going to share here for anyone that might be interested. There might be better or easier ways, like I said this is just how I did it. I hope it might help someone else. Constructive feedback is always welcome
Intro
Using arch linux mkinitcpio's encrypt hook, one can easily use encrypted root partitions with LUKS. It's also possible to use key files stored on an external drive, like an usb stick. However, if someone steals your usb stick, he can just copy the key and potentially access the system. I wanted to have a little extra security by additionally encrypting the key file with gpg using a symmetric cipher and a passphrase.
Since the encrypt hook doesn't support this scenario, I created a modifed hook called “etwo” (silly name I know, it was the first thing that came to my mind). It will simply look if the key file has the extension .gpg and, if yes, use gpg to decrypt it, then pipe the result into cryptsetup.
Conventions
In this short guide, I use the following disk/partition names:
/dev/sda: is the hard disk that will contain an encrypted swap (/dev/sda1), /var (/dev/sda2) and root (/dev/sda3) partition.
/dev/sdb is the usb stick that will contain the gpg encrypted luks keys, the kernel and grub. It will have one partition /dev/sdb1 formatted with ext2.
/dev/mapper/root, /dev/mapper/swap and /dev/mapper/var will be the encrypted devices.
Credits
Thanks to the authors of SECURITY_System_Encryption_DM-Crypt_with_LUKS (gentoo wiki), System Encryption with LUKS (arch wiki), mkinitcpio (arch wiki) and Early Userspace in Arch Linux (/dev/brain0 blog)!
Guide
1. Boot the arch live cd
I had to use a newer testing version, because the 2010.05 cd came with a broken gpg. You can download one here: http://releng.archlinux.org/isos/. I chose the “core“ version. Go ahead and boot the live cd, but don't start the setup yet.
2. Set keymap
Use km to set your keymap. This is important for non-qwerty keyboards to avoid suprises with passphrases...
3. Wipe your discs
ATTENTION: this will DELETE everything on /dev/sda and /dev/sdb forever! Do not blame me for any lost data!
Before encrypting the hard disc, it has to be completely wiped and overwritten with random data. I used shred for this. Others use badblocks or dd with /dev/urandom. Either way, this will take a long time, depending on the size of your disc. I also wiped my usb stick just to be sure.
shred -v /dev/sda
shred -v /dev/sdb
4. Partitioning
Fire up fdisk and create the following partitions:
/dev/sda1, type linux swap.
/dev/sda2: type linux
/dev/sda3: type linux
/dev/sdb1, type linux
Of course you can choose a different layout, this is just how I did it. Keep in mind that only the root filesystem will be decrypted by the initcpio. The rest will be decypted during normal init boot using /etc/crypttab, the keys being somewhere on the root filesystem.
5. Format and mount the usb stick
Create an ext2 filesystem on /dev/sdb1:
mkfs.ext2 /dev/sdb1
mkdir /root/usb
mount /dev/sdb1 /root/usb
cd /root/usb # this will be our working directory for now.
Do not mount anything to /mnt, because the arch installer will use that directory later to mount the encrypted root filesystem.
6. Configure the network (if not already done automatically)
ifconfig eth0 192.168.0.2 netmask 255.255.255.0
route add default gw 192.168.0.1
echo "nameserver 192.168.0.1" >> /etc/resolv.conf
(this is just an example, your mileage may vary)
7. Install gnupg
pacman -Sy
pacman -S gnupg
Verify that gnupg works by launching gpg.
8. Create the keys
Just to be sure, make sure swap is off:
cat /proc/swaps
should return no entries.
Create gpg encrypted keys (remember, we're still in our working dir /root/usb):
dd if=/dev/urandom bs=512 count=4 | gpg -v --cipher-algo aes256 --digest-algo sha512 -c -a > root.gpg
dd if=/dev/urandom bs=512 count=4 | gpg -v --cipher-algo aes256 --digest-algo sha512 -c -a > var.gpg
Choose a strong password!!
Don't do this in two steps, e.g don't do dd to a file and then gpg on that file. The key should never be stored in plain text on an unencrypted device, except if that device is wiped on system restart (ramfs)!
Note that the default cipher for gpg is cast5, I just chose to use a different one.
9. Create the encrypted devices with cryptsetup
Create encrypted swap:
cryptsetup -c aes-cbc-essiv:sha256 -s 256 -h whirlpool -d /dev/urandom create swap /dev/sda1
You should see /dev/mapper/swap now. Don't format nor turn it on for now. This will be done by the arch installer.
Important: From the Cryptsetup 1.1.2 Release notes:
Cryptsetup can accept passphrase on stdin (standard input). Handling of new line (\n) character is defined by input specification:
if keyfile is specified as "-" (using --key-file=- or by positional argument in luksFormat and luksAddKey, like cat file | cryptsetup --key-file=- <action> ), input is processed
as normal binary file and no new line is interpreted.
if there is no key file specification (with default input from stdin pipe like echo passphrase | cryptsetup <action> ) input is processed as input from terminal, reading will
stop after new line is detected.
If I understand this correctly, since the randomly generated key can contain a newline early on, piping the key into cryptsetup without specifying --key-file=- could result in a big part of the key to be ignored by cryptsetup. Example: if the random key was "foo\nandsomemorebaratheendofthekey", piping it directly into cryptsetup without --key-file=- would result in cryptsetup using only "foo" as key which would have big security implications. We should therefor ALWAYS pipe the key into cryptsetup using --key-file=- which ignores newlines.
gpg -q -d root.gpg 2>/dev/null | cryptsetup -v -–key-file=- -c aes-cbc-essiv:sha256 -s 256 -h whirlpool luksFormat /dev/sda3
gpg -q -d var.gpg 2>/dev/null | cryptsetup -v –-key-file=- -c aes-cbc-essiv:sha256 -s 256 -h whirlpool -v luksFormat /dev/sda2
Check for any errors.
10. Open the luks devices
gpg -d root.gpg 2>/dev/null | cryptsetup -v –-key-file=- luksOpen /dev/sda3 root
gpg -d var.gpg 2>/dev/null | cryptsetup -v –-key-file=- luksOpen /dev/sda2 var
If you see /dev/mapper/root and /dev/mapper/var now, everything is ok.
11. Start the installer /arch/setup
Follow steps 1 to 3.
At step 4 (Prepare hard drive(s), select “3 – Manually Configure block devices, filesystems and mountpoints. Choose /dev/sdb1 (the usb stick) as /boot, /dev/mapper/swap for swap, /dev/mapper/root for / and /dev/mapper/var for /var.
Format all drives (choose “yes” when asked “do you want to have this filesystem (re)created”) EXCEPT for /dev/sdb1, choose “no”. Choose the correct filesystem for /dev/sdb1, ext2 in my case. Use swap for /dev/mapper/swap. For the rest, I chose ext4.
Select DONE to start formatting.
At step 5 (Select packages), select grub as boot loader. Select the base group. Add mkinitcpio.
Start step 6 (Install packages).
Go to step 7 (Configure System).
By sure to set the correct KEYMAP, LOCALE and TIMEZONE in /etc/rc.conf.
Edit /etc/fstab:
/dev/mapper/root / ext4 defaults 0 1
/dev/mapper/swap swap swap defaults 0 0
/dev/mapper/var /var ext4 defaults 0 1
# /dev/sdb1 /boot ext2 defaults 0 1
Configure the rest normally. When you're done, setup will launch mkinitcpio. We'll manually launch this again later.
Go to step 8 (install boot loader).
Be sure to change the kernel line in menu.lst:
kernel /vmlinuz26 root=/dev/mapper/root cryptdevice=/dev/sda3:root cryptkey=/dev/sdb1:ext2:/root.gpg
Don't forget the :root suffix in cryptdevice!
Also, my root line was set to (hd1,0). Had to change that to
root (hd0,0)
Install grub to /dev/sdb (the usb stick).
Now, we can exit the installer.
12. Install mkinitcpio with the etwo hook.
Create /mnt/lib/initcpio/hooks/etwo:
#!/usr/bin/ash
run_hook() {
/sbin/modprobe -a -q dm-crypt >/dev/null 2>&1
if [ -e "/sys/class/misc/device-mapper" ]; then
if [ ! -e "/dev/mapper/control" ]; then
/bin/mknod "/dev/mapper/control" c $(cat /sys/class/misc/device-mapper/dev | sed 's|:| |')
fi
[ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
# Get keyfile if specified
ckeyfile="/crypto_keyfile"
usegpg="n"
if [ "x${cryptkey}" != "x" ]; then
ckdev="$(echo "${cryptkey}" | cut -d: -f1)"
ckarg1="$(echo "${cryptkey}" | cut -d: -f2)"
ckarg2="$(echo "${cryptkey}" | cut -d: -f3)"
if poll_device "${ckdev}" ${rootdelay}; then
case ${ckarg1} in
*[!0-9]*)
# Use a file on the device
# ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path
if [ "${ckarg2#*.}" = "gpg" ]; then
ckeyfile="${ckeyfile}.gpg"
usegpg="y"
fi
mkdir /ckey
mount -r -t ${ckarg1} ${ckdev} /ckey
dd if=/ckey/${ckarg2} of=${ckeyfile} >/dev/null 2>&1
umount /ckey
# Read raw data from the block device
# ckarg1 is numeric: ckarg1=offset, ckarg2=length
dd if=${ckdev} of=${ckeyfile} bs=1 skip=${ckarg1} count=${ckarg2} >/dev/null 2>&1
esac
fi
[ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase."
fi
if [ -n "${cryptdevice}" ]; then
DEPRECATED_CRYPT=0
cryptdev="$(echo "${cryptdevice}" | cut -d: -f1)"
cryptname="$(echo "${cryptdevice}" | cut -d: -f2)"
else
DEPRECATED_CRYPT=1
cryptdev="${root}"
cryptname="root"
fi
warn_deprecated() {
echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated"
echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead."
if poll_device "${cryptdev}" ${rootdelay}; then
if /sbin/cryptsetup isLuks ${cryptdev} >/dev/null 2>&1; then
[ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
dopassphrase=1
# If keyfile exists, try to use that
if [ -f ${ckeyfile} ]; then
if [ "${usegpg}" = "y" ]; then
# gpg tty fixup
if [ -e /dev/tty ]; then mv /dev/tty /dev/tty.backup; fi
cp -a /dev/console /dev/tty
while [ ! -e /dev/mapper/${cryptname} ];
do
sleep 2
/usr/bin/gpg -d "${ckeyfile}" 2>/dev/null | cryptsetup --key-file=- luksOpen ${cryptdev} ${cryptname} ${CSQUIET}
dopassphrase=0
done
rm /dev/tty
if [ -e /dev/tty.backup ]; then mv /dev/tty.backup /dev/tty; fi
else
if eval /sbin/cryptsetup --key-file ${ckeyfile} luksOpen ${cryptdev} ${cryptname} ${CSQUIET}; then
dopassphrase=0
else
echo "Invalid keyfile. Reverting to passphrase."
fi
fi
fi
# Ask for a passphrase
if [ ${dopassphrase} -gt 0 ]; then
echo ""
echo "A password is required to access the ${cryptname} volume:"
#loop until we get a real password
while ! eval /sbin/cryptsetup luksOpen ${cryptdev} ${cryptname} ${CSQUIET}; do
sleep 2;
done
fi
if [ -e "/dev/mapper/${cryptname}" ]; then
if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
export root="/dev/mapper/root"
fi
else
err "Password succeeded, but ${cryptname} creation failed, aborting..."
exit 1
fi
elif [ -n "${crypto}" ]; then
[ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
msg "Non-LUKS encrypted device found..."
if [ $# -ne 5 ]; then
err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip"
err "Non-LUKS decryption not attempted..."
return 1
fi
exe="/sbin/cryptsetup create ${cryptname} ${cryptdev}"
tmp=$(echo "${crypto}" | cut -d: -f1)
[ -n "${tmp}" ] && exe="${exe} --hash \"${tmp}\""
tmp=$(echo "${crypto}" | cut -d: -f2)
[ -n "${tmp}" ] && exe="${exe} --cipher \"${tmp}\""
tmp=$(echo "${crypto}" | cut -d: -f3)
[ -n "${tmp}" ] && exe="${exe} --key-size \"${tmp}\""
tmp=$(echo "${crypto}" | cut -d: -f4)
[ -n "${tmp}" ] && exe="${exe} --offset \"${tmp}\""
tmp=$(echo "${crypto}" | cut -d: -f5)
[ -n "${tmp}" ] && exe="${exe} --skip \"${tmp}\""
if [ -f ${ckeyfile} ]; then
exe="${exe} --key-file ${ckeyfile}"
else
exe="${exe} --verify-passphrase"
echo ""
echo "A password is required to access the ${cryptname} volume:"
fi
eval "${exe} ${CSQUIET}"
if [ $? -ne 0 ]; then
err "Non-LUKS device decryption failed. verify format: "
err " crypto=hash:cipher:keysize:offset:skip"
exit 1
fi
if [ -e "/dev/mapper/${cryptname}" ]; then
if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
export root="/dev/mapper/root"
fi
else
err "Password succeeded, but ${cryptname} creation failed, aborting..."
exit 1
fi
else
err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified."
fi
fi
rm -f ${ckeyfile}
fi
Create /mnt/lib/initcpio/install/etwo:
#!/bin/bash
build() {
local mod
add_module dm-crypt
if [[ $CRYPTO_MODULES ]]; then
for mod in $CRYPTO_MODULES; do
add_module "$mod"
done
else
add_all_modules '/crypto/'
fi
add_dir "/dev/mapper"
add_binary "cryptsetup"
add_binary "dmsetup"
add_binary "/usr/bin/gpg"
add_file "/usr/lib/udev/rules.d/10-dm.rules"
add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
add_runscript
help ()
cat<<HELPEOF
This hook allows for an encrypted root device with support for gpg encrypted key files.
To use gpg, the key file must have the extension .gpg and you have to install gpg and add /usr/bin/gpg
to your BINARIES var in /etc/mkinitcpio.conf.
HELPEOF
Edit /mnt/etc/mkinitcpio.conf (only relevant sections displayed):
MODULES=”ext2 ext4” # not sure if this is really nessecary.
BINARIES=”/usr/bin/gpg” # this could probably be done in install/etwo...
HOOKS=”base udev usbinput keymap autodetect pata scsi sata usb etwo filesystems” # (usbinput is only needed if you have an usb keyboard)
Copy the initcpio stuff over to the live cd:
cp /mnt/lib/initcpio/hooks/etwo /lib/initcpio/hooks/
cp /mnt/lib/initcpio/install/etwo /lib/initcpio/install/
cp /mnt/etc/mkinitcpio.conf /etc/
Verify your LOCALE, KEYMAP and TIMEZONE in /etc/rc.conf!
Now reinstall the initcpio:
mkinitcpio -g /mnt/boot/kernel26.img
Make sure there were no errors and that all hooks were included.
13. Decrypt the "var" key to the encrypted root
mkdir /mnt/keys
chmod 500 /mnt/keys
gpg –output /mnt/keys/var -d /mnt/boot/var.gpg
chmod 400 /mnt/keys/var
14. Setup crypttab
Edit /mnt/etc/crypttab:
swap /dev/sda1 SWAP -c aes-cbc-essiv:sha256 -s 256 -h whirlpool
var /dev/sda2 /keys/var
15. Reboot
We're done, you may reboot. Make sure you select the usb stick as the boot device in your bios and hope for the best. . If it didn't work, play with grub's settings or boot from the live cd, mount your encrypted devices and check all settings. You might also have less trouble by using uuid's instead of device names. I chose device names to keep things as simple as possible, even though it's not the optimal way to do it.
Make backups of your data and your usb stick and do not forget your password(s)! Or you can say goodbye to your data forever...
Last edited by fabriceb (2013-01-15 22:36:23)I'm trying to run my install script that is based on https://bbs.archlinux.org/viewtopic.php?id=129885
Decrypting the gpg key after grub works, but then "Devce root already exists." appears every second.
any idea ?
#!/bin/bash
# This script is designed to be run in conjunction with a UEFI boot using Archboot intall media.
# prereqs:
# EFI "BIOS" set to boot *only* from EFI
# successful EFI boot of Archboot USB
# mount /dev/sdb1 /src
set -o nounset
#set -o errexit
# Host specific configuration
# this whole script needs to be customized, particularly disk partitions
# and configuration, but this section contains global variables that
# are used during the system configuration phase for convenience
HOSTNAME=daniel
USERNAME=user
# Globals
# We don't need to set these here but they are used repeatedly throughout
# so it makes sense to reuse them and allow an easy, one-time change if we
# need to alter values such as the install target mount point.
INSTALL_TARGET="/install"
HR="--------------------------------------------------------------------------------"
PACMAN="pacman --noconfirm --config /tmp/pacman.conf"
TARGET_PACMAN="pacman --noconfirm --config /tmp/pacman.conf -r ${INSTALL_TARGET}"
CHROOT_PACMAN="pacman --noconfirm --cachedir /var/cache/pacman/pkg --config /tmp/pacman.conf -r ${INSTALL_TARGET}"
FILE_URL="file:///packages/core-$(uname -m)/pkg"
FTP_URL='ftp://mirrors.kernel.org/archlinux/$repo/os/$arch'
HTTP_URL='http://mirrors.kernel.org/archlinux/$repo/os/$arch'
# Functions
# I've avoided using functions in this script as they aren't required and
# I think it's more of a learning tool if you see the step-by-step
# procedures even with minor duplciations along the way, but I feel that
# these functions clarify the particular steps of setting values in config
# files.
SetValue () {
# EXAMPLE: SetValue VARIABLENAME '\"Quoted Value\"' /file/path
VALUENAME="$1" NEWVALUE="$2" FILEPATH="$3"
sed -i "s+^#\?\(${VALUENAME}\)=.*$+\1=${NEWVALUE}+" "${FILEPATH}"
CommentOutValue () {
VALUENAME="$1" FILEPATH="$2"
sed -i "s/^\(${VALUENAME}.*\)$/#\1/" "${FILEPATH}"
UncommentValue () {
VALUENAME="$1" FILEPATH="$2"
sed -i "s/^#\(${VALUENAME}.*\)$/\1/" "${FILEPATH}"
# Initialize
# Warn the user about impending doom, set up the network on eth0, mount
# the squashfs images (Archboot does this normally, we're just filling in
# the gaps resulting from the fact that we're doing a simple scripted
# install). We also create a temporary pacman.conf that looks for packages
# locally first before sourcing them from the network. It would be better
# to do either *all* local or *all* network but we can't for two reasons.
# 1. The Archboot installation image might have an out of date kernel
# (currently the case) which results in problems when chrooting
# into the install mount point to modprobe efivars. So we use the
# package snapshot on the Archboot media to ensure our kernel is
# the same as the one we booted with.
# 2. Ideally we'd source all local then, but some critical items,
# notably grub2-efi variants, aren't yet on the Archboot media.
# Warn
timer=9
echo -e "\n\nMAC WARNING: This script is not designed for APPLE MAC installs and will potentially misconfigure boot to your existing OS X installation. STOP NOW IF YOU ARE ON A MAC.\n\n"
echo -n "GENERAL WARNING: This procedure will completely format /dev/sda. Please cancel with ctrl-c to cancel within $timer seconds..."
while [[ $timer -gt 0 ]]
do
sleep 1
let timer-=1
echo -en "$timer seconds..."
done
echo "STARTING"
# Get Network
echo -n "Waiting for network address.."
#dhclient eth0
dhcpcd -p eth0
echo -n "Network address acquired."
# Mount packages squashfs images
umount "/packages/core-$(uname -m)"
umount "/packages/core-any"
rm -rf "/packages/core-$(uname -m)"
rm -rf "/packages/core-any"
mkdir -p "/packages/core-$(uname -m)"
mkdir -p "/packages/core-any"
modprobe -q loop
modprobe -q squashfs
mount -o ro,loop -t squashfs "/src/packages/archboot_packages_$(uname -m).squashfs" "/packages/core-$(uname -m)"
mount -o ro,loop -t squashfs "/src/packages/archboot_packages_any.squashfs" "/packages/core-any"
# Create temporary pacman.conf file
cat << PACMANEOF > /tmp/pacman.conf
[options]
Architecture = auto
CacheDir = ${INSTALL_TARGET}/var/cache/pacman/pkg
CacheDir = /packages/core-$(uname -m)/pkg
CacheDir = /packages/core-any/pkg
[core]
Server = ${FILE_URL}
Server = ${FTP_URL}
Server = ${HTTP_URL}
[extra]
Server = ${FILE_URL}
Server = ${FTP_URL}
Server = ${HTTP_URL}
#Uncomment to enable pacman -Sy yaourt
[archlinuxfr]
Server = http://repo.archlinux.fr/\$arch
PACMANEOF
# Prepare pacman
[[ ! -d "${INSTALL_TARGET}/var/cache/pacman/pkg" ]] && mkdir -m 755 -p "${INSTALL_TARGET}/var/cache/pacman/pkg"
[[ ! -d "${INSTALL_TARGET}/var/lib/pacman" ]] && mkdir -m 755 -p "${INSTALL_TARGET}/var/lib/pacman"
${PACMAN} -Sy
${TARGET_PACMAN} -Sy
# Install prereqs from network (not on archboot media)
echo -e "\nInstalling prereqs...\n$HR"
#sed -i "s/^#S/S/" /etc/pacman.d/mirrorlist # Uncomment all Server lines
UncommentValue S /etc/pacman.d/mirrorlist # Uncomment all Server lines
${PACMAN} --noconfirm -Sy gptfdisk btrfs-progs-unstable libusb-compat gnupg
# Configure Host
# Here we create three partitions:
# 1. efi and /boot (one partition does double duty)
# 2. swap
# 3. our encrypted root
# Note that all of these are on a GUID partition table scheme. This proves
# to be quite clean and simple since we're not doing anything with MBR
# boot partitions and the like.
echo -e "format\n"
# shred -v /dev/sda
# disk prep
sgdisk -Z /dev/sda # zap all on disk
#sgdisk -Z /dev/mmcb1k0 # zap all on sdcard
sgdisk -a 2048 -o /dev/sda # new gpt disk 2048 alignment
#sgdisk -a 2048 -o /dev/mmcb1k0
# create partitions
sgdisk -n 1:0:+200M /dev/sda # partition 1 (UEFI BOOT), default start block, 200MB
sgdisk -n 2:0:+4G /dev/sda # partition 2 (SWAP), default start block, 200MB
sgdisk -n 3:0:0 /dev/sda # partition 3, (LUKS), default start, remaining space
#sgdisk -n 1:0:1800M /dev/mmcb1k0 # root.gpg
# set partition types
sgdisk -t 1:ef00 /dev/sda
sgdisk -t 2:8200 /dev/sda
sgdisk -t 3:8300 /dev/sda
#sgdisk -t 1:0700 /dev/mmcb1k0
# label partitions
sgdisk -c 1:"UEFI Boot" /dev/sda
sgdisk -c 2:"Swap" /dev/sda
sgdisk -c 3:"LUKS" /dev/sda
#sgdisk -c 1:"Key" /dev/mmcb1k0
echo -e "create gpg file\n"
# create gpg file
dd if=/dev/urandom bs=512 count=4 | gpg -v --cipher-algo aes256 --digest-algo sha512 -c -a > /root/root.gpg
echo -e "format LUKS on root\n"
# format LUKS on root
gpg -q -d /root/root.gpg 2>/dev/null | cryptsetup -v --key-file=- -c aes-xts-plain -s 512 --hash sha512 luksFormat /dev/sda3
echo -e "open LUKS on root\n"
gpg -d /root/root.gpg 2>/dev/null | cryptsetup -v --key-file=- luksOpen /dev/sda3 root
# NOTE: make sure to add dm_crypt and aes_i586 to MODULES in rc.conf
# NOTE2: actually this isn't required since we're mounting an encrypted root and grub2/initramfs handles this before we even get to rc.conf
# make filesystems
# following swap related commands not used now that we're encrypting our swap partition
#mkswap /dev/sda2
#swapon /dev/sda2
#mkfs.ext4 /dev/sda3 # this is where we'd create an unencrypted root partition, but we're using luks instead
echo -e "\nCreating Filesystems...\n$HR"
# make filesystems
mkfs.ext4 /dev/mapper/root
mkfs.vfat -F32 /dev/sda1
#mkfs.vfat -F32 /dev/mmcb1k0p1
echo -e "mount targets\n"
# mount target
#mount /dev/sda3 ${INSTALL_TARGET} # this is where we'd mount the unencrypted root partition
mount /dev/mapper/root ${INSTALL_TARGET}
# mount target
mkdir ${INSTALL_TARGET}
# mkdir ${INSTALL_TARGET}/key
# mount -t vfat /dev/mmcb1k0p1 ${INSTALL_TARGET}/key
mkdir ${INSTALL_TARGET}/boot
mount -t vfat /dev/sda1 ${INSTALL_TARGET}/boot
# Install base, necessary utilities
mkdir -p ${INSTALL_TARGET}/var/lib/pacman
${TARGET_PACMAN} -Sy
${TARGET_PACMAN} -Su base
# curl could be installed later but we want it ready for rankmirrors
${TARGET_PACMAN} -S curl
${TARGET_PACMAN} -S libusb-compat gnupg
${TARGET_PACMAN} -R grub
rm -rf ${INSTALL_TARGET}/boot/grub
${TARGET_PACMAN} -S grub2-efi-x86_64
# Configure new system
SetValue HOSTNAME ${HOSTNAME} ${INSTALL_TARGET}/etc/rc.conf
sed -i "s/^\(127\.0\.0\.1.*\)$/\1 ${HOSTNAME}/" ${INSTALL_TARGET}/etc/hosts
SetValue CONSOLEFONT Lat2-Terminus16 ${INSTALL_TARGET}/etc/rc.conf
#following replaced due to netcfg
#SetValue interface eth0 ${INSTALL_TARGET}/etc/rc.conf
# write fstab
# You can use UUID's or whatever you want here, of course. This is just
# the simplest approach and as long as your drives aren't changing values
# randomly it should work fine.
cat > ${INSTALL_TARGET}/etc/fstab <<FSTAB_EOF
# /etc/fstab: static file system information
# <file system> <dir> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs nodev,nosuid 0 0
/dev/sda1 /boot vfat defaults 0 0
/dev/mapper/cryptswap none swap defaults 0 0
/dev/mapper/root / ext4 defaults,noatime 0 1
FSTAB_EOF
# write etwo
mkdir -p /lib/initcpio/hooks/
mkdir -p /lib/initcpio/install/
cp /src/etwo_hooks /lib/initcpio/hooks/etwo
cp /src/etwo_install /lib/initcpio/install/etwo
mkdir -p ${INSTALL_TARGET}/lib/initcpio/hooks/
mkdir -p ${INSTALL_TARGET}/lib/initcpio/install/
cp /src/etwo_hooks ${INSTALL_TARGET}/lib/initcpio/hooks/etwo
cp /src/etwo_install ${INSTALL_TARGET}/lib/initcpio/install/etwo
# write crypttab
# encrypted swap (random passphrase on boot)
echo cryptswap /dev/sda2 SWAP "-c aes-xts-plain -h whirlpool -s 512" >> ${INSTALL_TARGET}/etc/crypttab
# copy configs we want to carry over to target from install environment
mv ${INSTALL_TARGET}/etc/resolv.conf ${INSTALL_TARGET}/etc/resolv.conf.orig
cp /etc/resolv.conf ${INSTALL_TARGET}/etc/resolv.conf
mkdir -p ${INSTALL_TARGET}/tmp
cp /tmp/pacman.conf ${INSTALL_TARGET}/tmp/pacman.conf
# mount proc, sys, dev in install root
mount -t proc proc ${INSTALL_TARGET}/proc
mount -t sysfs sys ${INSTALL_TARGET}/sys
mount -o bind /dev ${INSTALL_TARGET}/dev
echo -e "umount boot\n"
# we have to remount /boot from inside the chroot
umount ${INSTALL_TARGET}/boot
# Create install_efi script (to be run *after* chroot /install)
touch ${INSTALL_TARGET}/install_efi
chmod a+x ${INSTALL_TARGET}/install_efi
cat > ${INSTALL_TARGET}/install_efi <<EFI_EOF
# functions (these could be a library, but why overcomplicate things
SetValue () { VALUENAME="\$1" NEWVALUE="\$2" FILEPATH="\$3"; sed -i "s+^#\?\(\${VALUENAME}\)=.*\$+\1=\${NEWVALUE}+" "\${FILEPATH}"; }
CommentOutValue () { VALUENAME="\$1" FILEPATH="\$2"; sed -i "s/^\(\${VALUENAME}.*\)\$/#\1/" "\${FILEPATH}"; }
UncommentValue () { VALUENAME="\$1" FILEPATH="\$2"; sed -i "s/^#\(\${VALUENAME}.*\)\$/\1/" "\${FILEPATH}"; }
echo -e "mount boot\n"
# remount here or grub et al gets confused
mount -t vfat /dev/sda1 /boot
# mkinitcpio
# NOTE: intel_agp drm and i915 for intel graphics
SetValue MODULES '\\"dm_mod dm_crypt aes_x86_64 ext2 ext4 vfat intel_agp drm i915\\"' /etc/mkinitcpio.conf
SetValue HOOKS '\\"base udev pata scsi sata usb usbinput keymap consolefont etwo encrypt filesystems\\"' /etc/mkinitcpio.conf
SetValue BINARIES '\\"/usr/bin/gpg\\"' /etc/mkinitcpio.conf
mkinitcpio -p linux
# kernel modules for EFI install
modprobe efivars
modprobe dm-mod
# locale-gen
UncommentValue de_AT /etc/locale.gen
locale-gen
# install and configure grub2
# did this above
#${CHROOT_PACMAN} -Sy
#${CHROOT_PACMAN} -R grub
#rm -rf /boot/grub
#${CHROOT_PACMAN} -S grub2-efi-x86_64
# you can be surprisingly sloppy with the root value you give grub2 as a kernel option and
# even omit the cryptdevice altogether, though it will wag a finger at you for using
# a deprecated syntax, so we're using the correct form here
# NOTE: take out i915.modeset=1 unless you are on intel graphics
SetValue GRUB_CMDLINE_LINUX '\\"cryptdevice=/dev/sda3:root cryptkey=/dev/sda1:vfat:/root.gpg add_efi_memmap i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 pcie_aspm=force quiet\\"' /etc/default/grub
# set output to graphical
SetValue GRUB_TERMINAL_OUTPUT gfxterm /etc/default/grub
SetValue GRUB_GFXMODE 960x600x32,auto /etc/default/grub
SetValue GRUB_GFXPAYLOAD_LINUX keep /etc/default/grub # comment out this value if text only mode
# install the actual grub2. Note that despite our --boot-directory option we will still need to move
# the grub directory to /boot/grub during grub-mkconfig operations until grub2 gets patched (see below)
grub_efi_x86_64-install --bootloader-id=grub --no-floppy --recheck
# create our EFI boot entry
# bug in the HP bios firmware (F.08)
efibootmgr --create --gpt --disk /dev/sda --part 1 --write-signature --label "ARCH LINUX" --loader "\\\\grub\\\\grub.efi"
# copy font for grub2
cp /usr/share/grub/unicode.pf2 /boot/grub
# generate config file
grub-mkconfig -o /boot/grub/grub.cfg
exit
EFI_EOF
# Install EFI using script inside chroot
chroot ${INSTALL_TARGET} /install_efi
rm ${INSTALL_TARGET}/install_efi
# Post install steps
# anything you want to do post install. run the script automatically or
# manually
touch ${INSTALL_TARGET}/post_install
chmod a+x ${INSTALL_TARGET}/post_install
cat > ${INSTALL_TARGET}/post_install <<POST_EOF
set -o errexit
set -o nounset
# functions (these could be a library, but why overcomplicate things
SetValue () { VALUENAME="\$1" NEWVALUE="\$2" FILEPATH="\$3"; sed -i "s+^#\?\(\${VALUENAME}\)=.*\$+\1=\${NEWVALUE}+" "\${FILEPATH}"; }
CommentOutValue () { VALUENAME="\$1" FILEPATH="\$2"; sed -i "s/^\(\${VALUENAME}.*\)\$/#\1/" "\${FILEPATH}"; }
UncommentValue () { VALUENAME="\$1" FILEPATH="\$2"; sed -i "s/^#\(\${VALUENAME}.*\)\$/\1/" "\${FILEPATH}"; }
# root password
echo -e "${HR}\\nNew root user password\\n${HR}"
passwd
# add user
echo -e "${HR}\\nNew non-root user password (username:${USERNAME})\\n${HR}"
groupadd sudo
useradd -m -g users -G audio,lp,optical,storage,video,games,power,scanner,network,sudo,wheel -s /bin/bash ${USERNAME}
passwd ${USERNAME}
# mirror ranking
echo -e "${HR}\\nRanking Mirrors (this will take a while)\\n${HR}"
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig
mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.all
sed -i "s/#S/S/" /etc/pacman.d/mirrorlist.all
rankmirrors -n 5 /etc/pacman.d/mirrorlist.all > /etc/pacman.d/mirrorlist
# temporary fix for locale.sh update conflict
mv /etc/profile.d/locale.sh /etc/profile.d/locale.sh.preupdate || true
# yaourt repo (add to target pacman, not tmp pacman.conf, for ongoing use)
echo -e "\\n[archlinuxfr]\\nServer = http://repo.archlinux.fr/\\\$arch" >> /etc/pacman.conf
echo -e "\\n[haskell]\\nServer = http://www.kiwilight.com/\\\$repo/\\\$arch" >> /etc/pacman.conf
# additional groups and utilities
pacman --noconfirm -Syu
pacman --noconfirm -S base-devel
pacman --noconfirm -S yaourt
# sudo
pacman --noconfirm -S sudo
cp /etc/sudoers /tmp/sudoers.edit
sed -i "s/#\s*\(%wheel\s*ALL=(ALL)\s*ALL.*$\)/\1/" /tmp/sudoers.edit
sed -i "s/#\s*\(%sudo\s*ALL=(ALL)\s*ALL.*$\)/\1/" /tmp/sudoers.edit
visudo -qcsf /tmp/sudoers.edit && cat /tmp/sudoers.edit > /etc/sudoers
# power
pacman --noconfirm -S acpi acpid acpitool cpufrequtils
yaourt --noconfirm -S powertop2
sed -i "/^DAEMONS/ s/)/ @acpid)/" /etc/rc.conf
sed -i "/^MODULES/ s/)/ acpi-cpufreq cpufreq_ondemand cpufreq_powersave coretemp)/" /etc/rc.conf
# following requires my acpi handler script
echo "/etc/acpi/handler.sh boot" > /etc/rc.local
# time
pacman --noconfirm -S ntp
sed -i "/^DAEMONS/ s/hwclock /!hwclock @ntpd /" /etc/rc.conf
# wireless (wpa supplicant should already be installed)
pacman --noconfirm -S iw wpa_supplicant rfkill
pacman --noconfirm -S netcfg wpa_actiond ifplugd
mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.orig
echo -e "ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network\nupdate_config=1" > /etc/wpa_supplicant.conf
# make sure to copy /etc/network.d/examples/wireless-wpa-config to /etc/network.d/home and edit
sed -i "/^DAEMONS/ s/)/ @net-auto-wireless @net-auto-wired)/" /etc/rc.conf
sed -i "/^DAEMONS/ s/ network / /" /etc/rc.conf
echo -e "\nWIRELESS_INTERFACE=wlan0" >> /etc/rc.conf
echo -e "WIRED_INTERFACE=eth0" >> /etc/rc.conf
echo "options iwlagn led_mode=2" > /etc/modprobe.d/iwlagn.conf
# sound
pacman --noconfirm -S alsa-utils alsa-plugins
sed -i "/^DAEMONS/ s/)/ @alsa)/" /etc/rc.conf
mv /etc/asound.conf /etc/asound.conf.orig || true
#if alsamixer isn't working, try alsamixer -Dhw and speaker-test -Dhw -c 2
# video
pacman --noconfirm -S base-devel mesa mesa-demos
# x
#pacman --noconfirm -S xorg xorg-xinit xorg-utils xorg-server-utils xdotool xorg-xlsfonts
#yaourt --noconfirm -S xf86-input-wacom-git # NOT NEEDED? input-wacom-git
#TODO: cut down the install size
#pacman --noconfirm -S xorg-server xorg-xinit xorg-utils xorg-server-utils
# TODO: wacom
# environment/wm/etc.
#pacman --noconfirm -S xfce4 compiz ccsm
#pacman --noconfirm -S xcompmgr
#yaourt --noconfirm -S physlock unclutter
#pacman --noconfirm -S rxvt-unicode urxvt-url-select hsetroot
#pacman --noconfirm -S gtk2 #gtk3 # for taffybar?
#pacman --noconfirm -S ghc
# note: try installing alex and happy from cabal instead
#pacman --noconfirm -S haskell-platform haskell-hscolour
#yaourt --noconfirm -S xmonad-darcs xmonad-contrib-darcs xcompmgr
#yaourt --noconfirm -S xmobar-git
# TODO: edit xfce to use compiz
# TODO: xmonad, but deal with video tearing
# TODO: xmonad-darcs fails to install from AUR. haskell dependency hell.
# switching to cabal
# fonts
pacman --noconfirm -S terminus-font
yaourt --noconfirm -S webcore-fonts
yaourt --noconfirm -S fontforge libspiro
yaourt --noconfirm -S freetype2-git-infinality
# TODO: sed infinality and change to OSX or OSX2 mode
# and create the sym link from /etc/fonts/conf.avail to conf.d
# misc apps
#pacman --noconfirm -S htop openssh keychain bash-completion git vim
#pacman --noconfirm -S chromium flashplugin
#pacman --noconfirm -S scrot mypaint bc
#yaourt --noconfirm -S task-git stellarium googlecl
# TODO: argyll
POST_EOF
# Post install in chroot
#echo "chroot and run /post_install"
chroot /install /post_install
rm /install/post_install
# copy grub.efi file to the default HP EFI boot manager path
mkdir -p ${INSTALL_TARGET}/boot/EFI/Microsoft/BOOT/
mkdir -p ${INSTALL_TARGET}/boot/EFI/BOOT/
cp ${INSTALL_TARGET}/boot/grub/grub.efi ${INSTALL_TARGET}/boot/EFI/Microsoft/BOOT/bootmgfw.efi
cp ${INSTALL_TARGET}/boot/grub/grub.efi ${INSTALL_TARGET}/boot/EFI/BOOT/BOOTX64.EFI
cp /root/root.gpg ${INSTALL_TARGET}/boot/
# NOTES/TODO -
[HOWTO] Installing Arch Linux stable release on Acer Aspire One 522
[This is a work on progress and my first howto ever]
These steps will teach you how to install ArchLinux x64 stable release (currently 2010.05) on Acer Aspire One 522 from an existing ArchLinux (your desktop computer)
As you need a 2.6.37+ kernel to make networking work on the AO522, installing stable release as is won't work.
This Howto borns with the intention to address this problem.
You need to be familiarized with Linux internals to follow this howto.
(Expect this howto to become useless with new stable releases of ArchLinux.)
Remember to make a backup of your Windows 7 Starter system before installing ArchLinux.
I did a full raw copy of the harddisk by using systemrescuecd, an external harddisk and dd utility:
Just boot with systemrescuecd
Mount your external harddisk on /mnt/floppy for example
Clone harddisk with: dd if=/dev/sda |gzip -c > /mnt/floppy/ao522.img
This process took me a lot of time since my external harddisk is USB-1 (almost an entire evening)
Result image was about 22GB size
This image will restore partition table, boot sector and all data if things go wrong.
I followed some of the steps from this guide: https://wiki.archlinux.org/index.php/In … ting_Linux
If you have some Gentoo Linux experience you will find those steps really familiar.
You will need 2 USB pendrives or similar storage options.
One is needed to boot into your netbook, and the other to store our custom archlinux build.
Making an updated ArchLinux system
1) Make a local dir on your existing linux system
# mkdir ./newarch
2) Install pacman database on it
# pacman -Sy -r ./newarch
3) Install base system
# pacman -S base -r ./newarch
4) Let's chroot inside
# cp /etc/resolv.conf ./newarch/etc/
# cp /etc/pacman.d/mirrorlist ./newarch/etc/pacman.d
# mount -t proc proc ./newarch/proc
# mount -t sysfs sys ./newarch/sys
# mount -o bind /dev ./newarch/dev
# chroot ./newarch /bin/bash
5) Edit configuration files
# nano -w /etc/rc.conf
# nano -w /etc/hosts
# nano -w /etc/mkinitcpio.conf
Forget /etc/fstab for now since you don't know what partitions to use yet
6) Generate kernel image
# mkinitcpio -p kernel26
7) Generate locales
# nano -w /etc/locale.gen
# locale-gen
8) Make a tarball with our custom ArchLinux
# exit
# umount ./newarch/proc
# umount ./newarch/dev
# umount ./newarch/sys
# tar -cvpf newarch.tar ./newarch
9) Copy this tarball to an USB pendrive or external harddisk
10) Boot your netbook with a Linux bootable USB stick (I used systemrescuecd, and remember to pick the x64 bit kernel at grub screen)
You can use any linux distribution with usb bootable options. I suppose ArchLinux works too
To install SystemRescueCD on an USB stick follow this tutorial -> SystemRescueCD on usb stick
Insert the usb stick on your netbook, switch on, hit F2 to enter BIOS menu, and choose to boot from USB as first option. Save and Exit.
You should be booting into SystemRescueCD without any problem.
After initialization you will end in a root prompt.
11) Let's partition the disk
You will find 3 partitions if this is your first time:
/dev/sda1 2048 29362175 14680064 27 Hidden NTFS WinRE
/dev/sda2 * 29362176 29566975 102400 7 HPFS/NTFS/exFAT
/dev/sda3 29566976 488397167 229312696 7 HPFS/NTFS/exFAT
My recomendation is to leave sda1 and sda2 intact, as they have the recovery information to restore Windows 7 Starter
You have plenty of space with sda3, about 230G.
So run fdisk/cfdisk and delete /dev/sda3
Now create a 100M partition for boot
Now create a Extended partition with all the space left
Now create a 1GB logical partition for swap
Now create a 10-15 GB logical partition for root system
And finally a logical partition for our home partition with all space left
Your partition table should look like this:
/dev/sda1 2048 29362175 14680064 27 Hidden NTFS WinRE
/dev/sda2 * 29362176 29566975 102400 7 HPFS/NTFS/exFAT
/dev/sda3 29566976 29771775 102400 83 Linux
/dev/sda4 29771776 488397167 229312696 5 Extended
/dev/sda5 29773824 31821823 1024000 83 Linux
/dev/sda6 31823872 63281151 15728640 83 Linux
/dev/sda7 63283200 488397167 212556984 83 Linux
12) Create filesystems
I choosed ext2 for boot, and reiserfs for root and home partitions.
# mke2fs /dev/sda3
# mkreiserfs /dev/sda6
# mkreiserfs /dev/sda7
# mkswap /dev/sda5
13) Mount partitions
# mkdir arch
# mount /dev/sda6 arch
# mkdir arch/boot
# mount /dev/sda3 arch/boot
# mkdir arch/home
# mount /dev/sda7 arch/home
14) Copy our custom ArchLinux build on it
# mount /dev/sdb1 /mnt/floppy (for example)
# cd arch
# tar -xvpf /mnt/flopy/newarch.tar
15) Configure /etc/fstab
Mine is as follows:
devpts /dev/pts devpts defaults 0 0
shm /dev/shm tmpfs nodev,nosuid 0 0
/dev/sda3 /boot ext2 defaults 0 1
/dev/sda6 / reiserfs defaults 0 1
/dev/sda7 /home reiserfs defaults 0 1
/dev/sda5 swap swap defaults 0 0
16) Chroot in your new system
# mount -t proc proc ./proc
# mount -t sysfs sys ./sys
# mount -o bind /dev ./dev
# chroot ./ /bin/bash
17) Install grub
# grub-install
Edit /boot/grub/menu.lst to suit your needs
Mine looks like this:
timeout 5
default 0
color light-blue/black light-cyan/blue
title Arch Linux
root (hd0,2)
kernel /vmlinuz26 root=/dev/sda6 ro
initrd /kernel26.img
title Arch Linux Fallback
root (hd0,2)
kernel /vmlinuz26 root=/dev/sda6 ro
initrd /kernel26-fallback.img
title Windows 7 Recovery
rootnoverify (hd0,0)
makeactive
chainloader +1
As you see, you can restore Windows 7 Starter from Grub.
18) Change root password
# passwd
19) Add a regular user account
# useradd -G video,audio,users -m username
# passwd username
20) You're done!
# exit
# cd ..
# umount ./arch/proc
# umount ./arch/dev
# umount ./arch/sys
# umount ./arch/boot
# umount ./arch/
# reboot
Remove the usb stick from your netbook.
If all went ok, you will be inside your new stable and updated ArchLinux system
Next post is reserved for software configurations specific to the Acer Aspire One 522
Last edited by tigrezno (2011-04-20 12:22:38)Using acpid to achieve the following:
- Change screen brightness when operating in battery mode
- Power off when the power button is pressed
- Suspend when the lid is down
- Reduce CPU frequency speed to maximize battery usage
Remember that system suspend is only supported by ati free driver xf86-video-ati
1) Install acpid daemon and cpufrequtils
# pacman -S apcid cpufrequtils
2) edit acpid handler script
# nano -w /etc/acpi/handler.sh
Change the following section:
ac_adapter)
case "$2" in
AC)
case "$4" in
00000000)
echo -n $minspeed >$setspeed
#/etc/laptop-mode/laptop-mode start
00000001)
echo -n $maxspeed >$setspeed
#/etc/laptop-mode/laptop-mode stop
esac
*) logger "ACPI action undefined: $2" ;;
esac
for:
ac_adapter)
case "$2" in
ACAD)
case "$4" in
00000000)
echo 3 > /sys/devices/virtual/backlight/acpi_video0/brightness
cpufreq-set -c 0 -f 800Mhz
cpufreq-set -c 1 -f 800Mhz
00000001)
echo 9 > /sys/devices/virtual/backlight/acpi_video0/brightness
cpufreq-set -c 0 -f 1000Mhz
cpufreq-set -c 1 -f 1000Mhz
esac
*) logger "ACPI action undefined: $2" ;;
esac
Make sure you changed AC) for ACAD)
Now change this other section:
button/power)
#echo "PowerButton pressed!">/dev/tty5
case "$2" in
PWRF) logger "PowerButton pressed: $2" ;;
*) logger "ACPI action undefined: $2" ;;
esac
with:
button/power)
#echo "PowerButton pressed!">/dev/tty5
case "$2" in
PWRF) poweroff ;;
*) logger "ACPI action undefined: $2" ;;
esac
Change:
button/lid)
#echo "LID switched!">/dev/tty5
logger "ACPI group/action undefined: $1 / $2"
for:
button/lid)
pm-suspend && /etc/rc.d/network restart
logger "ACPI group/action undefined: $1 / $2"
Network restart is used because wlan0 will disconnect from AP after some time. You can try using iwconfig wlan0 essid <ap> key <key> instead of the network script, but haven't tested it myself.
3) Start acpid and load modules
# modprobe powernow-k8
# /etc/rc.d/acpid start
Add "acpid" to DAEMONS in /etc/rc.conf to start on boot
Add "powernow-k8" to the modules sections on /etc/rc.conf to load at boot
Stopping system freezes due to ethernet driver
The only way people have found to avoid freezes is by blacklisting atheros kernel drivers.
To do it at boot just edit /etc/rc.conf and change the MODULES line as this:
MODULES=(!ath9k !atl1c)
Reboot and you're done, but remember to not press the Wifi key, because it can freeze your system.
Correctly starting wireless at boot
I've found that standard scripts wont load properly my wireless lan. It gave an error telling you to use the WIRELESS_TIMEOUT variable and such.
To solve this, edit /etc/rc.d/network script and change the wi_up function by adding a second iwconfig command like this:
wi_up()
eval iwcfg="\$wlan_${1}"
[[ ! $iwcfg ]] && return 0
/usr/sbin/iwconfig $iwcfg
[[ $WIRELESS_TIMEOUT ]] || WIRELESS_TIMEOUT=2
sleep $WIRELESS_TIMEOUT
/usr/sbin/iwconfig $iwcfg
bssid=$(iwgetid $1 -ra)
It will do the trick and will start at boot correctly. This is not a solution but a fix.
Adjust Touchpad to disable false taps
What I did here is defining an area to be ignored. This area are 3 rectangles on top, left and right of the touchpad.
This means you can write and press space without having the cursor click out of the window and such.
# synclient AreaLeftEdge=150
# synclient AreaRightEdge=1300
# synclient AreaTopEdge=300
Also, add it to your /etc/X11/xorg.conf.d/10-evdev.conf:
Section "InputClass"
Identifier "evdev touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "AreaTopEdge" "300"
Option "AreaLeftEdge" "150"
Option "AreaRightEdge" "1300"
EndSection
You can play with those values. They just work for me.
Last edited by tigrezno (2011-04-23 13:49:48)
Maybe you are looking for
-
Hi All, I have a scenario where system is creating as many Transfer Orders as many HU's that i create. I have HU managed Storage Location. I am creating an inbound delivery for the standard purchase order and in the inbound delivery i need to create
-
Unable to run user defined table in Query Generator...
hi experts, iam unable to run the user defined table in query generator..this is the query iam using... Select T0.U_Date from dbo.@ENQHEAD T0 where T0.U_EnqNo='[%0]' When i run this query it popups a window & asking EnqNo,when i
-
I was looking at the Add/Modify Customer page – page 7 in the Sample Application which can be loaded into Oracle XE and was surprised to discover that there doesn't seem to be any field validation. For example customer first name is set to varchar2(2
-
OS 10.5.8 to 10.6
I purchased my Macbook Pro just about 2 years ago. It came with a DVD for 10.6 Snow Leopard. My mac does not recognize this at all...It sees this disc as a blank DVD. I've already tried the restarting with the disc in there while holding down CTRL (o
-
I'm getting this error java.lang.NoClassDefFoundError: com/sun/j3d/utils/applet/MainFrame at HelloUniverse.main(Compiled Code) I receive this error when I try to run the demos that are in the /usr/java1.1/demo folder. I followed the directions to ins