Juniper VPN for 64 bit Arch Linux

Recently I try to connect to the vpn network of my university using my 64 bit Arch Linux box. I succeed in getting it to work, but not without some searching, some methods simply don't work, so I decide to share some info, hopefully someone would find it useful.
My key ref:
http://wireless.siu.edu/install-ubuntu-64.htm
(You need to install xterm for it to work.)
The key issue is the 64 bit java plugin won't work with the Juniper software.
Here are the steps I follow:
1.) follow the reference to install java and the java plugin, firstly 64 bit, then 32 bit and replace the necessary libraries. The steps are detailed in the ref.
2.) install xterm if you have not
3.) link the plugins libnpjp2.so
ln -s / << location of java you installed above >>/lib/amd64/libnpjp2.so /usr/lib/mozilla/plugins/libnpjp2.so
With the newest firefox 5, I confirm the location of plugin is in
/usr/lib/mozilla/plugins/
in the past, it's suggested to be resided in ~/.mozilla/plugins, I don't think it's true now
I think this is much simpler than the change root method and should be suggested.

done, added as "alternative method"
in
https://wiki.archlinux.org/index.php/Juniper_VPN

Similar Messages

  • [SOLVED] Ndiswrapper, NetworkManager 0.7 and 64-bit Arch Linux

    Hi there!
    I am having problems configuring my wireless card. I know I have to use Ndiswrapper, and this is what I have tried to do; however, it didn't go quite well.
    This is rather odd because it worked perfectly in the 32-bit version of Arch Linux, but now it doesn't work.
    So, here comes the code.
    valandil ~ $ lspci | grep Network
    0b:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01)
    I really use ndiswrapper and have already installed what I think is the proper driver (it seems that the list the official ndiswrapper site had has somehow disappeared.
    sudo ndiswrapper -l
    Password:
    bcmwl5 : driver installed
    device (14E4:4311) present (alternate driver: ssb)
    Here's iwconfig:
    valandil ~ $ iwconfig
    lo no wireless extensions.
    eth0 no wireless extensions.
    wmaster0 no wireless extensions.
    wlan0 IEEE 802.11bg ESSID:""
    Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated
    Tx-Power=0 dBm
    Retry min limit:7 RTS thr:off Fragment thr=2352 B
    Power Management:off
    Link Quality:0 Signal level:0 Noise level:0
    Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
    Tx excessive retries:0 Invalid misc:0 Missed beacon:0
    I use NetworkManager 0.7 and have configured properly:
    rc.conf:
    # /etc/rc.conf - Main Configuration for Arch Linux
    # LOCALIZATION
    # LOCALE: available languages can be listed with the 'locale -a' command
    # HARDWARECLOCK: set to "UTC" or "localtime"
    # USEDIRECTISA: use direct I/O requests instead of /dev/rtc for hwclock
    # TIMEZONE: timezones are found in /usr/share/zoneinfo
    # KEYMAP: keymaps are found in /usr/share/kbd/keymaps
    # CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US)
    # CONSOLEMAP: found in /usr/share/kbd/consoletrans
    # USECOLOR: use ANSI color sequences in startup messages
    LOCALE="en_US.utf8"
    HARDWARECLOCK="localtime"
    USEDIRECTISA="no"
    TIMEZONE="America/Vancouver"
    KEYMAP="cf"
    CONSOLEFONT=
    CONSOLEMAP=
    USECOLOR="yes"
    # HARDWARE
    # MOD_AUTOLOAD: Allow autoloading of modules at boot and when needed
    # MOD_BLACKLIST: Prevent udev from loading these modules
    # MODULES: Modules to load at boot-up. Prefix with a ! to blacklist.
    # NOTE: Use of 'MOD_BLACKLIST' is deprecated. Please use ! in the MODULES array.
    MOD_AUTOLOAD="yes"
    #MOD_BLACKLIST=() #deprecated
    MODULES=(fuse ndiswrapper fglrx !b44 !mii bcm43xx !snd_pcsp snd-mixer-oss snd-pcm-oss snd-hwdep snd-page-alloc snd-pcm snd-timer snd snd-hda-intel soundcore !pcspkr)
    # Scan for LVM volume groups at startup, required if you use LVM
    USELVM="no"
    # NETWORKING
    # HOSTNAME: Hostname of machine. Should also be put in /etc/hosts
    HOSTNAME="cipher"
    # Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available interfaces.
    # Interfaces to start at boot-up (in this order)
    # Declare each interface then list in INTERFACES
    # - prefix an entry in INTERFACES with a ! to disable it
    # - no hyphens in your interface names - Bash doesn't like it
    # DHCP: Set your interface to "dhcp" (eth0="dhcp")
    # Wireless: See network profiles below
    #eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
    eth0="dhcp"
    INTERFACES=(lo !eth0 !wlan0)
    # Routes to start at boot-up (in this order)
    # Declare each route then list in ROUTES
    # - prefix an entry in ROUTES with a ! to disable it
    gateway="default gw 192.168.1.1"
    ROUTES=(!gateway)
    # Enable these network profiles at boot-up. These are only useful
    # if you happen to need multiple network configurations (ie, laptop users)
    # - set to 'menu' to present a menu during boot-up (dialog package required)
    # - prefix an entry with a ! to disable it
    # Network profiles are found in /etc/network.d
    # This now requires the netcfg package
    #NETWORKS=(main)
    # DAEMONS
    # Daemons to start at boot-up (in this order)
    # - prefix a daemon with a ! to disable it
    # - prefix a daemon with a @ to start it up in the background
    DAEMONS=(@stbd httpd !network syslog-ng netfs crond alsa hal dhcdbd networkmanager fam gdm)
    hosts file :
    # /etc/hosts: static lookup table for host names
    #<ip-address> <hostname.domain.org> <hostname>
    127.0.0.1 localhost.localdomain localhost cipher
    # End of file
    /etc/NetworkManager/nm-system-settings.conf:
    GNU nano 2.0.9 File: /etc/NetworkManager/nm-system-settings.conf
    [main]
    plugins=keyfile
    [keyfile]
    hostname=cipher
    I hope you can solve this problem; wireless is really crucial.
    Thanks for any help,
    Last edited by valandil (2012-05-02 18:27:09)

    Alleluia!!!
    I think I will write a new rule for myself to follow :
    Thou shalt never use ndiswrapper again.
    Thanks a lot, wonder, and thanks to you too, Xyne.
    FYI, I tried to use something else than ndiswrapper before, but it didn't yield satisfying results. Anyway, thanks.

  • Is there a tutorial for creating Arch Linux logo?

    as the title says, I am looking for a tutorial on how to create Arch Linux logo using either Gimp/Photoshop/Inkscape
    Any links / videos to one would be nice
    Thanks in advance

    You have the artwork, you just are interested in how it was created?
    There is a thread here somewhere about the new logo - Thayer describes the font selection (from memory), but I don't recall any detail about the icons themselves.
    You could always just work from the originals with trial and error...
    http://www.archlinux.org/art/

  • Looking for addition articles for the Arch Linux Press Review wikipage

    Good day all,
    I recently updated the Arch Linux Press Review wikipage, found here:
    http://wiki.archlinux.org/index.php/Arc … ess_Review
    If you know of any additional reviews or articles about Arch Linux, please edit the wiki page or post the info as a reply.
    Any contributions for non-English language articles, or corrections in that area, would be especially appreciated.
    Thank you,
    Luke Seubert

    tlaloc wrote:
    We have a collection of German reports over here:
    http://wiki.archlinux.de/title/Arch_in_den_Medien
    Thanks tlaloc! I transferred that list of articles over to the Arch Press Review wikipage under the German Language section, and included a link back to the German original. I also fixed a tiny spelling error in the German page. I also doublechecked all the links to make sure they are live. As the French would day, "J'encule les moustiques"
    tlaloc wrote:
    No damage done - just go on.
    We are all behind you (eight miles behind you, so if you get in trouble ....)
    But that's fine by me, just go on.
    So nice to know you have my back tlaloc
    Last edited by lseubert (2009-05-22 14:35:31)

  • Archwiz Script for installing Arch Linux

    I created a new Bash Script Project called Archwiz, located on  github flesh/archwiz ,
    its still in Beta for a few reasons, I never figured out how to get computer translations working in the script so I can Localize it, and I never figured out all the details to get an AUR custom repo working and lastly I didn't get the Asynchronous downloads to work right, so there are all disabled in this script.
    This script was a fork of another script found here Archlinux Ultimate Install Script.
    The Script itself has several files, the wizard.sh is a library, that allow programmers to use this library as an API for writing scripts, so its usefully to anyone that wants an API to write Bash Scripts, but the script itself scripts a script that is saved as configuration files, then executes the script inside itself, so you can look at all the configuration files before running it.
    The script was written for use by anyone, but mostly targets programmers like myself who need to setup a machine to use as a work station and want it set up a certain way every time, although this script is far from finished, I have a lot of tweaking to do to it before it would be completely there, but as it is, I can get up and running on a machine with little effort, so this make it ideal for a Linux Administrator who has to install thousands of OS's and have them configured all the same way, but works great for someone just wanting to install Arch Linux.
    The Project is Self Documenting and Self Localizing, although currently only English works, but the po files are there, so it would be easy enough if you wanted to localize it; but the computer translation function I started would be the correct way to do this.
    The scripts makes use of a custom repo, so remove it when finished, the script should do this for you, but just to let you know, it downloads the core to the flash drive, this way it can install very fast, once you install it one, it has all the files on it to install on another computer without an Internet connection, well at least that was my thinking, I never did get the AUR custom repo to work, but the idea is to have all the files on the flash so you do not need to use up bandwidth installing Arch Linux on a new machine, just install it, then run pacman updates.
    The Idea of a Wizard is to make the life of those installing an OS, much easier, they have the Option to do a Custom install, or a Wizard install, even an Automatic install to pre-configure machines.
    The script determines if you have UEFI Bios or not, and formats and configures the Hard Drive correctly, and gives you full control over the partitioning of the drive, within the bounds of the tools used, so its very flexible, it uses systemd, so boot time on my machine is 10 seconds flat, and that's because I mount a lot of network drives and map them at boot time, I got 2 seconds boot time with mounting, so the packages are not perfect, but they do work.
    I only tested GDM, since I installed every Desktop Manager and configuration for my needs, this was the only one I got to work for all of them, but I normally use KDE or Mate, but I ran into issues with Mate and went back to KDE, so I could get back to work.
    This script was designed to Format the Drive you install it to, so do not use this on a Partitioned Drive,  it will format the hard drive, so you are warned once more during the install, but this could be fixed, I had to abandon the project to finish another, so the script is as it is, but could give someone a great start if they want to folk it and finish it, so fork me.
    See the help.html for details.
    Last edited by Flesh (2013-02-28 00:31:54)

    Moving to Community Contributions...

  • Web based IRC for the Arch Linux channel

    Would it be possible for someone to set up the Arch linux IRC channel to be viewable on a Firefox webpage in the same way the Frugalware guys do?
    http://frugalware.org/irc.php
    It could be really useful to those not familiar with IRC.  And it doesn't look that hard to do
    A link could then be put on the home page to get there quickly.

    CGI:IRC is really practical, if you are on-the-road (= not on your machine) but want to inform some people over chat on something important
    i had it running in an earlier version on my old machine to chat with my family when on holidays ... but the installation was pain ... however, i see that this piece of code evolved much and looks really great now
    i don't decide for archlinux.org but you have my vote ;-)

  • Wocka 0.5 - checkinstall for Arch Linux

    Last updated: 17th-Feb-2007
    With Wocka you can do:
    ./configure
    make
    su
    wocka
    and you'll get the application installed, and a pacman db entry too.
    Wocka automatically figures out the package name, version and/or subversion revision, and if it can, other metadata too. It determines the build system (make, unsermake, scons, cmake, etc.). It can also create a basic PKGBUILD, with some of the fields (eg name, version) magically filled in. It can also handle upgrades and check AUR for PKGBUILDs.
    Visit the site for a Arch linux package, the source tarball, and detailed usage examples. There's also a feed you can subscribe to at the site if you want to be notified of updates.
    http://methylblue.com/wocka/
    Comments, contributions, etc. most welcome! Thanks.
    ===========
    I have discovered other programs that do a similar thing for Arch. They may be better and you may want to consider them, or at least demand I implement things they do into Wocka If you do use one of the others, I'd like to hear why, if you have the time, thanks!
    bpkg
    creapkg
    pacinstall
    versionpkg
    Last edited by mxcl (2007-02-17 03:24:12)

    Firstly, I'm really sorry I didn't see the above new replies, I subscribed to this thread, but never got the emails... Must have been my spam filter I expect.
    Gullible Jones wrote:Wait a minute, why the heck does this thing require QT? It doesn't have a GUI so why would it use the QT library? :?
    I used Qt as I have 4 years experience with it and develop fast with it. With Qt4 the library is separated into Core (CLI only) and GUI components, so as soon as Arch ships Qt4 and people have it installed en-mass, I'll switch to the CLI only library. I apologise if you think I'm crazy/stupid, you may be right
    You should have talked to Xentac. He already has an app named "Wakka" IIRC.
    Hmm sucks, I may have to rename again. I renamed the first time as pacgen is a name already used by two other projects!
    sud_crow wrote:wasnt pacman's sound waka waka waka?
    heh could be, I'm not a pacman expert. Extralife the webcomic always makes pacman say "Wocka!", but I spose I should have done more research!
    phrakture wrote:Send a PKGBUILD to AUR!
    Yeah I half did this and then couldn't figure out how to work the AUR or something. I'll try again.
    I had 0.3 ready a few weeks ago, then I started using my CRT with my new XBOX 360 and didn't boot to Linux until yesterday Now I have some new TFTs.
    The changes since 0.2:
    · Automatic upgrade/merge for new installs of subversion managed source installations
    · Better versioning detection
    · Easy automatic AUR builds via: wocka --aur appname
    · Metadata is extracted from LSM files
    · --upgrade switch
    The upgrade switch basically merges the old package with what's just installed, so you don't lose any information, I figured this was the safest route. Please correct me if you disagree. Thanks

  • How to install Dofus on Arch Linux 64

    Hey everyone! I am running Arch Linux 64-bit with E18 (enlightenment). I am trying to install Dofus (mmorpg game) but I am running into multiple issues. If anyone is willing to guide me through how I can fully install it and get it working that would be awesome! I tried yaourt but it would return errors while making the files and throw me into an infinite loop as it gets mad and tries to rebuild the file where the error occurs. I tried to install it directly from source from the tarball on the AUR, I did the ./configure and the game built and everything, but when I run the game through the launcher, the launcher doesn't open and I get 3 '?' signs with a diamond appear in the terminal on the next line. When I try to run the game directly, it gets stuck on the loading page at 63% with the red dofus loading symbol.
    Any help is greatly appreciated ... just gave arch linux a try after using FreeBSD/Debian for my whole life, never had any issues on FreeBSD or Debian, but apparently arch is a whole different story.
    Cheers,
    ~ zSpider86

    Well there weren't exactly any errors at all visibly. Its just that the game didn't start as it was supposed to. What I am asking in this thread is -- can you please link me to a guide of how to properly install Adobe AIR on 64 bit arch linux + get Dofus to work with it as well. And I can post back my results from that since I don't exactly have any errors to post at the moment.
    But if you insist, what I have I tried so far is this...
    [[email protected] ~]$ yaourt dofus
    1 aur/ankama-transition 3.7.20131013-1 [installed] (3)
    Updater for Ankama games Dofus and Wakfu
    2 aur/dofus 2.17.0-3 (39)
    A manga inspired, Massively Multiplayer Online Role-playing Game (MMORPG)
    for Adobe AIR .
    3 aur/dofus-beta 2.15.0-2 [installed] (4)
    A manga inspired, Massively Multiplayer Online Role-playing Game (MMORPG)
    for Adobe AIR (beta version).
    4 aur/dofus-transition 2.14.0-1 (0)
    A manga inspired, Massively Multiplayer Online Role-playing Game (MMORPG)
    for Adobe AIR (beta version).
    5 aur/dofus-uplauncher 2.11.0-1 (0)
    A manga inspired, Massively Multiplayer Online Role-playing Game (MMORPG)
    for Adobe AIR.
    ==> Enter n of packages to be installed (ex: 1 2 3 or 1-3)
    ==> --------------------------------------------------------
    ==> 2
    Then during the installation the errors occur when it gets to this package:
    lib32-webkitgtk2
    There are just dones of make errors flying down the screen and it causes them to loop and never ends...
    So really what I mean to ask is, is there anyway I can circumvent the installation of this file?
    ==> dofus dependencies:
    - ankama-transition>=3.5-6 (already installed)
    - adobe-air-sdk (already installed)
    - lib32-gtk2 (already installed)
    - lib32-libxml2 (already installed)
    - lib32-nss (already installed)
    - lib32-alsa-lib (already installed)
    - lib32-webkitgtk2 (building from AUR)
    ^ lib32-webkitgtk2 or install it another way because clearly dofus needs it, but it causes errors during installation.
    Also, I don't know what happens here, but this is the part in the terminal of the installation of lib32-webkitgtk2 where it starts to break and loops over and over again...
    CXX Source/JavaScriptCore/heap/libjavascriptcoregtk_1_0_la-WriteBarrierSupport.lo
    CXX Source/JavaScriptCore/debugger/libjavascriptcoregtk_1_0_la-DebuggerActivation.lo
    In file included from ./Source/WTF/wtf/PossiblyNull.h:29:0,
    from ./Source/WTF/wtf/FastMalloc.h:25,
    from ./Source/JavaScriptCore/config.h:69,
    from Source/JavaScriptCore/debugger/DebuggerActivation.cpp:26:
    ./Source/WTF/wtf/StdLibExtras.h: In function 'TO WTF::bitwise_cast(FROM)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyWTF_bitwise_cast_sizeof_casted_types_is_equal' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/StdLibExtras.h:134:5: note: in expansion of macro 'COMPILE_ASSERT'
    COMPILE_ASSERT(sizeof(TO) == sizeof(FROM), WTF_bitwise_cast_sizeof_casted_types_is_equal);
    ^
    ./Source/WTF/wtf/StdLibExtras.h: In function 'size_t WTF::roundUpToMultipleOf(size_t)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummydivisor_is_a_power_of_two' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/StdLibExtras.h:175:5: note: in expansion of macro 'COMPILE_ASSERT'
    COMPILE_ASSERT(divisor && !(divisor & (divisor - 1)), divisor_is_a_power_of_two);
    ^
    ./Source/WTF/wtf/OwnPtr.h: In member function 'bool WTF::OwnPtr<T>::operator==(const WTF::OwnPtr<U>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyOwnPtrs_should_never_be_equal' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/OwnPtr.h:83:66: note: in expansion of macro 'COMPILE_ASSERT'
    template<typename U> bool operator==(const OwnPtr<U>&) { COMPILE_ASSERT(!sizeof(U*), OwnPtrs_should_never_be_equal); return false; }
    ^
    ./Source/WTF/wtf/OwnPtr.h: In member function 'bool WTF::OwnPtr<T>::operator!=(const WTF::OwnPtr<U>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyOwnPtrs_should_never_be_equal' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/OwnPtr.h:84:66: note: in expansion of macro 'COMPILE_ASSERT'
    template<typename U> bool operator!=(const OwnPtr<U>&) { COMPILE_ASSERT(!sizeof(U*), OwnPtrs_should_never_be_equal); return false; }
    ^
    ./Source/WTF/wtf/OwnPtr.h: In member function 'bool WTF::OwnPtr<T>::operator==(const WTF::PassOwnPtr<U>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyOwnPtrs_should_never_be_equal' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/OwnPtr.h:85:70: note: in expansion of macro 'COMPILE_ASSERT'
    template<typename U> bool operator==(const PassOwnPtr<U>&) { COMPILE_ASSERT(!sizeof(U*), OwnPtrs_should_never_be_equal); return false; }
    ^
    ./Source/WTF/wtf/OwnPtr.h: In member function 'bool WTF::OwnPtr<T>::operator!=(const WTF::PassOwnPtr<U>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyOwnPtrs_should_never_be_equal' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/OwnPtr.h:86:70: note: in expansion of macro 'COMPILE_ASSERT'
    template<typename U> bool operator!=(const PassOwnPtr<U>&) { COMPILE_ASSERT(!sizeof(U*), OwnPtrs_should_never_be_equal); return false; }
    ^
    ./Source/WTF/wtf/PassRefPtr.h: In member function 'WTF::PassRefPtr<T>& WTF::PassRefPtr<T>::operator=(const WTF::PassRefPtr<T>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyPassRefPtr_should_never_be_assigned_to' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/PassRefPtr.h:84:52: note: in expansion of macro 'COMPILE_ASSERT'
    PassRefPtr& operator=(const PassRefPtr&) { COMPILE_ASSERT(!sizeof(T*), PassRefPtr_should_never_be_assigned_to); return *this; }
    ^
    In file included from ./Source/WTF/wtf/MetaAllocator.h:33:0,
    from ./Source/JavaScriptCore/jit/ExecutableAllocator.h:33,
    from ./Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:30,
    from ./Source/JavaScriptCore/interpreter/AbstractPC.h:29,
    from ./Source/JavaScriptCore/interpreter/CallFrame.h:26,
    from ./Source/JavaScriptCore/runtime/ArgList.h:25,
    from ./Source/JavaScriptCore/runtime/JSObject.h:26,
    from Source/JavaScriptCore/debugger/DebuggerActivation.h:29,
    from Source/JavaScriptCore/debugger/DebuggerActivation.cpp:27:
    ./Source/WTF/wtf/HashMap.h: At global scope:
    ./Source/WTF/wtf/HashMap.h:137:42: warning: invalid use of incomplete type 'class WTF::HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg>' [enabled by default]
    class HashMapKeysProxy : private HashMap {
    ^
    ./Source/WTF/wtf/HashMap.h:43:11: warning: declaration of 'class WTF::HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg>' [enabled by default]
    class HashMap {
    ^
    ./Source/WTF/wtf/HashMap.h:172:44: warning: invalid use of incomplete type 'class WTF::HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg>' [enabled by default]
    class HashMapValuesProxy : private HashMap {
    ^
    ./Source/WTF/wtf/HashMap.h:43:11: warning: declaration of 'class WTF::HashMap<KeyArg, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg>' [enabled by default]
    class HashMap {
    ^
    In file included from ./Source/JavaScriptCore/jit/ExecutableAllocator.h:38:0,
    from ./Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:30,
    from ./Source/JavaScriptCore/interpreter/AbstractPC.h:29,
    from ./Source/JavaScriptCore/interpreter/CallFrame.h:26,
    from ./Source/JavaScriptCore/runtime/ArgList.h:25,
    from ./Source/JavaScriptCore/runtime/JSObject.h:26,
    from Source/JavaScriptCore/debugger/DebuggerActivation.h:29,
    from Source/JavaScriptCore/debugger/DebuggerActivation.cpp:27:
    ./Source/WTF/wtf/Vector.h:637:44: warning: invalid use of incomplete type 'class WTF::Vector<T, inlineCapacity>' [enabled by default]
    class VectorReverseProxy : private Vector {
    ^
    ./Source/WTF/wtf/Vector.h:478:11: warning: declaration of 'class WTF::Vector<T, inlineCapacity>' [enabled by default]
    class Vector {
    ^
    In file included from ./Source/WTF/wtf/PossiblyNull.h:29:0,
    from ./Source/WTF/wtf/FastMalloc.h:25,
    from ./Source/JavaScriptCore/config.h:69,
    from Source/JavaScriptCore/debugger/DebuggerActivation.cpp:26:
    ./Source/WTF/wtf/PassOwnArrayPtr.h: In member function 'WTF::PassOwnArrayPtr<T>& WTF::PassOwnArrayPtr<T>::operator=(const WTF::PassOwnArrayPtr<T>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyPassOwnArrayPtr_should_never_be_assigned_to' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/PassOwnArrayPtr.h:68:58: note: in expansion of macro 'COMPILE_ASSERT'
    PassOwnArrayPtr& operator=(const PassOwnArrayPtr&) { COMPILE_ASSERT(!sizeof(T*), PassOwnArrayPtr_should_never_be_assigned_to); return *this; }
    ^
    ./Source/WTF/wtf/StringHasher.h: In static member function 'static unsigned int WTF::StringHasher::hashMemory(const void*)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummylength_must_be_a_multible_of_four' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/StringHasher.h:194:9: note: in expansion of macro 'COMPILE_ASSERT'
    COMPILE_ASSERT(!(length % 4), length_must_be_a_multible_of_four);
    ^
    ./Source/WTF/wtf/text/StringImpl.h: In static member function 'static WTF::PassRefPtr<WTF::StringImpl> WTF::StringImpl::createFromLiteral(const char (&)[charactersCount])':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyStringImplFromLiteralNotEmpty' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/text/StringImpl.h:306:9: note: in expansion of macro 'COMPILE_ASSERT'
    COMPILE_ASSERT(charactersCount > 1, StringImplFromLiteralNotEmpty);
    ^
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyStringImplFromLiteralCannotOverflow' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/text/StringImpl.h:307:9: note: in expansion of macro 'COMPILE_ASSERT'
    COMPILE_ASSERT((charactersCount - 1 <= ((unsigned(~0) - sizeof(StringImpl)) / sizeof(LChar))), StringImplFromLiteralCannotOverflow);
    ^
    ./Source/WTF/wtf/text/AtomicString.h: In constructor 'WTF::AtomicString::AtomicString(const char (&)[charactersCount], WTF::AtomicString::ConstructFromLiteralTag)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyAtomicStringFromLiteralNotEmpty' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/text/AtomicString.h:64:9: note: in expansion of macro 'COMPILE_ASSERT'
    COMPILE_ASSERT(charactersCount > 1, AtomicStringFromLiteralNotEmpty);
    ^
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyAtomicStringFromLiteralCannotOverflow' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/text/AtomicString.h:65:9: note: in expansion of macro 'COMPILE_ASSERT'
    COMPILE_ASSERT((charactersCount - 1 <= ((unsigned(~0) - sizeof(StringImpl)) / sizeof(LChar))), AtomicStringFromLiteralCannotOverflow);
    ^
    ./Source/WTF/wtf/PassOwnPtr.h: In member function 'WTF::PassOwnPtr<T>& WTF::PassOwnPtr<T>::operator=(const WTF::PassOwnPtr<T>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyPassOwnPtr_should_never_be_assigned_to' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/PassOwnPtr.h:71:52: note: in expansion of macro 'COMPILE_ASSERT'
    PassOwnPtr& operator=(const PassOwnPtr&) { COMPILE_ASSERT(!sizeof(T*), PassOwnPtr_should_never_be_assigned_to); return *this; }
    ^
    ./Source/WTF/wtf/PassOwnPtr.h: In member function 'bool WTF::PassOwnPtr<T>::operator==(const WTF::PassOwnPtr<U>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyOwnPtrs_should_never_be_equal' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/PassOwnPtr.h:80:70: note: in expansion of macro 'COMPILE_ASSERT'
    template<typename U> bool operator==(const PassOwnPtr<U>&) { COMPILE_ASSERT(!sizeof(U*), OwnPtrs_should_never_be_equal); return false; }
    ^
    ./Source/WTF/wtf/PassOwnPtr.h: In member function 'bool WTF::PassOwnPtr<T>::operator!=(const WTF::PassOwnPtr<U>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyOwnPtrs_should_never_be_equal' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/PassOwnPtr.h:81:70: note: in expansion of macro 'COMPILE_ASSERT'
    template<typename U> bool operator!=(const PassOwnPtr<U>&) { COMPILE_ASSERT(!sizeof(U*), OwnPtrs_should_never_be_equal); return false; }
    ^
    ./Source/WTF/wtf/PassOwnPtr.h: In member function 'bool WTF::PassOwnPtr<T>::operator==(const WTF::OwnPtr<U>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyOwnPtrs_should_never_be_equal' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/PassOwnPtr.h:82:66: note: in expansion of macro 'COMPILE_ASSERT'
    template<typename U> bool operator==(const OwnPtr<U>&) { COMPILE_ASSERT(!sizeof(U*), OwnPtrs_should_never_be_equal); return false; }
    ^
    ./Source/WTF/wtf/PassOwnPtr.h: In member function 'bool WTF::PassOwnPtr<T>::operator!=(const WTF::OwnPtr<U>&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyOwnPtrs_should_never_be_equal' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/WTF/wtf/PassOwnPtr.h:83:66: note: in expansion of macro 'COMPILE_ASSERT'
    template<typename U> bool operator!=(const OwnPtr<U>&) { COMPILE_ASSERT(!sizeof(U*), OwnPtrs_should_never_be_equal); return false; }
    ^
    ./Source/JavaScriptCore/runtime/JSVariableObject.h: In member function 'void JSC::JSVariableObject::finishCreation(JSC::JSGlobalData&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyRegister_should_be_same_size_as_WriteBarrier' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    ./Source/JavaScriptCore/runtime/JSVariableObject.h:70:13: note: in expansion of macro 'COMPILE_ASSERT'
    COMPILE_ASSERT(sizeof(WriteBarrier<Unknown>) == sizeof(Register), Register_should_be_same_size_as_WriteBarrier);
    ^
    Source/JavaScriptCore/debugger/DebuggerActivation.cpp: In static member function 'static void JSC::DebuggerActivation::visitChildren(JSC::JSCell*, JSC::SlotVisitor&)':
    ./Source/WTF/wtf/Assertions.h:331:47: warning: typedef 'dummyOverridesVisitChildrenWithoutSettingFlag' locally defined but not used [-Wunused-local-typedefs]
    #define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
    ^
    Source/JavaScriptCore/debugger/DebuggerActivation.cpp:54:5: note: in expansion of macro 'COMPILE_ASSERT'
    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
    ^
    CXX Source/JavaScriptCore/debugger/libjavascriptcoregtk_1_0_la-DebuggerCallFrame.lo
    ^CGNUmakefile:69688: recipe for target 'Source/JavaScriptCore/debugger/libjavascriptcoregtk_1_0_la-DebuggerCallFrame.lo' failed
    make[1]: *** [Source/JavaScriptCore/debugger/libjavascriptcoregtk_1_0_la-DebuggerCallFrame.lo] Interrupt
    GNUmakefile:22796: recipe for target 'all' failed
    make: *** [all] Interrupt
    ==> ERROR: Aborted by user! Exiting...
    Last edited by zSpider86 (2014-03-04 01:57:35)

  • 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.

  • Arch Linux and Splashy, a big update

    edit 2:
    If you don't want to build from sources have a look at this post: http://bbs.archlinux.org/viewtopic.php? … 03#p371403
    edit:
    UPDATED LINK:
    http://slexiw.netsons.org/files/splashy-stuff7.tar.gz
    About me:
    I'm a professional developer (mainly c/c++) with 10 years of development experience. I've never programmed in bash before so this is my first experience. My Linux knowledge isn't good either but i learned a lot thanks to Arch Linux.
    About the thread:
    I need a boot splash for a mini-pc I'm building and i want, of course, use Arch Linux. The current status is pretty depressive, initscripts-splash are outdated and there is no real support for user-mode boot splashing system (like splashy).
    A few suggestions (IMHO) for the Arch Linux developers:
    -Integrate the splash system in the official initscripts. If you write a wrapper like start_daemon and stop_daemon to be used in /etc/rc.multi and /etc/rc.shutdown, we can limit the changes to just /etc/rc.d/functions and at least the initscripts-splash will be more maintainable and the whole code more clean.
    -Patch killall5 to add the support to ignore pids. The patch is really small and the one used by Ubuntu is http://patches.ubuntu.com/s/sysvinit/ex … ids.dpatch. There is a package in AUR that uses a different patch: http://aur.archlinux.org/packages.php?ID=16445. I tested it and so far it worked fine, no problems to be reported.
    Why do we need a patched killall5? Splashy gets killed early during the shutdown process and the whole purpose of having a splash system is defeated. Currently Splashy cannot handle the reboot/shutdown.
    Enough talking, now back to the real stuff. I've modified the initscript-splash package (completely rewritten) and the splashy package (almost completely rewritten).
    I've also written a new package to support splashy themes. I'm using these packages for my system and i never had any problem so far.
    initscripts-splash:
    Rewritten to fit my needs for Splashy. Based on initscripts-2008.05-1 (in testing, if you are not using the testing repo you should better wait till the package hits core).
    It only supports MY Splashy package, no other splash system is supported, not even the "old" Splashy package from AUR.
    splashy:
    Based on the great work done by the maintainers and the contributors of the package in AUR. A lot has been rewritten and it's actually a lot different.
    splashy-themes:
    Simple package with just 1 theme (for now), depends on archlinux-wallpaper and uses a little hack to use the wallpapers provided. I will provide new themes as soon as i have time.
    Splashy now supports:
    Progress bar
    Text output
    Shutdown/Reboot
    Still working on resume/suspend and "verbose on error".
    Installation tutorial:
    -Download, compile and install sysvinit-mod from aur: http://aur.archlinux.org/packages.php?ID=16445
    -Remove your old initscripts or initscripts-splash package, remember to back /etc/rc.conf and /etc/inittab before.
    -Download, build and install initscripts-splash from http://slexiw.netsons.org/files/initscr … ash.tar.gz
    -Download, build and install splashy from http://slexiw.netsons.org/files/splashy.tar.gz
    -Download, build and install splashy-themes from http://slexiw.netsons.org/files/splashy-themes.tar.gz
    -You may want to restore your old /etc/rc.conf and /etc/inittab now.
    -Add SPLASH="splashy" to the end of /etc/rc.conf.
    -Edit /etc/splashy/config.xml to select the theme you want (to list the installed themes do "ls /usr/share/splashy/themes/", use the directory name as the theme name).
    -Add the "splashy" hook to /etc/mkinitcpio.conf (mine is after v86d and before autodetect)
    -Rebuild your initramfs: mkinitcpio -g /boot/kernel26.img
    -Add "splash" to the kernel command line, if you are not using uvesafb (v86d hook) add vga=791 too. You should also add "quiet".
    If you are still confused follow this guide: http://wiki.archlinux.org/index.php/Splashy
    Looking for suggestions, bug reports and patches!
    Thank you for reading this, you've done what i couldn't do, i can't believe i wrote all that cr*p.
    Last edited by lexiw (2008-05-29 15:28:49)

    phrakture wrote:
    lexiw wrote:-Integrate the splash system in the official initscripts. If you write a wrapper like start_daemon and stop_daemon to be used in /etc/rc.multi and /etc/rc.shutdown, we can limit the changes to just /etc/rc.d/functions and at least the initscripts-splash will be more maintainable and the whole code more clean.
    Now, we've gone through this a couple of times, and I don't actually want to integrate splash SPECIFIC stuff in the initscripts.
    However, we have the ability to override functions used by the initscripts. All we need to do is extrapolate out the pieces that you would need so that you can override them.
    So, if you would be willing to provide a patch against git (http://projects.archlinux.org/?p=initsc … ;a=summary) which extrapolates the pieces you need, we could get that applied, and you simply need to dump your overriding functions in /etc/rc.d/functions.d/. NOTE: submit the patch to the bug tracker, it will get lost if you just post it on the forums.
    Alternatively, you can just tell us (http://bugs.archlinux.org/) which pieces you want extrapolated, but this will take much longer, as I don't think anyone dealing with this stuff is really gung-ho about splash support.
    I will probably provide a patch after i studied the code a little deeper The /etc/rc.d/functions.d/ solution seems the right way to implement it.
    phrakture wrote:
    lexiw wrote:-Patch killall5 to add the support to ignore pids. The patch is really small and the one used by Ubuntu is http://patches.ubuntu.com/s/sysvinit/ex … ids.dpatch. There is a package in AUR that uses a different patch: http://aur.archlinux.org/packages.php?ID=16445. I tested it and so far it worked fine, no problems to be reported.
    Why do we need a patched killall5? Splashy gets killed early during the shutdown process and the whole purpose of having a splash system is defeated. Currently Splashy cannot handle the reboot/shutdown.
    This seems a little silly to me. I'm sure there's 10 or 20 other ways you could implement the same functionality without needing to patch a quasi-critical binary just for splash support. The patch affects all users. Splashy does not.
    I could not find an alternative solution by myself, as i stated my Linux knowledge isn't more than average. If you could provide me some hints I'll be happy to do some further research on the issue and provide a patch. I'll be glad to drop the sysvinit-mod dependency.
    Without the right know-how i just went the "mainstream way" and did what Debian/Ubuntu did.
    Edit:
    I didn't know you could ovveride functions, this will be a great boost for the initscripts-splash project Thank you!
    Last edited by lexiw (2008-05-22 17:35:15)

  • Kalu: Keeping Arch Linux Up-to-date

    Hi all,
    Yes, there are already a few “update notifier” out there, but I couldn’t find one that would fit my needs (granted I didn’t search too hard, I was also interested in making my own as a fun exercice…) so I decided to make a new one.
    kalu (which could stand for “Keeping Arch Linux Up-to-date”) is a small application that will add an icon to your systray and sit there, regularly checking if there’s anything new for you to upgrade. As soon as it finds something, it’ll show a notification to let you know about it. (In other words, revolutionary. )
    What kalu can check for:
    - updated packages (A word about this: kalu does not sync your "actual" databases, to avoid potential problems, but instead uses temporary copies of the dbs.)
    - updated watched packages (i.e. packages not installed, but for which you still wanna know when there's an update)
    - updated AUR packages
    - updated watched AUR packages (same as watched ones, but for AUR packages. Who would've guessed?)
    - news (from archlinux.org)
    (on its tooltip, kalu can also report how many (if any) dbs can be synced)
    When system/AUR upgrades are available, notifications can include a button to start the system/AUR upgrades. You can specify the command line to be executed when the button is clicked.
    And for the fun of it, it comes with an integrated "system updater," to do what `pacman -Syu` does but in a GTK GUI. Because why not? Also, I wanted one. :-)
    The system updater can also execute one (or more) command lines of your choice after a successfull upgrade, and you can use a variable ($PACKAGES) to be replaced by the list of upgraded packages. (Note that the list actually is of all packages involved in the sysupgrade, i.e. also those removed or added, e.g. when a package is replaced by another one.)
    If you don't like it/the idea of a graphical system updater, and not using it isn't enough, you can use configure option --disable-updater and turn kalu into a notifier only.
    From v1.1.0 onwards, two command line options - --manual-checks (-m) and --auto-checks (-a) - allow to run manual/auto checks from command line. No GUI will be used at all, everything gets printed on stderr/stdout (using the same templates as for notifications).
    This can be done without the need for a DISPLAY/running X server (i.e. no GTK init performed), thus works from a tty or through SSH. This can also be useful to use kalu from scripts.
    Alongside those options is a configure option (--disable-gui) to make kalu a small CLI-only binary (i.e. no dependency to GTK nor libnotify), which could be useful on GUIless box (e.g. servers), where kalu can then still be used to check for upgrades, watched packages, etc
    With v1.2.0 it is now possible to have kalu re-show the last notifications. So if you missed them or forgot what it was about, one click will re-show all notifications instantly without the need to ran the checks again. And, somewhat similarly to what happens after a system upgrade using kalu's updater, you can now use variable $PACKAGES on the command line to perform AUR updates. Can be useful to start some helper/script to handle the update of those packages automatically for you.
    Also note that kalu's source code (and issue tracker) has been moved to a git repo (was mercurial before), and is now hosted on github.
    Thanks to Painless Rob for his great icons.
    Links:
    - Slightly more verbose description
    - Source code
    - PKGBUILD in the AUR
    - Complete changelog
    Hopefully someone may find it useful.
    Cheers,
    -jacky
    Edit: Added info about recent changes/additions to latest version.
    Last edited by jjacky (2012-09-15 11:37:49)

    OK - a quick report.
    The news does not appear to have a 'mark read' button.
    Here is the debug;
    [neil@arch ~]$ sudo kalu --debug
    [08:34:02] debug mode enabled
    [08:34:02] config: attempting to read file /root/.config/kalu/kalu.conf
    [08:34:02] config: finished parsing /root/.config/kalu/kalu.conf
    [08:34:02] config: attempting to read file /root/.config/kalu/watched.conf
    [08:34:02] config: finished parsing /root/.config/kalu/watched.conf
    [08:34:02] config: attempting to read file /root/.config/kalu/watched-aur.conf
    [08:34:02] config: finished parsing /root/.config/kalu/watched-aur.conf
    [08:34:02] config: attempting to read file /root/.config/kalu/news.conf
    [08:34:02] config: finished parsing /root/.config/kalu/news.conf
    [08:34:04] downloading http://www.archlinux.org/feeds/news/
    [08:34:05] downloaded 12335 bytes
    [08:34:05] -> Minimum kernel requirement 2.6.32
    [08:34:05] -> libpng/libtiff rebuilds move from [testing]
    [08:34:05] -> Arch Linux @ FOSDEM 2012
    [08:34:05] -> kmod replaces module-init-tools
    [08:34:05] -> pacman 4 moves to [core]
    [08:34:05] -> Users of unofficial kernels must enable devtmpfs support
    [08:34:05] -> filesystem upgrade - manual intervention required
    [08:34:05] -> wiki and bbs downtime
    [08:34:05] -> initscripts update - manual intervention required
    [08:34:05] -> Hostname utility moved from net-tools to inetutils
    [08:34:05] parsing pacman.conf (/etc/pacman.conf) for options
    [08:34:05] config: attempting to read file /etc/pacman.conf
    [08:34:05] config: new section 'options'
    [08:34:05] config: SyncFirst: pacman
    [08:34:05] config: arch: x86_64
    [08:34:05] config: checkspace
    [08:34:05] config: SigLevel: Never
    [08:34:05] config: new section 'core'
    [08:34:05] config file /etc/pacman.conf, line 82: including /etc/pacman.d/mirrorlist
    [08:34:05] config: attempting to read file /etc/pacman.d/mirrorlist
    [08:34:05] config: finished parsing /etc/pacman.d/mirrorlist
    [08:34:05] config: new section 'extra'
    [08:34:05] config file /etc/pacman.conf, line 86: including /etc/pacman.d/mirrorlist
    [08:34:05] config: attempting to read file /etc/pacman.d/mirrorlist
    [08:34:05] config: finished parsing /etc/pacman.d/mirrorlist
    [08:34:05] config: new section 'community'
    [08:34:05] config file /etc/pacman.conf, line 94: including /etc/pacman.d/mirrorlist
    [08:34:05] config: attempting to read file /etc/pacman.d/mirrorlist
    [08:34:05] config: finished parsing /etc/pacman.d/mirrorlist
    [08:34:05] config: new section 'multilib'
    [08:34:05] config file /etc/pacman.conf, line 105: including /etc/pacman.d/mirrorlist
    [08:34:05] config: attempting to read file /etc/pacman.d/mirrorlist
    [08:34:05] config: finished parsing /etc/pacman.d/mirrorlist
    [08:34:05] config: new section 'archlinuxfr'
    [08:34:05] config: finished parsing /etc/pacman.conf
    [08:34:05] setting up libalpm
    [08:34:05] creating local db
    [08:34:05] created tmp folder /tmp/kalu-YB259V
    [08:34:05] created symlink /tmp/kalu-YB259V/local
    [08:34:05] created folder /tmp/kalu-YB259V/sync
    [08:34:05] copying /var/lib/pacman/sync/multilib.db to /tmp/kalu-YB259V/sync/multilib.db
    [08:34:05] ..done
    [08:34:05] updated time for /tmp/kalu-YB259V/sync/multilib.db
    [08:34:05] copying /var/lib/pacman/sync/archlinuxfr.db to /tmp/kalu-YB259V/sync/archlinuxfr.db
    [08:34:05] ..done
    [08:34:05] updated time for /tmp/kalu-YB259V/sync/archlinuxfr.db
    [08:34:05] copying /var/lib/pacman/sync/extra.db to /tmp/kalu-YB259V/sync/extra.db
    [08:34:05] ..done
    [08:34:05] updated time for /tmp/kalu-YB259V/sync/extra.db
    [08:34:05] copying /var/lib/pacman/sync/community.db to /tmp/kalu-YB259V/sync/community.db
    [08:34:05] ..done
    [08:34:05] updated time for /tmp/kalu-YB259V/sync/community.db
    [08:34:05] copying /var/lib/pacman/sync/core.db to /tmp/kalu-YB259V/sync/core.db
    [08:34:05] ..done
    [08:34:05] updated time for /tmp/kalu-YB259V/sync/core.db
    [08:34:05] register core
    [08:34:05] add server http://mir1.archlinux.fr/archlinux/core/os/x86_64 into core
    [08:34:05] add server http://archlinux.mirror.dkm.cz/pub/archlinux/core/os/x86_64 into core
    [08:34:05] add server http://archlinux.mirror.kangaroot.net/core/os/x86_64 into core
    [08:34:05] add server http://ftp.uni-kl.de/pub/linux/archlinux/core/os/x86_64 into core
    [08:34:05] add server http://archlinux.mirror.root.lu/core/os/x86_64 into core
    [08:34:05] add server http://ftp.halifax.rwth-aachen.de/archlinux/core/os/x86_64 into core
    [08:34:05] register extra
    [08:34:05] add server http://mir1.archlinux.fr/archlinux/extra/os/x86_64 into extra
    [08:34:05] add server http://archlinux.mirror.dkm.cz/pub/archlinux/extra/os/x86_64 into extra
    [08:34:05] add server http://archlinux.mirror.kangaroot.net/extra/os/x86_64 into extra
    [08:34:05] add server http://ftp.uni-kl.de/pub/linux/archlinux/extra/os/x86_64 into extra
    [08:34:05] add server http://archlinux.mirror.root.lu/extra/os/x86_64 into extra
    [08:34:05] add server http://ftp.halifax.rwth-aachen.de/archlinux/extra/os/x86_64 into extra
    [08:34:05] register community
    [08:34:05] add server http://mir1.archlinux.fr/archlinux/community/os/x86_64 into community
    [08:34:05] add server http://archlinux.mirror.dkm.cz/pub/archlinux/community/os/x86_64 into community
    [08:34:05] add server http://archlinux.mirror.kangaroot.net/community/os/x86_64 into community
    [08:34:05] add server http://ftp.uni-kl.de/pub/linux/archlinux/community/os/x86_64 into community
    [08:34:05] add server http://archlinux.mirror.root.lu/community/os/x86_64 into community
    [08:34:05] add server http://ftp.halifax.rwth-aachen.de/archlinux/community/os/x86_64 into community
    [08:34:05] register multilib
    [08:34:05] add server http://mir1.archlinux.fr/archlinux/multilib/os/x86_64 into multilib
    [08:34:05] add server http://archlinux.mirror.dkm.cz/pub/archlinux/multilib/os/x86_64 into multilib
    [08:34:05] add server http://archlinux.mirror.kangaroot.net/multilib/os/x86_64 into multilib
    [08:34:05] add server http://ftp.uni-kl.de/pub/linux/archlinux/multilib/os/x86_64 into multilib
    [08:34:05] add server http://archlinux.mirror.root.lu/multilib/os/x86_64 into multilib
    [08:34:05] add server http://ftp.halifax.rwth-aachen.de/archlinux/multilib/os/x86_64 into multilib
    [08:34:05] register archlinuxfr
    [08:34:05] add server http://repo.archlinux.fr/x86_64 into archlinuxfr
    [08:34:05] core was updated
    [08:34:07] extra was updated
    [08:34:09] community was updated
    [08:34:09] multilib was updated
    [08:34:10] archlinuxfr was updated
    [08:34:10] -> gdome2 0.8.1-3 -> 0.8.1-4 [dl=106416; ins=942080]
    [08:34:10] -> gsm 1.0.13-6 -> 1.0.13-7 [dl=33196; ins=163840]
    [08:34:10] -> libcdaudio 0.99.12-5 -> 0.99.12-6 [dl=51152; ins=266240]
    [08:34:10] -> libgme 0.6.0-1 -> 0.6.0-2 [dl=117552; ins=348160]
    [08:34:10] -> libid3tag 0.15.1b-6 -> 0.15.1b-7 [dl=42820; ins=307200]
    [08:34:10] -> libieee1284 0.2.11-3 -> 0.2.11-4 [dl=62344; ins=421888]
    [08:34:10] -> libirman 0.4.5-2 -> 0.4.5-3 [dl=12576; ins=69632]
    [08:34:10] -> libmodplug 0.8.8.3-1 -> 0.8.8.4-1 [dl=150248; ins=409600]
    [08:34:10] -> libofa 0.9.3-3 -> 0.9.3-4 [dl=57572; ins=327680]
    [08:34:10] -> libwpg 0.2.0-1 -> 0.2.1-1 [dl=100924; ins=610304]
    [08:34:10] -> libzip 0.10-1 -> 0.10-2 [dl=108000; ins=503808]
    [08:34:10] -> lsb-release 1.4-10 -> 1.4-11 [dl=6204; ins=53248]
    [08:34:10] -> menu-cache 0.3.2-1 -> 0.3.2-2 [dl=47280; ins=188416]
    [08:34:10] -> neon 0.29.6-2 -> 0.29.6-3 [dl=182224; ins=1282048]
    [08:34:10] -> openbox 3.5.0-4 -> 3.5.0-5 [dl=324440; ins=2306048]
    [08:34:10] -> p11-kit 0.9-1 -> 0.11-1 [dl=61216; ins=438272]
    [08:34:10] -> perl-encode-locale 1.02-1 -> 1.03-1 [dl=9544; ins=53248]
    [08:34:10] -> perl-error 0.17016-2 -> 0.17017-1 [dl=17860; ins=77824]
    [08:34:10] -> perl-http-date 6.00-1 -> 6.01-1 [dl=8252; ins=49152]
    [08:34:10] -> perl-file-listing 6.03-1 -> 6.04-1 [dl=7300; ins=49152]
    [08:34:10] -> perl-html-tagset 3.20-2 -> 3.20-3 [dl=9916; ins=57344]
    [08:34:10] -> perl-http-message 6.02-1 -> 6.03-1 [dl=70156; ins=229376]
    [08:34:10] -> perl-http-cookies 6.00-1 -> 6.01-1 [dl=19828; ins=90112]
    [08:34:10] -> perl-http-negotiate 6.00-1 -> 6.01-1 [dl=11104; ins=57344]
    [08:34:10] -> sudo 1.8.3.p2-2 -> 1.8.4-1 [dl=519196; ins=2236416]
    [08:34:10] -> taglib 1.7-3 -> 1.7-4 [dl=231812; ins=1265664]
    [08:34:10] -> tint2 0.11-4 -> 0.11-5 [dl=89756; ins=417792]
    [08:34:10] -> vlc 1.1.13-6 -> 2.0.0-1 [dl=6922380; ins=36552704]
    [08:34:10] looking for AUR updates
    [08:34:10] downloading http://aur.archlinux.org/rpc.php?type=multiinfo&arg[]=alan-bzr&arg[]=archey&arg[]=archlinux-lxdm-theme&arg[]=conky-lua&arg[]=exaile&arg[]=gnome-menus2&arg[]=graveman&arg[]=gtk-engines-clearlooks-colors&arg[]=i2c-tools&arg[]=kalu&arg[]=openbox-menu&arg[]=pacmanxg4-bin&arg[]=python-xrandr&arg[]=read-edid&arg[]=readahead-fedora&arg[]=toluapp&arg[]=wicked-git&arg[]=wmfs-git&arg[]=xdg-su&arg[]=yapan
    [08:34:10] downloaded 7730 bytes
    [08:34:10] parsing json
    [08:34:10] got 20 results
    [08:34:10] pacmanxg4-bin 4.7-2 -> 4.8-1
    [08:34:10] -> pacmanxg4-bin 4.7-2 -> 4.8-1 [dl=0; ins=0]
    [08:34:10] removing /tmp/kalu-YB259V/sync/archlinuxfr.db success (0)
    [08:34:10] removing /tmp/kalu-YB259V/sync/multilib.db success (0)
    [08:34:10] removing /tmp/kalu-YB259V/sync/community.db success (0)
    [08:34:10] removing /tmp/kalu-YB259V/sync/extra.db success (0)
    [08:34:10] removing /tmp/kalu-YB259V/sync/core.db success (0)
    [08:34:10] removing /tmp/kalu-YB259V/sync success (0)
    [08:34:10] removing /tmp/kalu-YB259V/local success (0)
    [08:34:10] removing /tmp/kalu-YB259V success (0)
    [08:34:18] config: attempting to read file /etc/pacman.conf
    [08:34:18] config: new section 'options'
    [08:34:18] config: SyncFirst: pacman
    [08:34:18] config: arch: x86_64
    [08:34:18] config: checkspace
    [08:34:18] config: SigLevel: Never
    [08:34:18] config: new section 'core'
    [08:34:18] config file /etc/pacman.conf, line 82: including /etc/pacman.d/mirrorlist
    [08:34:18] config: attempting to read file /etc/pacman.d/mirrorlist
    [08:34:18] config: finished parsing /etc/pacman.d/mirrorlist
    [08:34:18] config: new section 'extra'
    [08:34:18] config file /etc/pacman.conf, line 86: including /etc/pacman.d/mirrorlist
    [08:34:18] config: attempting to read file /etc/pacman.d/mirrorlist
    [08:34:18] config: finished parsing /etc/pacman.d/mirrorlist
    [08:34:18] config: new section 'community'
    [08:34:18] config file /etc/pacman.conf, line 94: including /etc/pacman.d/mirrorlist
    [08:34:18] config: attempting to read file /etc/pacman.d/mirrorlist
    [08:34:18] config: finished parsing /etc/pacman.d/mirrorlist
    [08:34:18] config: new section 'multilib'
    [08:34:18] config file /etc/pacman.conf, line 105: including /etc/pacman.d/mirrorlist
    [08:34:18] config: attempting to read file /etc/pacman.d/mirrorlist
    [08:34:18] config: finished parsing /etc/pacman.d/mirrorlist
    [08:34:18] config: new section 'archlinuxfr'
    [08:34:18] config: finished parsing /etc/pacman.conf
    [08:34:18] [kalu-updater] sender is :1.16 -- client is (null)
    [08:34:18] [kalu-updater] client is :1.16
    [08:34:18] MethodFinished for method Init
    [08:34:18] [kalu-updater] sender is :1.16 -- client is :1.16
    [08:34:18] [kalu-updater] getting alpm params
    [08:34:18] [kalu-updater] init alpm
    [08:34:18] MethodFinished for method InitAlpm
    [08:34:18] [kalu-updater] sender is :1.16 -- client is :1.16
    [08:34:18] [kalu-updater] add server http://mir1.archlinux.fr/archlinux/core/os/x86_64 into core
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.dkm.cz/pub/archlinux/core/os/x86_64 into core
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.kangaroot.net/core/os/x86_64 into core
    [08:34:18] [kalu-updater] add server http://ftp.uni-kl.de/pub/linux/archlinux/core/os/x86_64 into core
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.root.lu/core/os/x86_64 into core
    [08:34:18] [kalu-updater] add server http://ftp.halifax.rwth-aachen.de/archlinux/core/os/x86_64 into core
    [08:34:18] MethodFinished for method AddDb
    [08:34:18] [kalu-updater] sender is :1.16 -- client is :1.16
    [08:34:18] [kalu-updater] add server http://mir1.archlinux.fr/archlinux/extra/os/x86_64 into extra
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.dkm.cz/pub/archlinux/extra/os/x86_64 into extra
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.kangaroot.net/extra/os/x86_64 into extra
    [08:34:18] [kalu-updater] add server http://ftp.uni-kl.de/pub/linux/archlinux/extra/os/x86_64 into extra
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.root.lu/extra/os/x86_64 into extra
    [08:34:18] [kalu-updater] add server http://ftp.halifax.rwth-aachen.de/archlinux/extra/os/x86_64 into extra
    [08:34:18] MethodFinished for method AddDb
    [08:34:18] [kalu-updater] sender is :1.16 -- client is :1.16
    [08:34:18] [kalu-updater] add server http://mir1.archlinux.fr/archlinux/community/os/x86_64 into community
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.dkm.cz/pub/archlinux/community/os/x86_64 into community
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.kangaroot.net/community/os/x86_64 into community
    [08:34:18] [kalu-updater] add server http://ftp.uni-kl.de/pub/linux/archlinux/community/os/x86_64 into community
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.root.lu/community/os/x86_64 into community
    [08:34:18] [kalu-updater] add server http://ftp.halifax.rwth-aachen.de/archlinux/community/os/x86_64 into community
    [08:34:18] MethodFinished for method AddDb
    [08:34:18] [kalu-updater] sender is :1.16 -- client is :1.16
    [08:34:18] [kalu-updater] add server http://mir1.archlinux.fr/archlinux/multilib/os/x86_64 into multilib
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.dkm.cz/pub/archlinux/multilib/os/x86_64 into multilib
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.kangaroot.net/multilib/os/x86_64 into multilib
    [08:34:18] [kalu-updater] add server http://ftp.uni-kl.de/pub/linux/archlinux/multilib/os/x86_64 into multilib
    [08:34:18] [kalu-updater] add server http://archlinux.mirror.root.lu/multilib/os/x86_64 into multilib
    [08:34:18] [kalu-updater] add server http://ftp.halifax.rwth-aachen.de/archlinux/multilib/os/x86_64 into multilib
    [08:34:18] MethodFinished for method AddDb
    [08:34:18] [kalu-updater] sender is :1.16 -- client is :1.16
    [08:34:18] [kalu-updater] add server http://repo.archlinux.fr/x86_64 into archlinuxfr
    [08:34:18] MethodFinished for method AddDb
    [08:34:18] [kalu-updater] sender is :1.16 -- client is :1.16
    [08:34:22] MethodFinished for method SyncDbs
    [08:34:22] [kalu-updater] sender is :1.16 -- client is :1.16
    [08:34:27] [kalu-updater] sender is :1.16 -- client is :1.16
    [08:34:47] MethodFinished for method SysUpgrade
    [08:35:26] downloading http://www.archlinux.org/feeds/news/
    [08:35:27] downloaded 12335 bytes
    I still have '1 AUR packages updated' on the mouseover...

  • Iceland Thermal Springs Lava Cave Arch Linux Desktop Wallpaper

    It's been a long time since I've contributed anything to Arch. Very disappointed in myself. Something I've never done is artwork. Never considered myself an artist.
    Daniel Isenmann, on the other hand is an artist, with fantastic photography skills. On seeing his iceland photo I immediately saw potential for an Arch Linux wallpaper. I don't have the gimp skills I would like, but I'm not unhappy with how it turned out:
    http://buchuki.deviantart.com/#/d48n3cf
    I've posted a few resolutions here:
    http://archlinux.ca/art/
    Critiques welcome. ;-)
    Dusty
    Last edited by Dusty (2011-09-03 07:26:11)

    Hey, that's kind of neat. How did you do it?
    Can I suggest that you make the URL less conspicuous/different font and closer to the bottom of the screen?

  • 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

  • Arch Linux for Google Compute Engine

    Hi Arch users,
    I’ve created a tool that can create an Arch Linux image for Google Compute Engine. It has the compute-image-packages software preinstalled so basic GCE integration works.
    I’m working to improve the boot times and shrink the image since it’s a bit larger than I’d like it to be. You can follow the instructions below to boot a virtual machine running Arch.
    The source code is hosted on Github: https://github.com/GoogleCloudPlatform/ … ge-builder, pull requests welcome!
    I've already built one today and has been made public on Cloud Storage at gs://jeremyje/arch-stable/arch-v20140906.tar.gz
    Instructions to boot a VM with the image:
    1. Create a project or pick an existing one. Turn on Compute Engine.
    https://console.developers.google.com/
    Click "Create project"
    Enter a project name and project id.
    Go to Compute > Compute Engine
    If necessary, enable billing.
    2. Add the Arch Image to your Project
    Go to Compute > Compute Engine > Images
    Click "New image"
    Name: arch-v20140906
    Description: Arch Linux built on 2014-09-06
    Source Type: Cloud Storage object
    Cloud Storage Object Path: gs://jeremyje/arch-stable/arch-v20140906.tar.gz
    3. Create an Arch Linux instance.
    Go to https://console.developers.google.com/
    Select your project.
    Compute > Compute Engine > VM instances > Add Instance
    Select a zone, machine type, and select the “arch-v20140906” image.
    You can SSH into the VM by clicking on the SSH button after you create it.
    If you like command line here's the equivalent.
    Google Cloud SDK: https://developers.google.com/cloud/sdk/
    # Install Python2
    pacman -S python2
    # Install Cloud SDK
    export CLOUDSDK_PYTHON=/usr/bin/python2
    curl https://sdk.cloud.google.com | bash
    echo “export CLOUDSDK_PYTHON=/usr/bin/python2” >> ~/.bashrc
    source ~/.bashrc
    # Login, create a project
    gcloud auth login
    # Add the image to your project.
    gcloud compute images create archlinux gs://jeremyje/arch-stable/arch-v20140906.tar.gz --description “Arch Linux built on 2014-09-06”
    # Create the instance booting Arch
    gcloud compute instances create archvm --zone us-central1-a --machine-type f1-micro --image arch-v20140906
    Lastly, there’s no official support for these images but if you find a problem please file a bug or submit a fix on Github.

    Hi! Do you have any update of your Arch image?
    Thank you

  • Recommend Virtualization Software on Arch Linux 64-bit

    I have my Arch Linux 64-bit workstation and need to test out some virtual guest machines and was wondering if anyone on Arch Linux has ever had any results between Oracle's 'VirtualBox' or 'VMware' suite. I heard good things about both. VMware has a crazy / confusing amount of options and different versions which appear to be more 'enterprise' geared but this could be the fact that it's just been around longer and more known commonly known.
    Thanks for any feedback / suggestions on what I should use.

    http://www.virtualbox.org/wiki/VBox_vs_Others
    Of course, take it with a grain of salt since it is from Virtualbox website.
    http://stackoverflow.com/questions/6301 … virtualbox
    Some slightly old benchmarks there.  Vbox is in version 3 now, not 2.  But probably somewhere out there you could google some benchmarks if that is what you are interested in.
    As far as personal experience, I used to use Qemu, then VMware, and now been on Virtualbox for a couple years.  I like having a little pet WinXP kept in its cage   It works fine with me. I switched off of VMware because I liked the Seamless Mode in Vbox and Vbox has experimental D3D support

Maybe you are looking for