Arch Linux Distrowatch's ranking via conky

in 3 steps
1) Download Beautiful Soup for Python & copy BeautifulSoup.py to /usr/lib/python2.6/site-packages
2) Create ranking.py containing:
#!/usr/bin/env python
import urllib2
from BeautifulSoup import BeautifulSoup
address = "http://distrowatch.com/"
try:
    website = urllib2.urlopen(address)
    soup = BeautifulSoup(''.join(website))
    rankings = soup.find(text= "Page Hit Ranking").findParent("table").find(text="Arch").findParent("tr").find("th").string
    print rankings
except:
    print "N/A"
3) Add in .conkyrc
Distrowatch's Ranking: $alignr ${execi 7200 python ~/.scripts/ranking.py}
http://sites.google.com/site/zazazpsite … 7conky.png  -- Please follow image posting rules  -- Inxsible
credits to iggykoopa
Last edited by Inxsible (2011-05-04 19:15:20)

Thanks a lot for that script
A few notes:
a) Beautiful Soup is in the community repo. You can get it with: pacman -S python-beautifulsoup
b) This script didn't work for me right away. After some help from the #python channel on FreeNode I found out, that it's probably because I'm behind a proxy. When executed from bash (where http_proxy was set) it was working, with conky not. I've searched the internet and found, that urllib2 has a proxy handler. I wasn't able to test it yet, but my script looks now as follows:
#!/usr/bin/env python
import urllib2
from BeautifulSoup import BeautifulSoup
address = "http://distrowatch.com/"
try:
proxy = urllib2.ProxyHandler({'http':'http://proxy.yourdomain.com:8080'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
website = urllib2.urlopen(address)
soup = BeautifulSoup(''.join(website))
rankings = soup.find(text= "Page Hit Ranking").findParent("table").find(text="Arch").findParent("tr").find("th").string
print rankings
except:
print "N/A"
# EOF
c) I didn't have a command python on my system, but rather python2. So the line in the conkyrc needs to changed as well (for users with the same problem):
Distrowatch's Ranking: $alignr ${execi 7200 python2 ~/.scripts/ranking.py}
Cheers,
Air
Last edited by AirOnSkin (2011-05-04 18:30:29)

Similar Messages

  • Arch Linux on Distrowatch

    http://www.distrowatch.com/stats.php?section=popularity
    Arch Linux Rankings:
    Last 12 months: 58
    Last 6 months: 56
    Last 3 month: 45
    Last 1 month: 28

    i3839 wrote:Well, theoretically it shouldn't matter if 100 or 1000000 people use a distro for the developers, they still should do the same work. Only thing that really changes is that the community will be much bigger, so there will be more questions and demands, but those should be handled by the community itself imho. A bigger community also means potentially more people willing to write docs and make packages, so the "problem" should be fixed by itself. Only thing that can go wrong is that reality isn't in sync with theory .
    yeah the last sentence is more true than the rest. and the first one is definitely the least accurate. some devs do more work than others and everyone should have the same workload. the TURs should be processing incoming, the TURs should be moving stuff to staging more regularily. ALL devs should be working abit on moving packages from incoming and staging to the repos. alll package maintainers should regularily work on their packages and ideally the workload (ie number of packages maintained) should be equal.
    but for every 200 packages added you need one more maintainer. some devs have way more than 100 packages which is entirely too much. i did 400+ for three months and it drove me nuts. it isn't good to have some overworked while others disappear for months and maintain only a few packages.
    doc developers NEED to be ontop of what is going on inthe community so that anything that is becoming FAQs is incorporated into the docs and does not lie in in three or four different places.
    it would be nice too if the workload was in such a way that releases could be more regular or even incremental so that ugly upgrades can be avoided or installing via ftp.
    and so forth.
    it would be nice if your theory was true but alas i just don't think it is.

  • Installation Arch Linux via proxy

    How to install Arch Linux via proxy?
    Best regard!

    https://wiki.archlinux.org/index.php/Pa … ettings.3F

  • Building VIA's Prosavage drivers on Arch Linux

    The source code for VIA's prosavage drivers for Linux is available here:
    http://www.viaarena.com/default.aspx?Pa … bCatID=112
    What I'd like to know is, how do I compile it for Arch Linux instead of Redhat? I know it sounds stupid, but if the readme.txt is correct, Redhat has the placement of XFree86 arse backwards, with the executables, libraries, etc. in /root/xc (!), and the stuff within that directory also vastly changed from the normal layout. Unless I am reading the instructions totally wrong, installing VIA's drivers is going to be a big fat pain in the ass... Does anyone have advice as to how to go about this?
    (Please read the readme.txt included with the source package at the link I gave. I know this may be inconvenient, but I'm pretty sure that I can't post the readme here, as it is copyrighted material.)

    D'oh... I was reading it wrong. I have to recompile XOrg to install this driver... Shouldn't be too tough.
    My question now is: is it worth it? How do VIA's drivers compare to the DRI/Mesa ones - is OpenGL support any better?

  • Failure to install Arch Linux via netinstall AIF; PGP key issues

    Hello,
    I'm am attempting a fresh install Arch Linux on a clean machine: Dell 1420, 4GB RAM. I am using the archlinux-2012.02.09_04-00-01-netinstall-dual.iso installer.
    Installation progresses nicely through the package selection (I choose core, core-dev, xfce, and xorg packages only, to keep it simple for now). The packages download quickly, and then the installation fails during installation indicating that none of the PGP keys are known for any of the downloaded files. The process essentially aborts and I press 'Continue' returning me to the main menu. I have repeated this process several times.
    What needs to be done to install Arch Linux?
    Thanks.

    Hi,
    Thanks, I have been through the Beginners Guide. I just want to get Arch Linux to "start" with a very basic GUI. during one of my installation iterations I did install only 'core' files, but the same failure occurred. so I'm at a loss as to how to get even a basic installation to take hold. Thoughts on the pgp key issues?
    Thanks.
    Update: I've switched to using the default net installer (2011.08.19) and the installation succeeded!
    Last edited by zaleksf (2012-02-12 05:12:32)

  • TidOS Public Alpha release (New Arch Linux based distro)

    I'm a regular lurker on the 4chan technology board (AKA /g/) and I've been following a project known as TidOS by the user "King Neckbeard". Think of it as a preconfigured/prericed Arch Linux installation for those that want a quick and dirty setup, something like Archbang with xmonad instead.
    King Neckbeard wrote:
    xmonad + conky + trayer + nm-applet make up the DE of sorts
    applications started via dmenu (firefox has a shortcut key)
    mpd, preconfigured
    Just Works
    POSSIBLE BUGS:
    >networkmanager applet not visible, to fix press win + r and type netfix or run netfix in a console
    >music not playing, to fix restart mpd and run mpc play
    Screenshots:
    Github:
    http://github.com/TidOS/TidOS
    ISO image download (i686 only, x86_64 users can compile an image themselves from the github sources):
    http://www.megaupload.com/?d=PJLRZ5I4
    Last edited by zowki (2010-05-13 16:24:34)

    jordanmthomas wrote:TidOS is dead by the way.  /g/ did not seem to care much about it so I haven't done anything to it since I made the first image.
    aww.
    well you are all welcome to poke your nose in at #witchlinux on irc.freenode.net , it's still alive, n welcomes everyone else's input.
    there's the arch rowan witch release, a half made archiso, which is basically to be pretty much the same as where the debian rowan witch.iso left off, and then later once it's built to some reasonably satasfactory standard, a larger fuller witch called jamella is planned to feature loads of tiling window managers, xmonad of course included, as well as awesome, and others, as well as a raft of programmer tools n toys, and then later a refined sleak but complete witch after that.   so goes my plan anyways, but of course, anyone can run off n make their own witch, and are encouraged to do so.    so if u want a preconfigured arch with xmonad, once we get rowan out of the stalls, jamella will soon follow after.   (i been distracted with other interests this past month or so tho, so my contributions dropping off have slowed things, but it's still alive, i assure you.)
    or....
    to stop me going on about witch... tidos could be revived!  XD
    and i wish you all the best with that.

  • [solved] Arch linux access point with multiple interfaces for the NAT

    Hi, I have a router running Arch linux. It is connected via LAN (let's call it eth0) to the internet. It has a second LAN interface, eth1, and a wireless interface in master mode, wlan0.
    Now, Everything works perfectly except providing network connectivity on eth1 and wlan0 simultaneously. I followed the guide in the "Internet share" wiki article and use dnsmasq/hostapd for the AP. It appears as if all traffic from the router is sent to the wlan0 interface, even if it came in through eth1 (for example, dhcp requests). I cannot really find information how to solve this. The words "bonding" and "iptables" are floating around, but there is not really an easy to understand tutorial for this.
    What do I need to do to use both the eth1 and wlan0 interface (for different clients!) on my router?
    Best regards, and thank you in advance
    Jan Oliver
    /e: This seems to be my problem: http://www.novell.com/support/kb/doc.php?id=7000318 How do I solve this using the usual iptables? (The way described in the article doesn't work: "RTNETLINK answers: No such process" errors.)
    Last edited by janoliver (2013-09-25 22:24:53)

    Or you could bridge eth1 and wlan0, and make dnsmasq bind/listen on that bridge...

  • [SOLVED] (U)EFI dualboot Win7 Arch Linux - partitions gone - recovery?

    Hi everybody,
    I have a slight problem with my (U)EFI dualboot system (Windows 7 and Arch Linux) which used to be configured using rEFInd like it is described in my previous post:
    https://bbs.archlinux.org/viewtopic.php … 6#p1300356
    <EFI PARTITION> is /dev/sda1 and I used to boot via <EFI PARTITION>\EFI\Boot\Bootx64.efi which then successfully either loaded Windows or Linux kernel.
    Thanks to my own stupidity and a recent update of refind I decided to copy the new driver, font and icon folders to the <EFI PARTITION> in order to be up-to-date.
    After doing so, the rEFInd boot menu had a third icon which said "Boot via \EFI\Boot\Bootx64.efi" and if I clicked on it a second rEFInd boot menu appeared with only the two icons for Windows 7 and Arch.
    So I figured I could delete Bootx64.efi and ultimately did so, unfortunately. Afterwards I couldn't boot neither Windows nor Linux anymore.
    Following this I went through my noumerous USB boot sticks in order to be able to recover the Bootx64.efi. Unfortunately the first USB stick was a Windows XP one which has the plop bootloader alongside:
    http://www.plop.at/en/bootmanager/thebootmanager.html
    Out of couriousity I entered this bootloader and found HDA and HDB (I assume resembling my SSD and my USB stick).
    To my knowledge I didn't change anything but after entering the bootloader again I just found HDA left, HDB seemed to be gone. But I didn't think of anything bad happening yet.
    Then I found a working Archiso which I booted and using blkid I couldn't find the partitions of my earlier system anymore, only its device and the USB stick:
    /dev/sda: PTUUID="..." PTTYPE="gpt"
    /dev/sdb1: UUID="..." LABEL="ARCH_201312" TYPE="..." and so on
    /dev/sdb2: SEC_TYPE="msdos" and so on
    Even within the EFI shell I could not detect any internal drive anymore (only fs0: which is the USB stick)
    Using Archiso onboard tool testdisk I could find the old partitions. The correct result of the GPT from testdisk is:
    Fri Jul 4 08:45:25 2014
    Command line: TestDisk
    TestDisk 6.14, Data Recovery Utility, July 2013
    Christophe GRENIER <[email protected]>
    http://www.cgsecurity.org
    OS: Linux, kernel 3.12.1-3-ARCH (#1 SMP PREEMPT Tue Nov 26 11:17:02 CET 2013) x86_64
    Compiler: GCC 4.8
    Compilation date: 2013-08-06T08:42:31
    ext2fs lib: 1.42.8, ntfs lib: libntfs-3g, reiserfs lib: 0.3.0.5, ewf lib: none
    /dev/sda: LBA, HPA, LBA48, DCO support
    /dev/sda: size 500118192 sectors
    /dev/sda: user_max 500118192 sectors
    /dev/sda: native_max 500118192 sectors
    /dev/sda: dco 500118192 sectors
    Warning: can't get size for Disk /dev/mapper/control - 0 B - 1 sectors, sector size=512
    Hard disk list
    Disk /dev/sda - 256 GB / 238 GiB - CHS 31130 255 63, sector size=512 - Samsung SSD 840 PRO Series, S/N:S12RNEAD322171L, FW:DXM04B0Q
    Disk /dev/sdb - 2013 MB / 1920 MiB - CHS 1022 62 62, sector size=512 - SMI USB DISK, FW:1100
    Disk /dev/sdc - 4210 MB / 4015 MiB - CHS 1020 130 62, sector size=512 - Generic Flash Disk, FW:8.07
    Disk /dev/mapper/arch_root-image - 1478 MB / 1410 MiB - 2887680 sectors, sector size=512
    Disk /dev/dm-0 - 1478 MB / 1410 MiB - 2887680 sectors, sector size=512
    Partition table type (auto): Intel
    Disk /dev/sda - 256 GB / 238 GiB - Samsung SSD 840 PRO Series
    Partition table type: EFI GPT
    New options :
    Dump : No
    Align partition: Yes
    Expert mode : Yes
    Analyse Disk /dev/sda - 256 GB / 238 GiB - CHS 31130 255 63
    hdr_size=92
    hdr_lba_self=1
    hdr_lba_alt=500118191 (expected 500118191)
    hdr_lba_start=34
    hdr_lba_end=500118158
    hdr_lba_table=2
    hdr_entries=128
    hdr_entsz=128
    hdr_size=92
    hdr_lba_self=500118191
    hdr_lba_alt=1 (expected 1)
    hdr_lba_start=34
    hdr_lba_end=500118158
    hdr_lba_table=500118159
    hdr_entries=128
    hdr_entsz=128
    Trying alternate GPT
    Current partition structure:
    Trying alternate GPT
    search_part()
    Disk /dev/sda - 256 GB / 238 GiB - CHS 31130 255 63
    FAT32 at 0/32/33
    FAT1 : 4110-6150
    FAT2 : 6151-8191
    start_rootdir : 8192 root cluster : 2
    Data : 8192-2097151
    sectors : 2097152
    cluster_size : 8
    no_of_cluster : 261120 (2 - 261121)
    fat_length 2041 calculated 2041
    set_FAT_info: name from BS used
    FAT32 at 0/32/33
    MS Data 2048 2099199 2097152 [NO NAME]
    FAT32, blocksize=4096, 1073 MB / 1024 MiB
    NTFS at 146/251/42
    filesystem size 249593856
    sectors_per_cluster 8
    mft_lcn 786432
    mftmirr_lcn 2
    clusters_per_mft_record -10
    clusters_per_index_record 1
    NTFS part_offset=1209008128, part_size=127792054272, sector_size=512
    NTFS partition cannot be added (part_offset<part_size).
    NTFS at 146/251/42
    filesystem size 249593856
    sectors_per_cluster 8
    mft_lcn 786432
    mftmirr_lcn 2
    clusters_per_mft_record -10
    clusters_per_index_record 1
    MS Data 2361344 251955199 249593856
    NTFS, blocksize=4096, 127 GB / 119 GiB
    recover_EXT2: s_block_group_nr=0/160, s_mnt_count=1318/4294967295, s_blocks_per_group=32768, s_inodes_per_group=8192
    recover_EXT2: s_blocksize=4096
    recover_EXT2: s_blocks_count 5242880
    recover_EXT2: part_size 41943040
    MS Data 251955200 293898239 41943040
    ext4 blocksize=4096 Large file Sparse superblock, 21 GB / 20 GiB
    recover_EXT2: s_block_group_nr=0/80, s_mnt_count=1317/4294967295, s_blocks_per_group=32768, s_inodes_per_group=8192
    recover_EXT2: s_blocksize=4096
    recover_EXT2: s_blocks_count 2621440
    recover_EXT2: part_size 20971520
    MS Data 293898240 314869759 20971520
    ext4 blocksize=4096 Large file Sparse superblock, 10 GB / 10 GiB
    recover_EXT2: s_block_group_nr=0/706, s_mnt_count=1317/4294967295, s_blocks_per_group=32768, s_inodes_per_group=8192
    recover_EXT2: s_blocksize=4096
    recover_EXT2: s_blocks_count 23156049
    recover_EXT2: part_size 185248392
    MS Data 314869760 500118151 185248392
    ext4 blocksize=4096 Large file Sparse superblock, 94 GB / 88 GiB
    Results
    P MS Data 2048 2099199 2097152 [NO NAME]
    FAT32, blocksize=4096, 1073 MB / 1024 MiB
    P MS Data 2361344 251955199 249593856
    NTFS, blocksize=4096, 127 GB / 119 GiB
    P MS Data 251955200 293898239 41943040
    ext4 blocksize=4096 Large file Sparse superblock, 21 GB / 20 GiB
    P MS Data 293898240 314869759 20971520
    ext4 blocksize=4096 Large file Sparse superblock, 10 GB / 10 GiB
    P MS Data 314869760 500118151 185248392
    ext4 blocksize=4096 Large file Sparse superblock, 94 GB / 88 GiB
    interface_write()
    1 P MS Data 2048 2099199 2097152 [NO NAME]
    2 P MS Data 2361344 251955199 249593856
    3 P MS Data 251955200 293898239 41943040
    4 P MS Data 293898240 314869759 20971520
    5 P MS Data 314869760 500118151 185248392
    simulate write!
    TestDisk exited normally.
    ext4 blocksize=4096 Large file Sparse superblock, 94 GB / 88 GiB
    Now the question is: Can I - using testdisk or any other tool - recover those partitions successfully so I will be able to boot again afterwards? I tested and I could mark them as:
    P Primary
    Any help will be greately appreciated.
    Best regards
    Last edited by blablubb1234 (2014-07-08 09:20:08)

    Issue resolved If you care to know how, read on:
    Looking at the disk using gdisk was doing no good. Neither of the recovery options in gdisk did the trick.
    I then returned to testdisk and restored the partitions (successfully). However, afterwards I was greeted by shell telling me the root device was not found (seems like UUIDs get changed when one restores them using testdisk). Adjusting the PARTUUID for root in <EFI SYSTEM PARTIITION>/boot/refind_linux.conf did the trick and I could boot up Archlinux again.
    Windows 7 still didn't boot telling me the required device was inaccessible (probably wrong UUID, too). I could however not restore/edit Windows' BCD using bcdedit, see my post Status: 0xc0000225 boot selection failed; required device inaccessible:
    To make a long story short: Removing bcd and running autorecovery from withing Windows RE successfully created a new bcd. Unfortunately, Windows writes its backup bootloader at <EFI SYSTEM PARTITION>/boot/EFI/Boot/bootx64.efi. This file originally was a copy of refind_x64.efi which I need to put at that location to be able to dualboot. After chrooting to my Arch system I could restore bootx64.efi, create a new fstab and everything is running fine now again.
    Best regards and thanks for the help.

  • Troubles with HP OfficeJet 6500 E710n-z on Arch Linux

    Recently, I have tried to use my printer after five months break. It used to run smoothly on Arch Linux with hplip. However, now, I have not managed to make it print properly with hplip again. This is my configuration, as seen from the CUPS web interface:
        Driver: HP Officejet 6500 e710n-z hpijs, 3.12.11 (color, 2-sided printing)
        Connection: hp:/net/Officejet_6500_E710n-z?ip=192.168.1.4
    After trying to print some test page, the jobs listing in the CUPS web interface showed me a error message "Filter failed". I deleted my .cups and .hplip directories in my home folder and reinstalled cups and hplip. The same symptoms appeared again after restarting and a fresh installation.
        HP_Officejet_6500_E710n-z-400     Unknown     Withheld     98k     Unknown     pending since Sat 05 Jan 2013 04:22:46 PM CET     "Filter failed"
    My Arch system is up-to-date. I heard that it might have become necessary to install the hplip-plugin somewhen in the last month for some HP printer models. If I understand the table at the bottom of http://hplipopensource.com/hplip-web/mo … 10n-z.html correctly, then the hplip-plugin is neither required nor available for my printer model. I tested also installing it from AUR, just because it was worth a try (https://aur.archlinux.org/packages/hplip-plugin/), but this made matters worse, having my printer to madly produce almost-empty paper with some crap characters at each page top. As expected, the hplip-plugin was a dead-end, and I uninstalled it to continue some experimentation with printing test pages (all on the same page, mind the trees!). Resuming the printer, CUPS prints
    ***** Unable to open the initial device, quitting.
    Looking at the number of hits on Google, this seems to be one of the favourite error messages. I looked at the output in /var/cups/error_log
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Spooler: cups
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Printer: HP_Officejet_6500_E710n-z
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Shell: /bin/bash
    D [05/Jan/2013:16:39:10 +0100] [Job 407] PPD file: /etc/cups/ppd/HP_Officejet_6500_E710n-z.ppd
    D [05/Jan/2013:16:39:10 +0100] [Job 407] ATTR file:
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Printer model: HP Officejet 6500 e710n-z hpijs, 3.12.11
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Job title: Leafpad job 5
    D [05/Jan/2013:16:39:10 +0100] [Job 407] File(s) to be printed:
    D [05/Jan/2013:16:39:10 +0100] [Job 407] <STDIN>
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Ghostscript extra search path ('GS_LIB'): /usr/share/cups/fonts
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Printing system options:
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'number-up=1'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Unknown option number-up=1.
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'job-uuid=urn:uuid:ac6ebe82-17e5-3f8f-49ec-01820c35ea2e'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Unknown option job-uuid=urn:uuid:ac6ebe82-17e5-3f8f-49ec-01820c35ea2e.
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'job-originating-host-name=localhost'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Unknown option job-originating-host-name=localhost.
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'time-at-creation=1357400341'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Unknown option time-at-creation=1357400341.
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'time-at-processing=1357400341'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Unknown option time-at-processing=1357400341.
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Options from the PPD file:
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'InputSlot=Default'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'Quality=FromPrintoutMode'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'MediaType=Plain'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'PageSize=Letter'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'PrintoutMode=Normal'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'DryTime=Zero'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Pondering option 'Duplex=DuplexNoTumble'
    D [05/Jan/2013:16:39:10 +0100] [Job 407] ================================================
    D [05/Jan/2013:16:39:10 +0100] [Job 407] File: <STDIN>
    D [05/Jan/2013:16:39:10 +0100] [Job 407] ================================================
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Filetype: PDF
    D [05/Jan/2013:16:39:10 +0100] [Job 407] PID 28827 (/usr/lib/cups/filter/pdftopdf) exited with no errors.
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Storing temporary files in /var/spool/cups/tmp
    D [05/Jan/2013:16:39:10 +0100] [Job 407] File contains 1 pages
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Starting renderer with command: gs -dFirstPage=1 -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=ijs -sIjsServer=hpijs -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792 -sDeviceManufacturer="HEWLETT-PACKARD" -sDeviceModel="HP Color LaserJet 2600n" -dDuplex=true -dTumble=false -r300 -sIjsParams=Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2,PS:MediaPosition=7 -dIjsUseOutputFD -sOutputFile=- /var/spool/cups/tmp/foomatic-3lyFKy
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Starting process "kid3" (generation 1)
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Starting process "kid4" (generation 2)
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Starting process "renderer" (generation 2)
    D [05/Jan/2013:16:39:10 +0100] [Job 407] JCL: %-12345X@PJL
    D [05/Jan/2013:16:39:10 +0100] [Job 407] <job data>
    D [05/Jan/2013:16:39:10 +0100] [Job 407] prnt/hpijs/hpijs.cpp 269: unable to set device=HP Color LaserJet 2600n, err=48
    D [05/Jan/2013:16:39:10 +0100] [Job 407] prnt/hpijs/hpijs.cpp 290: unable to set device=HP Color LaserJet 2600n, err=48
    D [05/Jan/2013:16:39:10 +0100] [Job 407] renderer exited with status 1
    D [05/Jan/2013:16:39:10 +0100] [Job 407] prnt/hpijs/hpijs.cpp 697: unable to read client data err=-2
    D [05/Jan/2013:16:39:10 +0100] [Job 407] Possible error on renderer command line or PostScript error. Check options.Kid3 exit status: 3
    D [05/Jan/2013:16:39:10 +0100] [Job 407] STATE: +connecting-to-device
    D [05/Jan/2013:16:39:10 +0100] [Job 407] PID 28828 (/usr/lib/cups/filter/foomatic-rip) stopped with status 9.
    Indeed, some errors show up. I find it strange that ghostscript is called with a parameter -sDeviceModel="HP Color LaserJet 2600n" -dDuplex=true even though I clearly have an inkjet printer and no laser printer – and also specified the correct printer model. Also later, I can see the two lines
    D [05/Jan/2013:16:39:10 +0100] [Job 407] prnt/hpijs/hpijs.cpp 269: unable to set device=HP Color LaserJet 2600n, err=48
    D [05/Jan/2013:16:39:10 +0100] [Job 407] prnt/hpijs/hpijs.cpp 290: unable to set device=HP Color LaserJet 2600n, err=48
    which to the best of my knowledge indicates some internal mess. Raising the debug level in cups.conf did not tell me anything new.
    Notably, using the hpcups driver at least makes the printer print pages properly, but the wonderful (mind the trees) duplex-mode seems to only be available when using hpijs when selecting the PPD file in the add printer wizard. That is why I want to stay with the driver mentioned above.
    The trouble for me is that the printing pipeline is so complex and so many components are involved that I have no real good starting point to where exactly post bug reports. I would appreciate if some fellows with the same printer and the same errors could confirm my description. Or even point out how to get that organism to paint ink properly on the paper. Any ideas where to start? Or references to better resources regarding the combo of HP OfficeJet 6500 E710n-z and Arch? Is it just an regression bug and will be fixed? Is my system corrupted in some way? There is lots of open questions I don't quite feel able to answer all by myself. Any hints for troubleshooting appreciated!
    Edit:
    After some more reading and troubleshooting, I have filed the following two bug reports at hplip:
    https://bugs.launchpad.net/hplip/+bug/1096418
    https://bugs.launchpad.net/hplip/+bug/1096421
    Last edited by jeadorf (2013-01-05 19:30:19)

    SCAN ISSUE SOLVED!!!!
    I have an HP Photosmart 6500a Plus printer that is connected via USB to a less than 1 year old Dell XPS 8300 tower running Win 7 64bit Home Premium Edition.  The print function worked fine but scans would halt mid-way through the scan and eventually the software would indicate that it had lost connection with the scanner. 
    After EXTENSIVE testing, I determined that the problem was with the Dell tower and NOT THE PRINTER.  I hooked the printer up to a Dell Inspiron mni-tower running Vista and had NO PROBLEM scanning.  I hooked the printer up to a Gateway laptop running Win 7 Pro and had NO PROBLEM scanning.
    On a hunch, I inserted a POWERED USB hub in between the Dell XPS 8300 tower and the HP Photosmart 6500a Plus and was rewarded with a, first time ever on the XPS 8300, complete and flawless scan.
    I surmise that the HP Photosmart 6500a Plus was not getting the required voltage from the USB on the Dell XPS 8300 tower and that was causing the scan to fail.
    WOOHOO!
    Been chasing this one for several months...

  • HOWTO: Repairing a headless Arch Linux system that fails to boot

    The scenario...
    I have a "headless" (no monitor or input peripherals) Arch Linux computer that is connected to a local network via a wireless adapter, and accessed from other computers via SSH.
    Earlier today I accidentally broke its kernel so it did not boot anymore.
    Idea: Temporarily connect a monitor to the computer, boot from a live CD (like the Arch Linux install CD), then chroot into the system and fix it.
    Problem: I didn't have a compatible monitor at hand.
    Idea: Log in to the live CD session from another computer via SSH.
    Problem: The live CD can't auto-configure the headless computer's wireless connection, and setting it up manually while working "blind" would be a major hassle. A direct LAN connection to the router wasn't available either.
    Idea: Connect directly with a laptop via an Ethernet cable, and then use SSH from the laptop => This solution worked for me!
    If you find yourself in a similar situation, you can follow this tutorial which describes the solution that worked for me in detail...
    You need:
    a copy of the Arch Linux install CD (I used the 2013-05-01 version)
    an Ethernet cable
    a keyboard (might be dispensable, with additional preparation)
    a functional Arch Linux laptop (or other computer within physical range)
    Step 1) Prepare the live CD...
    I used the plain Arch Linux install iso, burnt to CD.
    By creating a carefully customized version of the live CD using Archiso, you might be able to eliminate the need for steps 2 and 4 - however that's not covered in this tutorial.
    Step 2) Prepare the laptop...
    The laptop needs to be configured in such a way, that the live CD's attempt to automatically establish an Ethernet connection with it will succeed:
    a) IP address
    In my case, the Laptop's wireless adapter had an IP address in the range 192.168.1.*, connecting it to the local network and Internet via the central router 192.168.1.1.
    The Ethernet connection between the laptop and the headless computer becomes a separate mini-network, for which I decided to use IP addresses in the range 192.168.0.* (note the different third number). Specifically, I set the IP address of my laptop's Ethernet card to 192.168.0.1. You can do this by running the following as root (replace "eth0" with the name of your Ethernet interface):
    ip link set eth0 up
    ip addr add 192.168.0.1/24 dev eth0
    b) IP forwarding (optional)
    While we're at it, we might as well enable IP forwarding, so that the live CD session on the headless computer will be able to directly use the laptop's outgoing Internet connection (which will make it much more convenient to install/upgrade packages during the repair session). To enable this, run the following as root (replace "eth0" and "wlan0" with the names of your laptop's Ethernet and wireless interfaces, respectively):
    iptables --table nat --append POSTROUTING --out-interface wlan0 -j MASQUERADE
    iptables --append FORWARD --in-interface eth0 -j ACCEPT
    sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
    c) DHCP
    The live CD will assume there's a router on the other side of the Ethernet link, and ask for an IP address via DHCP. So all we need to do, is run a dhcp server on the Laptop that will answer this request. It's surprisingly easy: Just install the package dnsmasq, and put the following in the file /etc/dnsmasq.conf (again replacing "eth0" as appropriate):
    interface=eth0
    dhcp-range=192.168.0.2,192.168.0.2
    By setting the start & end values of dhcp-range to the same IP address, we enforce that this specific IP address will be used by the live CD on the headless computer.
    Then start the daemon by running the following as root:
    systemctl start dnsmasq.service
    Step 3) Connect everything and boot up the live CD...
    Connect the laptop and the headless computer via the Ethernet cable.
    Connect the external keyboard to the headless computer.
    Then put the Arch Linux install CD into the headless computer's drive, and boot. Wait a minute or so to give the CD time to load its boot menu (you should hear the CD drive spin up and settle down again). Then hit ENTER on the connected keyboard, to activate the default menu choice (which will boot straight to a live Arch Linux session with root privileges).
    You can check whether it booted up and successfully initialized the Ethernet connection, by ping'ing the IP address that was specified in step 2c) from the laptop:
    ping -c3 192.168.0.2
    Step 4) Start the SSH server...
    Unfortunately, the Arch Linux install CD doesn't automatically start its SSH server, and also it uses a randomized root password. To make SSH connections possible, you will have to use the connected keyboard to type in some stuff "blindly" (but it's simple enough):
    type "passwd" (without the quotes)
    type in a new password of your choice
    press ENTER
    type in the same password again
    press ENTER
    type "systemctl start sshd" (without the quotes)
    press ENTER
    Step 5) Connect from the laptop via SSH...
    Now you can open an SSH connection, by executing the following on the laptop (when it asks for the password, enter the one you chose in step 4):
    ssh [email protected]
    Step 6) Profit!
    Within this SSH shell on the laptop, you can now do whatever you would usually do to fix an Arch Linux system from a live CD.
    You'll probably want to chroot into your Arch root partition, which is very easy thanks to the arch-chroot tool that is included on the live CD (replace "/dev/sda3" with the name of the headless computer's root partition):
    mount /dev/sda3 /mnt
    arch-chroot /mnt
    If you set up IP forwarding as described in step 2b), then Internet access should magically work in this shell without any further configuration, so you can freely use pacman etc. inside the chroot.
    Enjoy!
    Last edited by sas (2013-07-26 22:17:03)

    It is definitely able to recognize the USB and DVDs as separate drives; it gives the option of booting from USB, and it gives the memory capacity of the USB drive I used as a live USB, and the memory used for the live CD.  But when it comes time to actually boot, something is going wrong.
    I would suspect it is a problem with the BIOS, if not for the fact that I had a similar issue on my previous system, which used a completely different motherboard.  If it is the same issue, it would either have to be a problem with the DVD drive (although I don't know why it would be against loading some live CDs but not others) or perhaps the way I created the live CDs.  Although, again, I don't understand why the Linux Mint 32-bit DVD would work fine, while both 64-bit DVDs would not.
    I will try using a different DVD drive to boot the DVDs, and if that does not work, I'll try creating a new Arch live CD to see if I can resolve the issue.  But if anyone has any ideas, it would still be greatly appreciated.

  • 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

  • Dual-Booting Arch Linux and Windows 7

    Hello,
    I am attempting to set up a dual-boot configuration with Windows 7 (installed first), and Arch Linux. When I went to install, I read in the documentation that the AIF doesn't support installing GRUB to a separate partition other than the MBR on the drive. I want to install GRUB separate from the Windows MBR so I can use Easy BCD to chainload the two bootloaders (i.e. installing GRUB on /dev/sda5 instead of /dev/sda). I went through the installation process and tried to install GRUB manually via the instructions given in the documentation. But when I went to boot Arch, I was greeted with the GRUB shell instead of the boot menu. What did I do wrong? And is there any easier way to install Arch this way given that I do not want to overwrite the Windows bootloader? I went ahead and wiped the Linux partitions on my drive, so I am going to do the install again once I have some suggestions.
    Thanks!

    joshuawagner147 wrote:
    hyperreal_logic wrote:
    To the original poster: 
    If you want to chainload both Windows and Arch Linux using your preferred boot manager, you'd have to create a separate 'boot' partition when installing Arch Linux.  When you are in the Arch installation, create a separate partition of about 500 MB, then create the root partition of whatever size you need, and then create swap partition if necessary.  So your HD would resemble something like this:  /dev/sda5=boot partition of 500 MB; /dev/sda6=root partition of ## MB/GB; and /dev/sda7=swap partition of (RAM * 2) GB.  Then continue with the Arch installation procedure until you get to the end where you are prompted to install a boot loader.  Choose GRUB, and install it to the 'boot' partition on /dev/sda5.  This will allow you to chainload Arch via Easy BCD.  What happens is Easy BCD will pass the message to GRUB on /dev/sda5, and GRUB will then load your Arch root system on /dev/sda6. 
    I hope this helps.  I support your choice in using Easy BCD to chainload Windows and Linux.  Software is, after all, about choice.  Furthermore, you've presented a good reason to use Easy BCD as the main boot loader, which is to save you from unnecessary tinkering with the GRUB shell or Live CDs and whatnot.  However, if you don't want to create the separate 'boot' partition, then you'll have no other choice but to use GRUB or syslinux on the MBR.
    Thanks. Yes...I followed the procedure just like you described. I figured that my problem was that I didn't create a separate /boot partition, so I reformatted the partitions I created and redid the install. However, I was not able to install GRUB in the AIF; I had to reboot into the Live CD and install GRUB to my boot partition manually. All is good now as I have a working dual-boot now. Arch Linux has been a sort of learning curve for me, but I have gained valuable knowledge and experience by using this distro.
    Yes. I didn't want to mess with GRUB or NTLDR. I know that reinstalling NTLDR is not that difficult, but I didn't want to mess with it at all. It just seemed easier to chainload GRUB to NTLDR using EasyBCD. I'm a sort of "distro-hopper" anyhow, and using this method allows me to cleanly remove any distro I install without having to mess with GRUB or reinstalling NTLDR.
    Thanks!
    Glad to hear!  Yes, Arch Linux is a wonderful distribution, and one of my favorites.  It's great for not-so-newbie beginners to learn from.  pacman is one of my favorite package managers, as there is always the latest stable software available in the Arch repos.  Glad everything worked out.  Have fun with Arch!

  • [SOLVED] VirtualBox: Arch Linux host unable to reach guest over NA...

    Hello everyone,
    I recently installed VirtualBox on my Arch Linux install to tinker with GitLab on a Debian VM. I've set up a standard VM running Debian (wheezy) and made sure it's network settings were set to "NAT". However, I am unable to ping or ssh to this VM (which is running an ssh server among other things). Where this gets a bit weirder is that I'm perfectly able to ping and ssh to my host machine (running Arch).
    I installed the version of VirtualBox available on the official repos and I'm running on the default kernel too.
    I've install VirutalBox by following the infos posted on the wiki. My current user is part of the vboxusers group :
    % groups duane
    disk lp wheel uucp locate rfkill games network video audio optical floppy storage scanner power users vboxusers
    I've added the proper kernel modules to /etc/modules-load.d/virtualbox.conf so that they are loaded automatically on boot time :
    vboxdrv
    vboxnetadp
    vboxnetflt
    vboxpci
    % lsmod | grep vbox
    vboxpci 14581 0
    vboxnetflt 17612 0
    vboxnetadp 18355 0
    vboxdrv 264794 5 vboxnetadp,vboxnetflt,vboxpci
    I must also note that the net-tools package is installed.
    Now, I get the ip adress of my host :
    % ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: enp9s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether f0:4d:a2:48:5b:38 brd ff:ff:ff:ff:ff:ff
    3: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 5c:ac:4c:09:d3:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.22/24 brd 192.168.1.255 scope global wlp4s0
    valid_lft forever preferred_lft forever
    inet6 fe80::5eac:4cff:fe09:d3f3/64 scope link
    valid_lft forever preferred_lft forever
    Then I try to ping it from my Debian guest.
    user@debian:~% ping 192.168.1.22 -c 3
    PING 192.168.1.22 (192.168.1.22) 56(84) bytes of data.
    64 bytes from 192.168.1.22: icmp_req=1 ttl=63 time=0.961 ms
    64 bytes from 192.168.1.22: icmp_req=2 ttl=63 time=0.722 ms
    64 bytes from 192.168.1.22: icmp_req=3 ttl=63 time=0.680 ms
    --- 192.168.1.22 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2001ms
    rtt min/avg/max/mdev = 0.680/0.787/0.961/0.127 ms
    Now I get the ip adress of my guest :
    eth0 Link encap:Ethernet HWaddr 08:00:27:77:0e:48
    inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
    inet6 addr: fe80::a00:27ff:fe77:e48/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:69 errors:0 dropped:0 overruns:0 frame:0
    TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:11577 (11.3 KiB) TX bytes:15395 (15.0 KiB)
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    And I try to ping my guest from my host :
    % ping 10.0.2.15 -c 3
    PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
    --- 10.0.2.15 ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 2007ms
    There. I hope I didn't give too much information.
    I don't really understand what's going on there, usually that workfow works immediately in all the distributions I tried before, and on windows as well. I think I followed all the steps to make this work and yet it doesn't, and I'm not sure this problem is related to VirtualBox itself.
    Thanks in advance for any tip or comment on that.
    Last edited by Marneus68 (2014-01-24 10:19:39)

    What I do for all my VB guest VM's is to set 2 network interfaces, one the normal (default) NAT, and the other a host-only interface. That way your guests are completely hidden from the local lan which may be desirable if e.g., your host is a laptop which you move around various places. The guests can access anything outbound and you can still ssh to them from the host (and also, using ssh ProxyCommand via that host if you want to access them remotely).

  • How to setup grub2 with arch linux and xen, lvm on luks

    OK, so I tried downloading this package from AUR:  https://aur.archlinux.org/packages/xen-git/ , but that has patching problems as noted in the comments.  It looks like the packagebuild sets up all the xen stuff for you, but I can't seem to get the package to install because of the error's while patching.  If anyone can point me in the right direction on what all the extra files in the PKGBUILD are for or how to debug problems with PKGBUILDs not working because of patches.
    So next I just tried to compile the latest xen from git://xenbits.xen.org/xen.git (with ./configure, make, make install) and that seemed to go fine, but I'm a bit confused:
    1.  Do I have to do any additional configuration for xen when working with arch linux?  On ubuntu I could just compile the source, update grub, and make sure to start the x services at runtime.
    2.  How do I set up grub to load xen with this setup?  Right now this is my /boot/grub/grub.cfg:
    GRUB_DEFAULT=0
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="Arch"
    GRUB_CMDLINE_LINUX_DEFAULT="quiet"
    GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:vgStorage"
    # Preload both GPT and MBR modules so that they are not missed
    GRUB_PRELOAD_MODULES="part_gpt part_msdos"
    # Uncomment to enable Hidden Menu, and optionally hide the timeout count
    #GRUB_HIDDEN_TIMEOUT=5
    #GRUB_HIDDEN_TIMEOUT_QUIET=true
    # Uncomment to use basic console
    GRUB_TERMINAL_INPUT=console
    # Uncomment to disable graphical terminal
    #GRUB_TERMINAL_OUTPUT=console
    # The resolution used on graphical terminal
    # note that you can use only modes which your graphic card supports via VBE
    # you can see them in real GRUB with the command `vbeinfo'
    GRUB_GFXMODE=auto
    # Uncomment to allow the kernel use the same resolution used by grub
    GRUB_GFXPAYLOAD_LINUX=keep
    # Uncomment if you want GRUB to pass to the Linux kernel the old parameter
    # format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
    #GRUB_DISABLE_LINUX_UUID=true
    # Uncomment to disable generation of recovery mode menu entries
    GRUB_DISABLE_RECOVERY=true
    # Uncomment and set to the desired menu colors. Used by normal and wallpaper
    # modes only. Entries specified as foreground/background.
    #GRUB_COLOR_NORMAL="light-blue/black"
    #GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
    # Uncomment one of them for the gfx desired, a image background or a gfxtheme
    #GRUB_BACKGROUND="/path/to/wallpaper"
    #GRUB_THEME="/path/to/gfxtheme"
    # Uncomment to get a beep at GRUB start
    #GRUB_INIT_TUNE="480 440 1"
    #GRUB_SAVEDEFAULT="true"
    ~
    I've tried throwing in a line like: XEN_HYPERVISOR_CMDLINE="cryptdevice=/dev/sda3:vgStorage", but nothing new shows up on the grub boot menu.
    First time trying to set up a non-ubuntu system, please help!

    As for XEN.... well you could always try QEMU/KVM or LXC.
    As for the LVM2-on-LUKS/dm-crypt
    My /etc/mkinitcpio.conf looks like this...
    MODULES="aesni_intel ata_generic ata_piix nls_cp437 ext4 intel_agp i915 dm-snapshot"
    BINARIES=""
    FILES=""
    HOOKS="base udev autodetect block keymap encrypt lvm2 filesystems keyboard fsck shutdown"
    /etc/defaults/grub
    GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:root:allow-discards"
    GRUB_PRELOAD_MODULES="part_gpt part_msdos"
    GRUB_TERMINAL_INPUT=console
    GRUB_GFXMODE=auto
    GRUB_GFXPAYLOAD_LINUX=keep
    GRUB_DISABLE_RECOVERY=true
    The running grub config looks like this
    /boot/grub/grub.cfg
    9 insmod part_gpt
    10 insmod part_msdos
    53 if loadfont unicode ; then
    54 set gfxmode=auto
    55 load_video
    56 insmod gfxterm
    57 set locale_dir=$prefix/locale
    58 set lang=en_US
    59 insmod gettext
    60 fi
    61 terminal_input console
    62 terminal_output gfxterm
    63 set timeout=3
    84 menuentry 'Backup, Arch Linux grsec kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-grsec kernel-true-12341234-8080-8080-8080-332200882255' {
    85 load_video
    86 set gfxpayload=keep
    87 insmod gzio
    88 insmod part_msdos
    89 insmod ext2
    90 set root='hd1,msdos2'
    91 if [ x$feature_platform_search_hint = xy ]; then
    92 search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos2 --hint-efi=hd1,msdos2 --hint-baremetal=ahci1,msdos2 BBAAEEAA-FFCC-CCFF-FFCC-AABBCCEEBBAA
    93 else
    94 search --no-floppy --fs-uuid --set=root BBAAEEAA-FFCC-CCFF-FFCC-AABBCCEEBBAA
    95 fi
    96 echo 'Loading Linux grsec kernel ...'
    97 linux /vmlinuz-linux-grsec root=/dev/mapper/VolGroup00-lvroot rw cryptdevice=/dev/sda2:root:allow-discards quiet
    98 echo 'Loading initial ramdisk ...'
    99 initrd /initramfs-linux-grsec.img
    100 }
    Things to note:
    Numerical UUID is the UUID of the ROOT partition.
    Alphabetical UUIS is the BOOT partition
    hd1,msdos2 AND ahci1,msdos2 are how the Grub Bootloader numbers the drives not Linux.
    I have my BOOT partition on a USB stick, and it is the Second partition.
    So, that would make it, Device 2 and Partition 2
    Device numbering starts at 0
    Partition numbering starts at 1
    Oh, and note that you don't need ":allow-discards" ... at all but certainly if you don't have an SSD. Also note that I included the line numbers so it is very clear that I didn't post the whole thing, but instead what I thought was relevant. Finally, I am loading modules that I don't even need, but what the hell... if it ain't broke, don't fix it
    Last edited by hunterthomson (2013-12-04 08:31:45)

  • Online Radio Management Software for Arch Linux

    After switching to Arch Linux, I found out that I have no interest to try any other distro. Unfortunately I really missed something that I have used in Ubuntu, and that was Sourcefabric : Airtime. It is a free opensource radio automation software, and that mean if you want to have an online radio, you can make it yourself using Airtime.
    Can somebody port this software to Arch Linux, or anybody have a better choice/solution? Any suggestion will greatly be appreciated. Thank you very much for spending your time reading this.

    Read about the AUR. Create a PKGFILE for it and then you can install it via makepkg. Then, if it works well, submit your PKGFILE to the AUR.

Maybe you are looking for

  • A hardy ghost of Firefox is apparently running in my computer and I am unable to open Firefox, even after Window restarts and an uninstall/re-install. How do I find and fix this problem?

    What happened first is Firefox was revving and using most of my CPU, ultimately "not responding" too easily and for too long, so I closed it in order to reopen it, but Firefox remained running in background (Task Mgr, Processes) after closing, contin

  • Duplicate photos in catalog......

    Hi I've  been engaged in a project to clean-up my Photoshop Elements catalog for  several months now...   so far, without success.   What spurred me to  do this was getting into a situation where I had (literally) thousands  of duplicate photos in my

  • Home Theater Questions

    I've got an old mini hooked up to my DLP TV just fine with a VGA-DVI. I also have an HD up-conversion DVD player and a nice home theater speaker system. Would it be dumb to sell my old Mini and DVD player and get a new Mini? 1. Would the picture qual

  • Channel-group command

    Could someone point me to a link about information about this command besides its options and such. If you dont know of a link but know the command, some of the questions I'm having include: (1) what are the benefits of this command and why would you

  • Pasta configuration - change driver settings.

    Hello Xperts, I'm currently configuring printers for a R12 site and there is an issue with the alignment, after running the diagnostics I noticed that the print style is LANDSCAPE I woul like to make it LANDWIDE and test, can one please let me know h