Use Arch Linux Disc Just For GRUB?

I already installed Arch linux, and have it up and running just fine. I have a second hard drive that has no partitions or uses as of yet. Would it be possible for me to install Windows on /sdb, install GRUB with the Arch disk to /sda, uncomment out the WIndows entry in the GRUB .conf file, and get a working dualboot?

Let's clarify exactly what you want to do.
My understanding at this point is that sda is the main boot disk and that you currently have GRUB and Arch installed on it. You want to install Windows on sdb and you think that you have to overwrite GRUB on sda during the boot process to get Windows to boot properly. You therefore want to know how you can restore GRUB on sda after a successful installation of Windows on sdb.
If that's not the case, please clarify further.
If that is the case, then I don't think you need to do it that way. Set sdb to the main boot disk and then install Windows and the Windows boot loader normally on sdb. Once that's done, reset the main boot disk to sda and then edit GRUB to chainload sdb. This way you do not need to faff about with the Windows boot loader later if you decide to boot directly into Windows at a later date. The Windows installation remains independent on its own disk which is the easiest way to dualboot imo.
As for your question about installing GRUB from the liveCD, I think your actual question is whether you can overwrite the MBR of sda with GRUB from the liveCD (which is not the same as "installing" GRUB). I think you can by jumping to that step in the setup, but I am not sure and I suggest that you wait for confirmation from someone else who is.
Last edited by Xyne (2009-08-21 23:19:11)

Similar Messages

  • Installing/using Arch linux in Parallels on Mac OS X Lion MBP Retina

    I am having a problem where I can't install or use Arch Linux as the same error always crops up at some point or another.
    loading user-specifide modules [busy]
    pc_ich: RCBA is disabled by hardware/BIOS, device disabled
    pc_ich [some random numbers]: I/O space for GPIO uninitialized
    BUG: soft lockup -- CPU#0 stuck for 22s [kworker/u:0:5]
    Thanks for any ideas.

    I am pretty sure that Linux has some known serious issues with thre retina Macbook as well as some of the new Airs.
    See this thread, it may help: https://bbs.archlinux.org/viewtopic.php?id=144255&p=1
    Edit: Sorry i didn't read the "Parallels" in the title.  Though I am not familiar with parallels, so I am not sure what kind of system it is actually trying to emulate.  What happens if you use something else like virtualbox or some other free virtual machine software.
    Last edited by WonderWoofy (2012-09-27 03:18:07)

  • [SOLVED]Is there anybody using arch linux in coLinux?

    Hei,guys!
    I'm using arch linux in coLinux.I got the image file from sf and I successfully booted it on my machine,em,everything seemed to be OK.But when I tried to do this:
    pacman -Syu
    I got this message :
    checking package integrity...
    error: error while reading package /var/cache/pacman/pkg/gdbm-1.8.3-7-i686.pkg.tar.xz: Unrecognized archive format: Invalid or incomplete multibyte or wide character
    error: failed to commit transaction (libarchive error)
    Errors occurred, no packages were upgraded.
    I think the pacman(maybe just libarchive) is too old to recognize the .pkg.tar.xz files. So dose someone have an idea to work out it?
    Last edited by Cristie (2011-05-28 16:03:35)

    @twilight0:yeah,I acknowledge that,but it didn't work at all. I guess you didn't understand my problem. You know, the pacman coudn't upgrade (in fact I was unable to install any packages) just because the libarchive package was out of date (it meant that I could do nothing with the .tar.xz files downloaded from the mirrors).So I solved the problem by doing like this(Stupid it is, but it really works):
    1.Download libarchive from any of the mirrors around the world.
    2.Find a way to access to the files you just downloaded.
    3.Replace the original libarchive files.
    4.Mofify the local db.It is OK to do this:go to /var/lib/pacman/local,rename the libarchive-VERSION to current version.
    Then I found that depences need openssl >= 1.0.0, so try the same proccess with it.
    So,now everything is running very well.
    Last edited by Cristie (2011-05-28 16:20:03)

  • Trying to use Arch Linux with a T-Mobile HSPDA E1750 USB dongle

    Hello all,
    I have just installed Arch Linux on my desktop and need a way to either connect it to my LAN which is sharing the dongle connection from my laptop running ubuntu 10.04 via, ICS, DHCP3 and FIrestarter, Or simply plug in the dongle to my Arch Desktop. I have been researching commands to connect to networks with all day and have had no luck. My internet connection is being shared over ethernet through a DSL-2640R router.
    I need this connection so i can install the GUI and make it fully functional. So if anyone has any ideas, guides or sites that may help me with this problem then please share.
    Thank you,
    SlashWannabe94

    Hello, I bought a Huawei E1750, too. Today I got it working.
    The most important things I got from here.
    However, my stick differs a bit from yours as it has product ID 1436.
    There was no need for an udev-rule, I wouldn't even know where to put it in etc (there is no udev/rules.d folder in arch?).
    You need "usb_modeswitch" and the "option" module. At first I wrote an usb_modeswitch configuration, but it seems not necessary as commenting it out had no influence. The option module is loaded for me if i plug the stick in, no need to care about it further. So, except for installing usb_modeswitch everything works out of the box.
    If dmesg tells you something like:
    [33750.443606] cdc_ether 2-1.5:1.1: wwan0: register 'cdc_ether' at usb-0000:00:1d.0-1.5, Mobile Broadband Network Device, 02:50:f3:00:00:00
    [33750.443756] usbcore: registered new interface driver cdc_ether
    [33750.455202] USB Serial support registered for GSM modem (1-port)
    [33750.455286] option 2-1.5:1.0: GSM modem (1-port) converter detected
    [33750.455665] usb 2-1.5: GSM modem (1-port) converter now attached to ttyUSB0
    [33750.455692] option 2-1.5:1.3: GSM modem (1-port) converter detected
    [33750.455823] usb 2-1.5: GSM modem (1-port) converter now attached to ttyUSB1
    [33750.455839] option 2-1.5:1.4: GSM modem (1-port) converter detected
    [33750.455967] usb 2-1.5: GSM modem (1-port) converter now attached to ttyUSB2
    that should be the case for you, too. This means modeswitch did its job and you are ready to connect.
    Now you have to tell your pin to the stick and connect. I'm doing this using "wvdial" and "pppd".
    You'll need the "ppp_generic" module to proceed.
    My /etc/wvdial.conf looks like this:
    [Dialer Defaults]
    Modem = /dev/ttyUSB0
    Baud = 460800
    [Dialer pin]
    Init1 = AT+CPIN=1234
    [Dialer provider]
    Phone = *99#
    Username = fonic
    Password = fonic
    Stupid Mode = 1
    Dial Command = ATDT
    Init2 = ATZ
    Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
    Init4 = AT+CGDCONT=1,"IP","pinternet.interkom.de"
    Adopting the pin and the connection address should do. Then you can start your internet by typing:
    wvdial pin
    wvdial provider
    I have to admit wvdial did not work at first(the device refused the AT commands). From frustration I started windows to see if it works there, it did, and the next day this whole configuration simply worked.
    Success!
    Last edited by stuffel (2011-07-20 22:36:12)

  • MAME box using Arch Linux

    Hi.
    As explained in my introduction, I want to set up a MAME box for my arcade cabinet, and I think that Arch Linux will be the best way to achieve it, since I want a barebone system with the sole command line, the goal being that each time I fire up the system, it directly ends to the SDLMAME front end without having to go through such a thing as Gnome or KDE, and without having to use a physical keyboard at all, just the joystick control.
    Also, I like the fact the system will autoupdate itself, especially since it will be connected to my network and that I will be using SSH for setting it up from my desktop computer and accessing it when needed.
    So, I will use:
    1. Arch Linux
    2. SDLMAME
    3. A front end, but I don't yet which one, maybe Wah!cade.
    I would especially need help with the front end, to choose the right one for my needs, and also to know which components will be needed.
    Also, if ever I would like to program my own, any guideline and suggestions are very welcomed. :-)
    TIA!

    qmc is a Qt based frontend for sdlmame, and aur has several packages for frontends.
    If you want to write your own launcher, you'll also have to implement a way to select the games.
    That basically suggests you have to design something, and probably need an IDE to develop it.
    Best seems to choose a programming language you are familiar with.
    For windowmanagers , look at https://wiki.archlinux.org/index.php/Window_Manager

  • Why not use Arch Linux only?

    Named as an Arch Linux "Linux Addict" (according to my upgraded user profile ), for some times I have asked myself why use other distros than AL, especially RedHat, SuSE and Mandrake. What do they provide what AL doesn't?
    One of the roles of RedHat became clear reading Linux Today, though it may not be for the common users but have to admit its impressive (there are three major advances in the new RHEL3 product line....):
    http://linuxtoday.com/it_management/2003102200926NWRHSW
    PS.
    Does it sound like I am addicted??... it feels natural   :idea: 

    maturity? stable? can't trust?
    let me tell you something i learned by experience ...
    i runed SuSE for long time (from 5.2 to 8.1) and what i know they do wrong is: if you have e.g. 6.0 (the most stable SuSE i know) then you can update your packages over internet, but after some time you will be "forced" to  buy the next release that is totally differently constructed (7.1, because it uses YaST2 instead of the YaST and other stupid inovations that you cannot easily update from internet) ... and after a while again you have to upgrade by buying the next one ...
    sure, you install it in about an hour and everything works, but hey, each package costs some money and this install is each time from quite 0 (because the integrated update often does not work) :-(
    trusting?
    i trust only in systems i configure myself ... and since SuSE 7.2 i lost the overview in where you can configure what and why ... and you are not sure that YaST2 will change your changed settings to default
    archlinux is fully configureable and does not have a tool that changes files behind your back (well, there is one case: when you update init-scripts with packman without setting in pacman.conf to exclude some files you changed ... but also then you can restore the settings by mv'ing the original files to their right name-links :-)
    why using also other distros?
    well since arch 0.5 i removed all other linuces from my machine (to save space) and now have only arch and winXP ... xp is used only for watching tv (because hauppauge usb "usbvision" module cannot be compiled with  a 2.4.x or 2.6.0tx kernel (but 2.5.x) and because of ebanking software that will not install on archlinux but easily on SuSE and WinXP (need the original sun's java vm, but have no time to construct a PKGBUILD for sun's jdk 1.4)
    ... and the needed other software i built packages of and installed on my local repository (and also copied in incoming) ... now i'm quite happy with archlinux as an OS (and i hope with a more advanced 2.6.x TV will come too, and java i will find one day time to build for ebanking)
    -> "use an OS that works, use archlinux"
    ps
    and about "linux addict":
    no, i dont think i'm addict, but i use this forum as a normal member  (to help others switching to an os that works,  to help people with problems i had myself often some time ago, to ask if i find something interessting or funny about something in arch, to inform that i built packages and put them in incoming :-) ... i would be much happier to have "regular user" instead of "linux addict", but that's something i cannot change

  • Vista laptop and Arch Linux laptop competing for an IP address

    Well, when I turn on my mom's Windows Vista: Home Premium laptop at any time while my Arch Linux laptop is on, Windows says that there are two machines using the same IP address shortly after her computer connects to the router, and then it boots my Linux notebook off of the router and cuts it off from wireless. Is there any way to prevent this? We are both using DHCP.
    Specs:
    Router: Linksys WRT54G
    IP: Dynamic, DHCP
    Note: I connect to the router fine when her laptop is off, but I am forced to use a 25FT LAN Cable to get Internet when she is on.
    Last edited by kr0n05931 (2009-03-24 00:52:27)

    Fight! Fight! Fight! Don't take that crap, Arch!
    Anyways. I'm guessing something's messed up with your router. It should be making sure no two devices get the same IP. Worst case, you could give one or both a static IP -- I do this all the time anyways, because it's easier to work with.

  • Arch Linux Netboot Environment under grub legacy

    I am trying to boot under grub legacy with the following menu.lst entry:
    Arch Linux Netboot Environment
    root (hd0,5)
    kernel ipxe.krn
    initrd conf.ipxe
    boot
    This does not work. Do you have any suggestion?
    Last edited by francois.e (2013-01-07 02:49:52)

    Indeed - more information is needed.
    What is your partitioning scheme, is sda6 your /boot parition?  Are your kernel and intrd in /boot/grub/?  This would be unusual, but it is what that entry implies.  Also, where is your root partition specified?
    You also don't need the boot command in the menu.lst.  I don't know if it would cause a problem, but I've never seen it there.  In addition to the links in cfr's signature, you should (have already) read the wiki page on grub legacy.
    Last edited by Trilby (2013-01-06 04:35:54)

  • Do I get charged for using Itunes player or just for downloads?

    Hi,
    I never used Itunes before.  I've downloaded the player, completed all my details - user name, email etc.  But the question I have am I charged for using the Itunes player or just for the download originally?

    Neither.  The iTunes player is a free download, and there is no charge for using it.
    You will only incur a charge if you make a purchase at the iTunes Store.

  • [SOLVED] Use Arch Linux as internet forwarding for wdr router

    Hi
    I'm trying to flash my wdr3600 with openwrt. Now, the problem is that I want to use my desktop to share my internet to this router.
    But, when I'm trying to ping google on this device, I get an 'unknown host' error. I've already set up my default gw correctly. What am I missing?
    Last edited by TheChosenOne (2014-07-14 12:20:20)

    Sorry, I cannot ping 8.8.8.8
    My route -n is
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.1.10    0.0.0.0         UG    0      0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    With 192.168.1.10 the ip of my desktop that forwards.
    Last edited by TheChosenOne (2014-07-10 07:43:05)

  • [Solved] Arch Linux won't boot, GRUB error 15

    Recently I did a system upgrade with "pacman -Syu". There wasn't many updates i only saw a kernel upgrade to 3.0.1 (something like that), the update was complete and I decieded before I restarted my system i would install LibreOffice, there was another error, with that installation. There was some error with redline and raptor (I'm not 100% on the names but i know they both start with R and it was two of them). Any way it was somewhere along the lines of "redline: /usr/.... : already exists in the filesystem".
    So before I continued I figured screw it, I'll restart my system and figure out what's wrong later. So I reboot, and can't get back in -_-* great. So now I have the GRUB error 15 the prompt tells me press any key to continue... and now I can only boot into my windows partition. What can I do from here? I don't want to reinstall arch, only as a last resort.
    Last edited by mastrgamr (2011-08-08 03:25:09)

    not sure what you're saying ... grub was working fine before if that's what you're asking, I've had the distro on my system for about a week before today.
    to be honest I'm not even sure what is a custom kernel, from day one I just did a "pacman -S linux linux-headers", which replaced kernel26 and it's headers and from there I was golden, until today.
    P.S I'm sure it was this update that did it (http://www.archlinux.org/packages/core/x86_64/linux/)

  • Arch Linux Kernel patch for kernels built from source?

    I buitl I kernel from source because the hotplug thing was taking for ever
    I really liked the arch logo. Is there a patch or is it possilbe to add the arch logo to the kernel?
    Thanks

    check out the PKGBUILD for the kernel:
    run "abs"
    and then go to /var/abs and edit the PKGBUILD for kernel26 to see how a kernel is built in arch

  • 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

  • Thanks for Arch Linux

    I am a huge fan of GNU/Linux and have been since the mid 90's, and I just want to say thank you for Arch Linux. My GNU/Linux history started with Red Hat, and then Slackware, then ultimately Gentoo Linux. I have been a Gentoo Linux fan for many years (since it's beginnings), and to be honest, Arch Linux is just as fast and in some cases faster than Gentoo Linux.
    The install for me as a first time user to Arch Linux, was very VERY simple, and straight forward. I love the idea of it being installed at the absolute minimum, and I having the option to chose which optional packages are and are not installed from the get-go.
    As stated, which this distrobution of GNU/Linux there is no need to compile from source, as Arch Linux is very fast already; for me and my computer anyway.
    Again, thanks for this great and powerful GNU/Linux distro.

    have a look here...
    http://wiki.archlinux.org/index.php/Arc … _%28AUR%29

  • Dual boot Windows 7 (64) and Arch Linux (64) problems

    Hello:
    I am new to Arch Linux and just finished installing the 64bit on my laptop. It had a prebuilt Windows 7 (64) installed which I kept but split the hdd from 160Gb to 80Gb and 80Gb. I installed Arch there and set 4 partitions, all of them as Logical - a 64 MB ext2 /boot partition; a 512 MB swap partition; a 15 GB root partition; and the rest as my /home partition. My partitions look like this:
    Disk Drive: /dev/sda
    Size: 160041885696 bytes, 160.0 GB
    Heads: 255 Sectors per Track: 63 Cylinders: 19457
    Name Flags Part Type FS Type [Label] Size (MB)
    sda1 Primary Unknown (27) 12889.02
    sda2 Boot Primary NTFS 106.93
    sda3 Primary NTFS [] 73915.11*
    sda5 Logical Linux ext2 65.81*
    sda6 Logical Linux 509.97*
    sda7 Logical Linux ext2 15002.92*
    sda8 Logical Linux ext2 57549.55*
    The install was succesful(this was running from the core install cd) and I installed GRUB to my /boot but when I restarted it loaded Windows 7. I have used Knoppix USB disc to boot and see my Arch Linux install files and edited the /boot/gur/menu.lst file.
    In Windows I installed EasyBCD 1.7.2 and tried to get NeoGrub bootloader working as a dual boot. I tried getting rid of the boot flag for Windows with cfdisk and setting it to my (Logical) sda5. That did not work. So far the only way I have booted into my Arch Linux install has been by going to the Live CD, choosing "Boot from Existing Linux Install" and editing the command files there.
    root (hd0,4)
    kernel /vmlinuz26 root=/dev/sda3 ro
    initrd /kernel26.img
    My goal is to get a dual boot working for Windows 7 and Arch Linux 64 and continue installing the Xorg and KDE to Arch. I just don't know what the problem is here. I don't mind reinstalling Arch if something went wrong, but I would like to keep my Windows running in order and add Arch on.
    Any help would be greatly appreciated.

    I ran the LiveCD and chose "Install to MBR hd0". I ended up with this:
    setup hd(0,1)
    Checking if "/boot/grub/stage1" exists.....yes
    Checking if "/boot/grub/iso9660_stage1_5" exists.....yes
    Running "embed /boot/grub/iso9660_stage1_5 (hd0,1)".....failed(this is not fatal)
    Running "embed /boot/grub/iso9660_stage1_5 (hd16)".....failed(this is not fatal)
    Running "install /boot/grub/stage1 d (hd0,1) /boot/grub/stage2 p (hd0,1) boot/grub/menu.lst".....failed
    Error 31: File is not sector aligned
    My entry for Windows into the menu.lst looks like this:
    # (0) Arch Linux x64
    title Arch Linux x64
    root (hd0,4)
    kernel /vmlinuz26 root=/dev/disk/by-uuid/3841273c-d91e-41d6-9dbf-716a15d03a01 ro
    initrd /kernel26.img
    # (1) Arch Linux x64
    title Arch Linux x64 Fallback
    root (hd0,4)
    kernel /vmlinuz26 root=/dev/disk/by-uuid/3841273c-d91e-41d6-9dbf-716a15d03a01 ro
    initrd /kernel26-fallback.img
    # (2) Windows 7
    title Windows 7
    rootnoverify (hd0,0)
    makeactive
    chainloader +1

Maybe you are looking for

  • Audio malfunctio​ning on hp ultrabook?

    Hello! So i just recently got a laptop in late june almost early july. Its a HP ENVY touchsmart 4 Ultrabook Its not even 2 months old and the speakers on here suck. They kida slurr and like lag. Its stutters really bad. I can't listen to 1 song witho

  • HEEEELLLLP PLEASE !!

    so ive got my mums boyfriends ipod. and ive put my music on it. but all of his music is gone. HOW DO I GET IT BACK. please hellp.

  • JDBC  Receiver Structure for Synchronous scenario

    Hi, I have synchronous scenairo of jdbc where we are executing the stored procedure, up to response message  mapping it is working fine and getting value from stored procedure but the problem is that response result not able to send to response targe

  • Need help unregistering an old version of PSE

    I need to install PSE 6, but it is currently showing as being registered on two now-dead computers. After going through phone and online chat, I find out that support is only available through the forums. Can someone remove the registration?

  • Set alias URL for SharePoint site

    Hi, I want to set the SP site alias. my server name appearing http://dmfpqabudappcq2 and i want to change it to http://MySharePoint. I check the central admin - AAM - Edit alias url. I have updated there. Now, i am setting the new alias host in DNS.