Arch Linux Minumum Base

Is there a way I could get a list of the most minimum packages required to run an Arch Linux system.
Naturally If I want to run an X app I need X.  But, I want to know what consists of the most minimal arch install.
Reason being is I want to make an arch linux base for FreeBSD's compat layer.  Since I compile my FreeBSD systems with the same /similar optimizations as Arch Linux does. I think it would make a better fit than the RH7 default system.
Basically, I my end result will be a FreeBSD Desktop that can do the following:
Run Linux applications and have those Linux applications managed by the Linux tools.  FreeBSD uses RH7 as their default base and they rpm install the base system.  Many of the Linux ports in FreeBSD ports tree grab the RH7 rpms.   But.  I would love to be able to from my FreeBSD box do pacman -S acroread or whatever and have it grab the Arch packages and install them to Linux compat location.   
This is strictly a runtime environment.  I do not want to be generating Linux code via the compat layer.  Just run stuff.
Thus, I want ports to manage my FreeBSD packages.  But I want pacman to manage my Linux stuff.  I think ports should not manage Linux stuff on a FreeBSD box.
So, is there anybody willing to give me that list or point me to the right source to look it up. 
Jeff - who happened to switch his box back to FreeBSD just because he was bored and yes I trashed a perfectly working Arch install.

I feel like an idiot now.  I found my answer.  I need to first install the base category.  However, I need to automate this.
On the arch linux ftp site all the packages are lumped into one directory.   Not separated by category.
For now I will look at the linux_base port and make a list based on that.  Then install the arch specific stuff like pacman.   
I think once I get the initial base laid out I can then chroot to that and run total linux commands...  like this:
frontier# uname -srm
FreeBSD 5.1-RELEASE-p7 i386
frontier# chroot /usr/compat/linux /bin/sh
sh-2.04# uname -srm
Linux 2.4.2 i386
sh-2.04# exit
exit
frontier#
Jeff

Similar Messages

  • Bootstrap a base Arch Linux on another distro

    Hi!
    I needed to install an Arch Linux environment on a Debian server, so I searched the wiki and found this page:
    http://wiki.archlinux.org/index.php/Archbootstrap
    Unfortunately, the script is outdated. So I wrote a new one:
    http://tokland.googlecode.com/svn/trunk … otstrap.sh
    (tested only on Debian Lenny)
    $ sudo bash arch-bootstrap.sh myarch i686
    Now, my questions:
    1) is there another script that performs this task better?
    2) if not, can you please give some feedback so as to update the wiki with (a -hopefully- more polished version of) this script?
    Last edited by tokland (2010-02-09 21:27:31)

    Hi,
    I'm working on a script.
    It's working with pacman-static.
    pacman, in version 3.3.0, introduce xz archive format support and now, some packages use this format (mkinitcpio-0.6.3-1-any.pkg.tar.xz)
    So, my script is endding with pacman-static error (unrecognized archive format) !
    Where can I find the 3.3.0 (or more) pacman-static ?
    Here's the script (it's a first step...) :
    #!/bin/bash
    # install an Arch in the specified location (debbootstrap like)
    # work over pacman-static
    # must run on GNU/Linux systems
    # http://wiki.archlinux.org/index.php/Install_from_Existing_Linux
    # http://wiki.archlinux.fr/install/chroot?DokuWiki=153b0c6847435682de50a6061e6f75a4
    [ "${1}" ] || { echo "usage: $( basename $0 ) chrootdir [packages]" >/dev/stderr && exit 1; }
    B='\033[29;1m'
    b='\033[0m'
    # load variables defined in configuration file
    echo -e "${B}load configuration file...${b}"
    . /usr/local/etc/$( basename $0 ).conf || exit $?
    # test packages cache
    echo -e "${B}test packages cache...${b}"
    [ "${abs_cache}" ] || abs_cache=/var/cache/pacman/pkg
    [ -d "${abs_cache}" ] || { mkdir -vp ${abs_cache} || exit $?; }
    touch ${abs_cache}/$( basename $0 ) && rm ${abs_cache}/$( basename $0 ) || exit $?
    # make minimal chroot for pacman
    echo -e "${B}make minimal chroot...${b}"
    abs_chroot=${1}
    mkdir -v ${abs_chroot} || exit $?
    mkdir -vp ${abs_chroot}/etc/pacman.d
    mkdir -vm 1777 ${abs_chroot}/tmp
    mkdir -vp ${abs_chroot}/usr/bin
    mkdir -vp ${abs_chroot}/var/lib/pacman
    # install pacman.static in chroot
    abs_static_package=$( find ${abs_cache} | grep pacman-static )
    if [ ! "${abs_static_package}" ]
    then
    # download it
    echo -e "${B}download pacman...${b}"
    [ "${abs_static_host}" ] || abs_static_host="http://repo.archlinux.fr/i686"
    abs_static_package=$( curl -sSL ${abs_static_host} | egrep -io 'href="pacman-static[^"]+\.pkg\.tar\.gz"' | awk -F '"' '{print $2}' )
    [ "${abs_static_package}" ] && abs_static_package=${abs_cache}/${abs_static_package} || exit $?
    curl --progress-bar ${abs_static_host}/${abs_static_package} > ${abs_static_package} || exit $?
    fi
    echo -e "${B}install pacman...${b}"
    mkdir -p ${abs_chroot}/tmp/pacman
    tar vxzf ${abs_static_package} -C ${abs_chroot}/tmp/pacman || exit $?
    cp -v ${abs_chroot}/tmp/pacman/usr/bin/pacman.static ${abs_chroot}/usr/bin/
    rm -vrf ${abs_chroot}/tmp/pacman
    # install pacman configuration in chroot
    echo -e "${B}configure pacman...${b}"
    [ "${abs_repository}" ] || abs_repository='http://mirrors.kernel.org/archlinux/$repo/os/i686'
    abs_pacman_conf=${abs_chroot}/tmp/pacman.conf
    echo "
    [core]
    Server = ${abs_repository}
    [extra]
    Server = ${abs_repository}
    [community]
    Server = ${abs_repository}
    " > ${abs_pacman_conf}
    # install the core
    echo -e "${B}install the core...${b}"
    ${abs_chroot}/usr/bin/pacman.static \
    --sync \
    --refresh \
    --root ${abs_chroot} \
    --cachedir ${abs_cache} \
    --config ${abs_pacman_conf} \
    --logfile /dev/null \
    --verbose \
    --noprogressbar \
    base || exit $?

  • What source base the Arch Linux Xorg build from?

    I need a complete package of X windows system installed. No idea which directory the Arch Linux X11 install to.
    Only find  below with "find"
    /usr/share/X11
    /usr/lib/ghostscript/8.64/X11.so
    /usr/lib/X11
    /usr/include/X11
    /var/cache/man/X11R6
    /etc/X11
    So I try to get some souce by http://xorg.freedesktop.org/wiki/Releases/7.4
    I found its x server is only 1.5.1 and Arch Linux is 1.6.1(show when pacman -S xorg)
    I really confused.
    Actually what I need is pretty simple, need a xdm and xdm-configure to enable XDMCP so that I can remote connecct to X.
    (I tried KDE and GNOME, it doesn't work because X)
    Anybody can give me a clue?
    Thanks very much,
    Mike

    tomk wrote:Please consult the wiki.
    The Arch Wiki has become simply amazing.. Just thought I'd throw that out there.
    Last edited by 10wattmindtrip (2009-06-23 18:29:24)

  • [SOLVED]Arch Linux / UEFI / BTRFS using Grub2 & Windows 8 in a 2nd HDD

    PROBLEM:
    ====================================================================================
    Dear fellas
    I just purchased an new HP TouchSmart 17.3" laptop that comes with Windows 8.1 pro (1 tb HDD + small SSD for cache only ) and still have space for one more HDD or SSD.
    I Google a lot and read a lot but many questions emerged since seems that no one has the same scenario (maybe I pick the wrong choices) like me.
    The problem is.. I didn't wish to re-install Windows 8.1 since it came with from factory.. so I purchased a 750 gb hdd and put it into the free slot to install Arch Linux in a different HDD.
    As I am not familiar with UEFI what I did was to reorder the hdds. I just put the Windows HDD as second disk and the new disk (For Arch Linux) as primary and changed into Bios from UEFI to compatibility mode and installed Arch Linux into the primary one.
    I reaaaally need help to add to grub the correct "path" to Windows 8.1 disk that came with UEFI..
    Anyone could please help me?
    Thanks in advance!
    ====================================================================================
    SOLUTION:
    A huge thanks to @TheSaint and other users for their help and assistance!
    More sources:
    http://www.kossboss.com/linux---arch-in … -grub-boot
    https://www.youtube.com/watch?v=METZCp_JCec#t=146
    https://bbs.archlinux.org/viewtopic.php … 1#p1390741
    Step by Step Summary:
    Use gdisk to create partitions on /dev/sda:
        - 512MB - EF02 type partition (for EFI boot)
        - 690GB - Linux partition for the BTRFS.
    - Create an EF00 (ESP) with 512mb
    - Create a Linux System partition with the rest of space
    Make the FAT 32 system for EFI boot:
    # mkfs.vfat -F32 /dev/sda1
    Make the BTRFS partition. If it complains about existing filesystems just add a "-f":
    # mkfs.btrfs -L arch -f /dev/sda2
    We will make out a root subvolume for sda1, this will be a folder called root located at the root of sda2. The way we will design this is that When the system boots we will not see /root, we will be inside root. Inside root you will have all of your etc,sys,proc,whatever folders etc.
    # mount /dev/sda2 /mnt
    # cd /mnt
    # btrfs subvolume create /mnt/root
    This should show you your root
    # btrfs subvolume list -a /mnt
    Something like this: ID 256 gen 5 top level 5 path root
    # cd /
    # umount /dev/sda2
    Now we will mount sda2 root subvolume as /mnt and we will dump the arch system into there with pacman. We will also enable compress to utilize btrfs compress feature.
    # mount -o defaults,compress=lzo,subvol=root /dev/sda2 /mnt
    NOTE: the command "mount" will not show which subvolume is mounted, to see how subvolumes are mounted you need to look inside proc (cat /proc/self/mountinfo):
    # cat /proc/self/mountinfo | egrep sda2
    The line for the mount of sda2 looks like this:
    43 21 0:34 /root /mnt rw,relatime shared:30 - btrfs /dev/sda2 rw,compress=zlib,ssd,space_cache
    We can see that the subvolume /root is mounted to /mnt from the device /dev/sda3
    Notice how with regular mount command its missing:
    # mount | egrep sda2
    /dev/sda3 on /mnt type btrfs (rw,relatime,compress=zlib,ssd,space_cache)
    Pacman will dump stuff into a boot folder, so we better mount our sda1 EFI boot partition to it. Or else all of the boot stuff will go to sda3 instead of sda1:
    # cd /
    # pacstrap -i /mnt base base-devel
    Let us create the directory and mount the EFI partition
    # cd /mnt
    # mkdir -p /mnt/boot/efi
    # mount /dev/sda1 /mnt/boot/efi
    Let us generate the FSTAB:
    # genfstab -p /mnt >> /mnt/etc/fstab
    Let us chroot into the arch installation:
    # arch-chroot /mnt /bin/bash
    Change password:
    # passwd
    Then pick the right one like this and associate it with a link to /etc/localtime
    # ln -s /usr/share/zoneinfo/US/Pacific /etc/localtime
    Let us generate the initial RAM disk
    # mkinitcpio -p linux
    Let us setup the bootloader (GRUB)
    # pacman -Syu grub efibootmgr
    Let us generate the grub configuration
    # grub-mkconfig -o /boot/grub/grub.cfg
    Let us install grub into the HDD
    # grub-install /dev/sda
    # umount -R /mnt
    # umount /mnt
    # reboot
    From this step you can go straight and forward with the https://wiki.archlinux.org/index.php/Beginners%27_guide
    Last edited by erickwill (2014-11-21 20:41:06)

    TheSaint wrote:As UEFI BIOS is a boot loader itself. You should make on each HDD an ESP.
    When you want to start win8 you go to BIOS and chose its entry, so will do for Arch the same.
    For this way I suggest you write to boot the kernel directly from the BIOS. It just take some reading on this topic
    Other option you set on you second ESP the boot loader of your liking and it will try to find win8 partition.
    Thanks for your reply.
    For the second option, may I use the compatibility mode and install the booloader into the first partition along with Arch?
    Or in case the first option is still the better option, could you pleaaaase give me some directions from the scratch? Do you have Google Hangout?
    Thanks in advance.
    Last edited by erickwill (2014-11-18 19:54:26)

  • Progress on Unity under Arch Linux!

    See here for information about the new GNOME 3.12-compatible packages: https://bbs.archlinux.org/viewtopic.php … 3#p1404683
    I'm now on IRC! Come join us at #unityforarch on Freenode
    To install Unity from my repos:
    See the wiki: https://wiki.archlinux.org/index.php/un … mmended.29
    To install Unity from source:
    See the wiki: https://wiki.archlinux.org/index.php/unity#From_source
    -- You probably don't want to read anything below --
    The story
    So...rather than wasting internet bandwith to download a new Ubuntu ISO to test out the new Unity features, I decided to try to make it work under Arch Linux. It took a whole lot longer than I expected to get it even partially working. So, here's my story:
    Knowing that Unity isn't in the main repositories, I went the AUR's website and looked for a user created Unity package. That didn't go too well. The Unity package hasn't been updated for 6 months. D'oh! I decided to download the existing PKGBUILD and modify it to work with the Unity 4.xx series. After changing the version number, I tried to "makepkg" it, and was greeted with a message about installing Compiz 0.9.x. I thought it would be an easy install. It was quite the opposite. Compiz's install prefix was set to /opt/unity, but FindCompiz cmake build file expected Compiz to be in /usr, so none of the Compiz packages, except for compiz-core would compile. Then, I tried reinstalling compiz-core, but this time, changing the prefix to /usr. The compiled package ended up being only a few kilobytes big. I guess the mouse wheel was invented for a reason. I looked at the PKGBUILD again, only to find that there was a line at the very bottom that ran "rm -rf ${pkgdir}/usr". That explains a lot! I ended up adopting all the compiz*-git packages and fixing them so they would compile and install.
    So, now that Compiz is working (restarted and tested just to make sure I didn't waste my time with something that didn't work), I went on to install the rest of the dependencies listed in the Unity PKGBUILD file. That went relatively well. I was so happy after seeing the progress counter go up after running "makepkg", but at about 8%, gcc spat out an error about an undeclared function (sorry, I forgot what the function was). Natually, I went to Google and searched the name of the function. 0 results! Exactly was I was looking for! I ended up downloading the Ubuntu 11.10 Alpha 3 ISO and running "find -type f /usr/lib | xargs objdump -T | grep the_function". The problem lied in the libindicator package. There was a newer version available which contained that function. I have no idea why a package that's only 0.02 versions ahead of the AUR package would contain new functions...
    Next! Utouch...ugh...great memories! Not! I was so glad that I had fixed the utouch packages earlier (for touchegg to work). I was too frustrated from compiz and libindicator to try to compile more stuff.
    Cmake. Whoever created the CMakeLists.txt file didn't list all the dependencies required. So after running "makepkg" 10 billion times, waiting for "somebodydidntputthisincmake.h not found" errors to appear, I finally got all the dependencies I needed installed...or so I thought. After installing and compiling all these dependencies, the cmake only continues 3% further before encountering another cryptic gcc error. This time, there no error about a file not being found. So not knowing what dependency was missing, I headed over to http://packages.ubuntu.com and downloaded the Unity DEB source to find the dependencies in then debian/control file. After install those few dependencies that I missed, I ran "makepkg" again, hoping that it would finally compile successfully. CMake went a little further--5% further to be exact--before running into another error. It complained about DndSourceDragBegin() having two return types. Sure, enough "./plugins/unityshell/src/ResultViewGrid.h" had the return type as boolean and "/usr/include/Nux-1.0/Nux/InputArea.h" had the return type as void. WTF? How the heck does this even compile under 11.10???
    After changing void to bool in "/usr/include/Nux-1.0/Nux/InputArea.h", I ran "makepkg" once again anxiously waiting to the see the line "Finished making: unity 4.10.2". CMake compiled about 35% before running into error about an undeclared gtk function. Nooooooooooooo!!! I wasn't brave enough to install the git version of gtk3, so I created a chroot, installed the base packages, and installed all of those dependencies fairly quickly (it gets a lot easier after doing it so many times).
    Moving on to gtk3. After cloning the ~200MB git repository, autotools spits out an error about cairo-gl missing. So, I proceeded to install the cairo-gl-git package, which failed to compile (it compiled successfully outside of the chroot...). GREAT. So, Unity fails to compile because GTK version is too old, and GTK failed to compile because cairo-gl is missing, and cairo-gl fails to compile because I'm in a chroot. GAHHH!!! While thinking about throwing the computer out of the window, I searched the AUR for other GTK3 packages. I just happened to find a package named "GTK3-UBUNTU"! That package was still at version 3.0, but it was pretty easy to get the patches and source code for 3.1 from the Ubuntu GTK source package.
    So, FINALLY, Unity compiles. I was so darn happy, I didn't even care if it ran or not. I logged out and logged back into the GNOME 3 fallback mode, and entered the chroot. After running "xhost +SI:localuser:chenxiaolong" to run X11 apps in the chroot, I crossed my fingers and ran "DISPLAY=:0.0 unity --replace". It failed with python 3 complaining about missing modules. That's okay, since the Unity launch script is written in python 2. I changed the shebang line in "/usr/bin/unity" to point to python 2 and ran "DISPLAY=:0.0 unity --replace". It didn't necessarily fail, but it didn't succeed either. It didn't print out any error messages. Weird... I thought I'd try enabling Unity from the compiz settings manager then. I ran "DISPLAY=:0.0 compiz --replace" and "DISPLAY=:0.0 ccsm" and enabled the Unity plugin. Unity runs! Although nothing shows on the screen, it runs! It shows up in the process list! Woohoo!
    And that's about how far I got. There were quite a few Vala errors during the compiling process (I forgot which package it was), which is probably why Unity won't appear. I'll try again later with the vala-devel or vala-git package and hopefully Unity will work then. Here are screenshots of what I've gotten working so far:
    http://i.imgur.com/7F1fm.jpg
    http://i.imgur.com/zGNJc.jpg
    http://i.imgur.com/3mCgd.jpg
    By then way, I love the simplicity of pacman and the AUR. I can't imagine how long this would have taken with other package managers.
    Moderator edit:  Do not place large images in line.  If you want, you may embed links to thumbnails inside url tags.
    Last edited by chenxiaolong (2014-04-15 17:11:04)

    City-busz: I'm getting a ton of Vala errors when I compile libunity (AUR version) with vala or vala-devel. libunity fails to compile with vala-git. I'll try your packages in a virtual machine and see how they work on 64 bit.
    In the meantime, Unity still fails to show up: http://i.imgur.com/btPwo.png I'll try out your PKGBUILDS and see how that works. I'm glad there are people who want to port Unity to Arch Linux
    EDIT: City-busz: Just to let you know, Unity will fail to compile at around 45% with GTK 3.0. Here's my source packaage for Ubuntu's GTK 3.1: http://ubuntuone.com/p/1EzX/ It contains all of the patches in the Ubuntu source package. I'm not sure if all the patches are needed, but GTK compiles fine with all of them.
    EDIT2: Right now, I'm trying to compile Vala 0.10.4, then version used in Ubuntu 11.10. Hopefully that will eliminate some of the Vala errors.
    EDIT3: Vala 0.10 is too old. 0.12 and 0.14 are also in the Ubuntu repository. Trying those...
    EDIT4: 0.14 is actually 0.13.1. Gah... Vala takes longer to compile under VirtualBox than GTK3...
    EDIT5: Okay...so VirtualBox "helpfully" became slow enough that I could read the error messages. The Vala error messages aren't actually error messages, but rather warnings about unused methods. I wonder what prevents Unity from running then...
    Last edited by chenxiaolong (2011-08-30 02:30:29)

  • Installing Arch Linux on USB key: error while booting

    Hello,
    first of all, I must say I've followed the steps from this article on arch wiki to install archlinux on my USB key: https://wiki.archlinux.org/index.php/In … _a_USB_key
    So what I did is to use one of my 2 usb keys to INSTALL linux, and the second one to RUN linux. I used dd to write on the 1st usb, eveything worked fine when booting, then I do install arch on the my second usb following the stept from the link above, everything works until I get this error while booting (at the middle):
    Waiting 10 seconds for device /dev/sdc/
    Root device '/dev/sdc' doesn't exist. Attempting to create it.
    ERROR: Unable to determine major/minor number of root device '/dev/disk/by-uuid/lotsofnumbers'
    You are being dropped to a recovery shell
    Type 'exit' to try and continue booting
    /bin/sh: Can't contact tty; job control turned off
    [ramfs /]#
    To summarize I'll show you my conf files that could help you to resolve my problem:
    /etc/fstab.conf
    /dev/sdc1 /boot ext2 defaults 0 1
    /dev/sdc2 / ext3 defaults 0 1
    /dev/sdc3 /home ext3 defaults 0 1
    So here I've sdc1 boot 32MB partition; sdc2 root 3GB partition; sdc3 home 978MB partition for a total of 4GB USB key~
    I didn't make a swap partition as in the tutorial they are writing it's unnecessary for some kind of reasons.
    /etc/mkinitcpio.conf
    HOOKS="base udev usb autodetect pata scsi sata filesystems"
    I've added to here, "usb" to the hooks
    installed GRUB on my sdc, here is the menu.ist:
    # (0) Arch Linux
    title Arch Linux (USB)
    root (hd0,0)
    kernel /vmlinuz26 root=/dev/sdc ro vga=773
    initrd /kernel26.img
    So, I boot GRUB without problems, start Arch Linux, but then I got this error above.
    I've searched alot on some forums and read many stuffs, but sitll can't fix it and it seems complicated.
    I've tried to boot with UUID, also, but didn't make difference. I tried to remove some parameter from the hooks, but unfortunately this wasn't working still. I've read somewhere to use chroot, but I didn't catch on how to do that and what was the use of chroot, I'm still noob user of arch linux and currently learning. Maybe it's the problem, as some forum were talking about creating a new image, but I still don't know how to make it. By the way, I'm not sure this could have fixed my current problem. I've also read somewhere it could be due to my lack of space, but I wrote you how I did partition my USB key, let me know if you have any suggestion please.

    1. What I did is re-installing entirely from my installation disk or USB to test out different setting in  my config files, because I don't know how to edit my .conf as I can't really finish to boot to the end and get in terminal mode? If there is a quicker way to edit files from any terminal to go into my current USB sdc to modify directly my file from there, I'd enjoy probably. So rebuilding the initpio, no, I just re-installed to test out different configs.
    2. Yes, same error.
    3. Tested out by-id/by-path and uuid = no difference
    4. Didn't know about larch, it seems to be a nice tool, I'll check it out

  • System encryption using LUKS and GPG encrypted keys for arch linux

    Update: As of 2012-03-28, arch changed from gnupg 1.4 to 2.x which uses pinentry for the password dialog. The "etwo" hook described here doesn't work with gnupg 2. Either use the openssl hook below or use a statically compiled version of gnupg 1.4.
    Update: As of 2012-12-19, the mkinitcpio is not called during boot, unless the "install" file for the hook contains "add_runscript". This resulted in an unbootable system for me. Also, the method name was changed from install () to build ().
    Update: 2013-01-13: Updated the hook files using the corrections by Deth.
    Note: This guide is a bit dated now, in particular the arch installation might be different now. But essentially, the approach stays the same. Please also take a look at the posts further down, specifically the alternative hooks that use openssl.
    I always wanted to set up a fully encrypted arch linux server that uses gpg encrypted keyfiles on an external usb stick and luks for root filesystem encryption. I already did it once in gentoo using this guide. For arch, I had to play alot with initcpio hooks and after one day of experimentation, I finally got it working. I wrote a little guide for myself which I'm going to share here for anyone that might be interested. There might be better or easier ways, like I said this is just how I did it. I hope it might help someone else. Constructive feedback is always welcome
    Intro
    Using arch linux mkinitcpio's encrypt hook, one can easily use encrypted root partitions with LUKS. It's also possible to use key files stored on an external drive, like an usb stick. However, if someone steals your usb stick, he can just copy the key and potentially access the system. I wanted to have a little extra security by additionally encrypting the key file with gpg using a symmetric cipher and a passphrase.
    Since the encrypt hook doesn't support this scenario, I created a modifed hook called “etwo” (silly name I know, it was the first thing that came to my mind). It will simply look if the key file has the extension .gpg and, if yes, use gpg to decrypt it, then pipe the result into cryptsetup.
    Conventions
    In this short guide, I use the following disk/partition names:
    /dev/sda: is the hard disk that will contain an encrypted swap (/dev/sda1), /var (/dev/sda2) and root (/dev/sda3) partition.
    /dev/sdb is the usb stick that will contain the gpg encrypted luks keys, the kernel and grub. It will have one partition /dev/sdb1 formatted with ext2.
    /dev/mapper/root, /dev/mapper/swap and /dev/mapper/var will be the encrypted devices.
    Credits
    Thanks to the authors of SECURITY_System_Encryption_DM-Crypt_with_LUKS (gentoo wiki), System Encryption with LUKS (arch wiki), mkinitcpio (arch wiki) and Early Userspace in Arch Linux (/dev/brain0 blog)!
    Guide
    1. Boot the arch live cd
    I had to use a newer testing version, because the 2010.05 cd came with a broken gpg. You can download one here: http://releng.archlinux.org/isos/. I chose the “core“ version. Go ahead and boot the live cd, but don't start the setup yet.
    2. Set keymap
    Use km to set your keymap. This is important for non-qwerty keyboards to avoid suprises with passphrases...
    3. Wipe your discs
    ATTENTION: this will DELETE everything on /dev/sda and /dev/sdb forever! Do not blame me for any lost data!
    Before encrypting the hard disc, it has to be completely wiped and overwritten with random data. I used shred for this. Others use badblocks or dd with /dev/urandom. Either way, this will take a long time, depending on the size of your disc. I also wiped my usb stick just to be sure.
    shred -v /dev/sda
    shred -v /dev/sdb
    4. Partitioning
    Fire up fdisk and create the following partitions:
    /dev/sda1, type linux swap.
    /dev/sda2: type linux
    /dev/sda3: type linux
    /dev/sdb1, type linux
    Of course you can choose a different layout, this is just how I did it. Keep in mind that only the root filesystem will be decrypted by the initcpio. The rest will be decypted during normal init boot using /etc/crypttab, the keys being somewhere on the root filesystem.
    5. Format  and mount the usb stick
    Create an ext2 filesystem on /dev/sdb1:
    mkfs.ext2 /dev/sdb1
    mkdir /root/usb
    mount /dev/sdb1 /root/usb
    cd /root/usb # this will be our working directory for now.
    Do not mount anything to /mnt, because the arch installer will use that directory later to mount the encrypted root filesystem.
    6. Configure the network (if not already done automatically)
    ifconfig eth0 192.168.0.2 netmask 255.255.255.0
    route add default gw 192.168.0.1
    echo "nameserver 192.168.0.1" >> /etc/resolv.conf
    (this is just an example, your mileage may vary)
    7. Install gnupg
    pacman -Sy
    pacman -S gnupg
    Verify that gnupg works by launching gpg.
    8. Create the keys
    Just to be sure, make sure swap is off:
    cat /proc/swaps
    should return no entries.
    Create gpg encrypted keys (remember, we're still in our working dir /root/usb):
    dd if=/dev/urandom bs=512 count=4 | gpg -v --cipher-algo aes256 --digest-algo sha512 -c -a > root.gpg
    dd if=/dev/urandom bs=512 count=4 | gpg -v --cipher-algo aes256 --digest-algo sha512 -c -a > var.gpg
    Choose a strong password!!
    Don't do this in two steps, e.g don't do dd to a file and then gpg on that file. The key should never be stored in plain text on an unencrypted device, except if that device is wiped on system restart (ramfs)!
    Note that the default cipher for gpg is cast5, I just chose to use a different one.
    9. Create the encrypted devices with cryptsetup
    Create encrypted swap:
    cryptsetup -c aes-cbc-essiv:sha256 -s 256 -h whirlpool -d /dev/urandom create swap /dev/sda1
    You should see /dev/mapper/swap now. Don't format nor turn it on for now. This will be done by the arch installer.
    Important: From the Cryptsetup 1.1.2 Release notes:
    Cryptsetup can accept passphrase on stdin (standard input). Handling of new line (\n) character is defined by input specification:
        if keyfile is specified as "-" (using --key-file=- or by positional argument in luksFormat and luksAddKey, like cat file | cryptsetup --key-file=- <action> ), input is processed
          as normal binary file and no new line is interpreted.
        if there is no key file specification (with default input from stdin pipe like echo passphrase | cryptsetup <action> ) input is processed as input from terminal, reading will
          stop after new line is detected.
    If I understand this correctly, since the randomly generated key can contain a newline early on, piping the key into cryptsetup without specifying --key-file=- could result in a big part of the key to be ignored by cryptsetup. Example: if the random key was "foo\nandsomemorebaratheendofthekey", piping it directly into cryptsetup without --key-file=- would result in cryptsetup using only "foo" as key which would have big security implications. We should therefor ALWAYS pipe the key into cryptsetup using --key-file=- which ignores newlines.
    gpg -q -d root.gpg 2>/dev/null | cryptsetup -v -–key-file=- -c aes-cbc-essiv:sha256 -s 256 -h whirlpool luksFormat /dev/sda3
    gpg -q -d var.gpg 2>/dev/null | cryptsetup -v –-key-file=- -c aes-cbc-essiv:sha256 -s 256 -h whirlpool -v luksFormat /dev/sda2
    Check for any errors.
    10. Open the luks devices
    gpg -d root.gpg 2>/dev/null | cryptsetup -v –-key-file=- luksOpen /dev/sda3 root
    gpg -d var.gpg 2>/dev/null | cryptsetup -v –-key-file=- luksOpen /dev/sda2 var
    If you see /dev/mapper/root and /dev/mapper/var now, everything is ok.
    11. Start the installer /arch/setup
    Follow steps 1 to 3.
    At step 4 (Prepare hard drive(s), select “3 – Manually Configure block devices, filesystems and mountpoints. Choose /dev/sdb1 (the usb stick) as /boot, /dev/mapper/swap for swap, /dev/mapper/root for / and /dev/mapper/var for /var.
    Format all drives (choose “yes” when asked “do you want to have this filesystem (re)created”) EXCEPT for /dev/sdb1, choose “no”. Choose the correct filesystem for /dev/sdb1, ext2 in my case. Use swap for /dev/mapper/swap. For the rest, I chose ext4.
    Select DONE to start formatting.
    At step 5 (Select packages), select grub as boot loader. Select the base group. Add mkinitcpio.
    Start step 6 (Install packages).
    Go to step 7 (Configure System).
    By sure to set the correct KEYMAP, LOCALE and TIMEZONE in /etc/rc.conf.
    Edit /etc/fstab:
    /dev/mapper/root / ext4 defaults 0 1
    /dev/mapper/swap swap swap defaults 0 0
    /dev/mapper/var /var ext4 defaults 0 1
    # /dev/sdb1 /boot ext2 defaults 0 1
    Configure the rest normally. When you're done, setup will launch mkinitcpio. We'll manually launch this again later.
    Go to step 8 (install boot loader).
    Be sure to change the kernel line in menu.lst:
    kernel /vmlinuz26 root=/dev/mapper/root cryptdevice=/dev/sda3:root cryptkey=/dev/sdb1:ext2:/root.gpg
    Don't forget the :root suffix in cryptdevice!
    Also, my root line was set to (hd1,0). Had to change that to
    root (hd0,0)
    Install grub to /dev/sdb (the usb stick).
    Now, we can exit the installer.
    12. Install mkinitcpio with the etwo hook.
    Create /mnt/lib/initcpio/hooks/etwo:
    #!/usr/bin/ash
    run_hook() {
    /sbin/modprobe -a -q dm-crypt >/dev/null 2>&1
    if [ -e "/sys/class/misc/device-mapper" ]; then
    if [ ! -e "/dev/mapper/control" ]; then
    /bin/mknod "/dev/mapper/control" c $(cat /sys/class/misc/device-mapper/dev | sed 's|:| |')
    fi
    [ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
    # Get keyfile if specified
    ckeyfile="/crypto_keyfile"
    usegpg="n"
    if [ "x${cryptkey}" != "x" ]; then
    ckdev="$(echo "${cryptkey}" | cut -d: -f1)"
    ckarg1="$(echo "${cryptkey}" | cut -d: -f2)"
    ckarg2="$(echo "${cryptkey}" | cut -d: -f3)"
    if poll_device "${ckdev}" ${rootdelay}; then
    case ${ckarg1} in
    *[!0-9]*)
    # Use a file on the device
    # ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path
    if [ "${ckarg2#*.}" = "gpg" ]; then
    ckeyfile="${ckeyfile}.gpg"
    usegpg="y"
    fi
    mkdir /ckey
    mount -r -t ${ckarg1} ${ckdev} /ckey
    dd if=/ckey/${ckarg2} of=${ckeyfile} >/dev/null 2>&1
    umount /ckey
    # Read raw data from the block device
    # ckarg1 is numeric: ckarg1=offset, ckarg2=length
    dd if=${ckdev} of=${ckeyfile} bs=1 skip=${ckarg1} count=${ckarg2} >/dev/null 2>&1
    esac
    fi
    [ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase."
    fi
    if [ -n "${cryptdevice}" ]; then
    DEPRECATED_CRYPT=0
    cryptdev="$(echo "${cryptdevice}" | cut -d: -f1)"
    cryptname="$(echo "${cryptdevice}" | cut -d: -f2)"
    else
    DEPRECATED_CRYPT=1
    cryptdev="${root}"
    cryptname="root"
    fi
    warn_deprecated() {
    echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated"
    echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead."
    if poll_device "${cryptdev}" ${rootdelay}; then
    if /sbin/cryptsetup isLuks ${cryptdev} >/dev/null 2>&1; then
    [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
    dopassphrase=1
    # If keyfile exists, try to use that
    if [ -f ${ckeyfile} ]; then
    if [ "${usegpg}" = "y" ]; then
    # gpg tty fixup
    if [ -e /dev/tty ]; then mv /dev/tty /dev/tty.backup; fi
    cp -a /dev/console /dev/tty
    while [ ! -e /dev/mapper/${cryptname} ];
    do
    sleep 2
    /usr/bin/gpg -d "${ckeyfile}" 2>/dev/null | cryptsetup --key-file=- luksOpen ${cryptdev} ${cryptname} ${CSQUIET}
    dopassphrase=0
    done
    rm /dev/tty
    if [ -e /dev/tty.backup ]; then mv /dev/tty.backup /dev/tty; fi
    else
    if eval /sbin/cryptsetup --key-file ${ckeyfile} luksOpen ${cryptdev} ${cryptname} ${CSQUIET}; then
    dopassphrase=0
    else
    echo "Invalid keyfile. Reverting to passphrase."
    fi
    fi
    fi
    # Ask for a passphrase
    if [ ${dopassphrase} -gt 0 ]; then
    echo ""
    echo "A password is required to access the ${cryptname} volume:"
    #loop until we get a real password
    while ! eval /sbin/cryptsetup luksOpen ${cryptdev} ${cryptname} ${CSQUIET}; do
    sleep 2;
    done
    fi
    if [ -e "/dev/mapper/${cryptname}" ]; then
    if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
    export root="/dev/mapper/root"
    fi
    else
    err "Password succeeded, but ${cryptname} creation failed, aborting..."
    exit 1
    fi
    elif [ -n "${crypto}" ]; then
    [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
    msg "Non-LUKS encrypted device found..."
    if [ $# -ne 5 ]; then
    err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip"
    err "Non-LUKS decryption not attempted..."
    return 1
    fi
    exe="/sbin/cryptsetup create ${cryptname} ${cryptdev}"
    tmp=$(echo "${crypto}" | cut -d: -f1)
    [ -n "${tmp}" ] && exe="${exe} --hash \"${tmp}\""
    tmp=$(echo "${crypto}" | cut -d: -f2)
    [ -n "${tmp}" ] && exe="${exe} --cipher \"${tmp}\""
    tmp=$(echo "${crypto}" | cut -d: -f3)
    [ -n "${tmp}" ] && exe="${exe} --key-size \"${tmp}\""
    tmp=$(echo "${crypto}" | cut -d: -f4)
    [ -n "${tmp}" ] && exe="${exe} --offset \"${tmp}\""
    tmp=$(echo "${crypto}" | cut -d: -f5)
    [ -n "${tmp}" ] && exe="${exe} --skip \"${tmp}\""
    if [ -f ${ckeyfile} ]; then
    exe="${exe} --key-file ${ckeyfile}"
    else
    exe="${exe} --verify-passphrase"
    echo ""
    echo "A password is required to access the ${cryptname} volume:"
    fi
    eval "${exe} ${CSQUIET}"
    if [ $? -ne 0 ]; then
    err "Non-LUKS device decryption failed. verify format: "
    err " crypto=hash:cipher:keysize:offset:skip"
    exit 1
    fi
    if [ -e "/dev/mapper/${cryptname}" ]; then
    if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
    export root="/dev/mapper/root"
    fi
    else
    err "Password succeeded, but ${cryptname} creation failed, aborting..."
    exit 1
    fi
    else
    err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified."
    fi
    fi
    rm -f ${ckeyfile}
    fi
    Create /mnt/lib/initcpio/install/etwo:
    #!/bin/bash
    build() {
    local mod
    add_module dm-crypt
    if [[ $CRYPTO_MODULES ]]; then
    for mod in $CRYPTO_MODULES; do
    add_module "$mod"
    done
    else
    add_all_modules '/crypto/'
    fi
    add_dir "/dev/mapper"
    add_binary "cryptsetup"
    add_binary "dmsetup"
    add_binary "/usr/bin/gpg"
    add_file "/usr/lib/udev/rules.d/10-dm.rules"
    add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
    add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
    add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
    add_runscript
    help ()
    cat<<HELPEOF
    This hook allows for an encrypted root device with support for gpg encrypted key files.
    To use gpg, the key file must have the extension .gpg and you have to install gpg and add /usr/bin/gpg
    to your BINARIES var in /etc/mkinitcpio.conf.
    HELPEOF
    Edit /mnt/etc/mkinitcpio.conf (only relevant sections displayed):
    MODULES=”ext2 ext4” # not sure if this is really nessecary.
    BINARIES=”/usr/bin/gpg” # this could probably be done in install/etwo...
    HOOKS=”base udev usbinput keymap autodetect pata scsi sata usb etwo filesystems” # (usbinput is only needed if you have an usb keyboard)
    Copy the initcpio stuff over to the live cd:
    cp /mnt/lib/initcpio/hooks/etwo /lib/initcpio/hooks/
    cp /mnt/lib/initcpio/install/etwo /lib/initcpio/install/
    cp /mnt/etc/mkinitcpio.conf /etc/
    Verify your LOCALE, KEYMAP and TIMEZONE in /etc/rc.conf!
    Now reinstall the initcpio:
    mkinitcpio -g /mnt/boot/kernel26.img
    Make sure there were no errors and that all hooks were included.
    13. Decrypt the "var" key to the encrypted root
    mkdir /mnt/keys
    chmod 500 /mnt/keys
    gpg –output /mnt/keys/var -d /mnt/boot/var.gpg
    chmod 400 /mnt/keys/var
    14. Setup crypttab
    Edit /mnt/etc/crypttab:
    swap /dev/sda1 SWAP -c aes-cbc-essiv:sha256 -s 256 -h whirlpool
    var /dev/sda2 /keys/var
    15. Reboot
    We're done, you may reboot. Make sure you select the usb stick as the boot device in your bios and hope for the best. . If it didn't work, play with grub's settings or boot from the live cd, mount your encrypted devices and check all settings. You might also have less trouble by using uuid's instead of device names.  I chose device names to keep things as simple as possible, even though it's not the optimal way to do it.
    Make backups of your data and your usb stick and do not forget your password(s)! Or you can say goodbye to your data forever...
    Last edited by fabriceb (2013-01-15 22:36:23)

    I'm trying to run my install script that is based on https://bbs.archlinux.org/viewtopic.php?id=129885
    Decrypting the gpg key after grub works, but then "Devce root already exists." appears every second.
    any idea ?
    #!/bin/bash
    # This script is designed to be run in conjunction with a UEFI boot using Archboot intall media.
    # prereqs:
    # EFI "BIOS" set to boot *only* from EFI
    # successful EFI boot of Archboot USB
    # mount /dev/sdb1 /src
    set -o nounset
    #set -o errexit
    # Host specific configuration
    # this whole script needs to be customized, particularly disk partitions
    # and configuration, but this section contains global variables that
    # are used during the system configuration phase for convenience
    HOSTNAME=daniel
    USERNAME=user
    # Globals
    # We don't need to set these here but they are used repeatedly throughout
    # so it makes sense to reuse them and allow an easy, one-time change if we
    # need to alter values such as the install target mount point.
    INSTALL_TARGET="/install"
    HR="--------------------------------------------------------------------------------"
    PACMAN="pacman --noconfirm --config /tmp/pacman.conf"
    TARGET_PACMAN="pacman --noconfirm --config /tmp/pacman.conf -r ${INSTALL_TARGET}"
    CHROOT_PACMAN="pacman --noconfirm --cachedir /var/cache/pacman/pkg --config /tmp/pacman.conf -r ${INSTALL_TARGET}"
    FILE_URL="file:///packages/core-$(uname -m)/pkg"
    FTP_URL='ftp://mirrors.kernel.org/archlinux/$repo/os/$arch'
    HTTP_URL='http://mirrors.kernel.org/archlinux/$repo/os/$arch'
    # Functions
    # I've avoided using functions in this script as they aren't required and
    # I think it's more of a learning tool if you see the step-by-step
    # procedures even with minor duplciations along the way, but I feel that
    # these functions clarify the particular steps of setting values in config
    # files.
    SetValue () {
    # EXAMPLE: SetValue VARIABLENAME '\"Quoted Value\"' /file/path
    VALUENAME="$1" NEWVALUE="$2" FILEPATH="$3"
    sed -i "s+^#\?\(${VALUENAME}\)=.*$+\1=${NEWVALUE}+" "${FILEPATH}"
    CommentOutValue () {
    VALUENAME="$1" FILEPATH="$2"
    sed -i "s/^\(${VALUENAME}.*\)$/#\1/" "${FILEPATH}"
    UncommentValue () {
    VALUENAME="$1" FILEPATH="$2"
    sed -i "s/^#\(${VALUENAME}.*\)$/\1/" "${FILEPATH}"
    # Initialize
    # Warn the user about impending doom, set up the network on eth0, mount
    # the squashfs images (Archboot does this normally, we're just filling in
    # the gaps resulting from the fact that we're doing a simple scripted
    # install). We also create a temporary pacman.conf that looks for packages
    # locally first before sourcing them from the network. It would be better
    # to do either *all* local or *all* network but we can't for two reasons.
    # 1. The Archboot installation image might have an out of date kernel
    # (currently the case) which results in problems when chrooting
    # into the install mount point to modprobe efivars. So we use the
    # package snapshot on the Archboot media to ensure our kernel is
    # the same as the one we booted with.
    # 2. Ideally we'd source all local then, but some critical items,
    # notably grub2-efi variants, aren't yet on the Archboot media.
    # Warn
    timer=9
    echo -e "\n\nMAC WARNING: This script is not designed for APPLE MAC installs and will potentially misconfigure boot to your existing OS X installation. STOP NOW IF YOU ARE ON A MAC.\n\n"
    echo -n "GENERAL WARNING: This procedure will completely format /dev/sda. Please cancel with ctrl-c to cancel within $timer seconds..."
    while [[ $timer -gt 0 ]]
    do
    sleep 1
    let timer-=1
    echo -en "$timer seconds..."
    done
    echo "STARTING"
    # Get Network
    echo -n "Waiting for network address.."
    #dhclient eth0
    dhcpcd -p eth0
    echo -n "Network address acquired."
    # Mount packages squashfs images
    umount "/packages/core-$(uname -m)"
    umount "/packages/core-any"
    rm -rf "/packages/core-$(uname -m)"
    rm -rf "/packages/core-any"
    mkdir -p "/packages/core-$(uname -m)"
    mkdir -p "/packages/core-any"
    modprobe -q loop
    modprobe -q squashfs
    mount -o ro,loop -t squashfs "/src/packages/archboot_packages_$(uname -m).squashfs" "/packages/core-$(uname -m)"
    mount -o ro,loop -t squashfs "/src/packages/archboot_packages_any.squashfs" "/packages/core-any"
    # Create temporary pacman.conf file
    cat << PACMANEOF > /tmp/pacman.conf
    [options]
    Architecture = auto
    CacheDir = ${INSTALL_TARGET}/var/cache/pacman/pkg
    CacheDir = /packages/core-$(uname -m)/pkg
    CacheDir = /packages/core-any/pkg
    [core]
    Server = ${FILE_URL}
    Server = ${FTP_URL}
    Server = ${HTTP_URL}
    [extra]
    Server = ${FILE_URL}
    Server = ${FTP_URL}
    Server = ${HTTP_URL}
    #Uncomment to enable pacman -Sy yaourt
    [archlinuxfr]
    Server = http://repo.archlinux.fr/\$arch
    PACMANEOF
    # Prepare pacman
    [[ ! -d "${INSTALL_TARGET}/var/cache/pacman/pkg" ]] && mkdir -m 755 -p "${INSTALL_TARGET}/var/cache/pacman/pkg"
    [[ ! -d "${INSTALL_TARGET}/var/lib/pacman" ]] && mkdir -m 755 -p "${INSTALL_TARGET}/var/lib/pacman"
    ${PACMAN} -Sy
    ${TARGET_PACMAN} -Sy
    # Install prereqs from network (not on archboot media)
    echo -e "\nInstalling prereqs...\n$HR"
    #sed -i "s/^#S/S/" /etc/pacman.d/mirrorlist # Uncomment all Server lines
    UncommentValue S /etc/pacman.d/mirrorlist # Uncomment all Server lines
    ${PACMAN} --noconfirm -Sy gptfdisk btrfs-progs-unstable libusb-compat gnupg
    # Configure Host
    # Here we create three partitions:
    # 1. efi and /boot (one partition does double duty)
    # 2. swap
    # 3. our encrypted root
    # Note that all of these are on a GUID partition table scheme. This proves
    # to be quite clean and simple since we're not doing anything with MBR
    # boot partitions and the like.
    echo -e "format\n"
    # shred -v /dev/sda
    # disk prep
    sgdisk -Z /dev/sda # zap all on disk
    #sgdisk -Z /dev/mmcb1k0 # zap all on sdcard
    sgdisk -a 2048 -o /dev/sda # new gpt disk 2048 alignment
    #sgdisk -a 2048 -o /dev/mmcb1k0
    # create partitions
    sgdisk -n 1:0:+200M /dev/sda # partition 1 (UEFI BOOT), default start block, 200MB
    sgdisk -n 2:0:+4G /dev/sda # partition 2 (SWAP), default start block, 200MB
    sgdisk -n 3:0:0 /dev/sda # partition 3, (LUKS), default start, remaining space
    #sgdisk -n 1:0:1800M /dev/mmcb1k0 # root.gpg
    # set partition types
    sgdisk -t 1:ef00 /dev/sda
    sgdisk -t 2:8200 /dev/sda
    sgdisk -t 3:8300 /dev/sda
    #sgdisk -t 1:0700 /dev/mmcb1k0
    # label partitions
    sgdisk -c 1:"UEFI Boot" /dev/sda
    sgdisk -c 2:"Swap" /dev/sda
    sgdisk -c 3:"LUKS" /dev/sda
    #sgdisk -c 1:"Key" /dev/mmcb1k0
    echo -e "create gpg file\n"
    # create gpg file
    dd if=/dev/urandom bs=512 count=4 | gpg -v --cipher-algo aes256 --digest-algo sha512 -c -a > /root/root.gpg
    echo -e "format LUKS on root\n"
    # format LUKS on root
    gpg -q -d /root/root.gpg 2>/dev/null | cryptsetup -v --key-file=- -c aes-xts-plain -s 512 --hash sha512 luksFormat /dev/sda3
    echo -e "open LUKS on root\n"
    gpg -d /root/root.gpg 2>/dev/null | cryptsetup -v --key-file=- luksOpen /dev/sda3 root
    # NOTE: make sure to add dm_crypt and aes_i586 to MODULES in rc.conf
    # NOTE2: actually this isn't required since we're mounting an encrypted root and grub2/initramfs handles this before we even get to rc.conf
    # make filesystems
    # following swap related commands not used now that we're encrypting our swap partition
    #mkswap /dev/sda2
    #swapon /dev/sda2
    #mkfs.ext4 /dev/sda3 # this is where we'd create an unencrypted root partition, but we're using luks instead
    echo -e "\nCreating Filesystems...\n$HR"
    # make filesystems
    mkfs.ext4 /dev/mapper/root
    mkfs.vfat -F32 /dev/sda1
    #mkfs.vfat -F32 /dev/mmcb1k0p1
    echo -e "mount targets\n"
    # mount target
    #mount /dev/sda3 ${INSTALL_TARGET} # this is where we'd mount the unencrypted root partition
    mount /dev/mapper/root ${INSTALL_TARGET}
    # mount target
    mkdir ${INSTALL_TARGET}
    # mkdir ${INSTALL_TARGET}/key
    # mount -t vfat /dev/mmcb1k0p1 ${INSTALL_TARGET}/key
    mkdir ${INSTALL_TARGET}/boot
    mount -t vfat /dev/sda1 ${INSTALL_TARGET}/boot
    # Install base, necessary utilities
    mkdir -p ${INSTALL_TARGET}/var/lib/pacman
    ${TARGET_PACMAN} -Sy
    ${TARGET_PACMAN} -Su base
    # curl could be installed later but we want it ready for rankmirrors
    ${TARGET_PACMAN} -S curl
    ${TARGET_PACMAN} -S libusb-compat gnupg
    ${TARGET_PACMAN} -R grub
    rm -rf ${INSTALL_TARGET}/boot/grub
    ${TARGET_PACMAN} -S grub2-efi-x86_64
    # Configure new system
    SetValue HOSTNAME ${HOSTNAME} ${INSTALL_TARGET}/etc/rc.conf
    sed -i "s/^\(127\.0\.0\.1.*\)$/\1 ${HOSTNAME}/" ${INSTALL_TARGET}/etc/hosts
    SetValue CONSOLEFONT Lat2-Terminus16 ${INSTALL_TARGET}/etc/rc.conf
    #following replaced due to netcfg
    #SetValue interface eth0 ${INSTALL_TARGET}/etc/rc.conf
    # write fstab
    # You can use UUID's or whatever you want here, of course. This is just
    # the simplest approach and as long as your drives aren't changing values
    # randomly it should work fine.
    cat > ${INSTALL_TARGET}/etc/fstab <<FSTAB_EOF
    # /etc/fstab: static file system information
    # <file system> <dir> <type> <options> <dump> <pass>
    tmpfs /tmp tmpfs nodev,nosuid 0 0
    /dev/sda1 /boot vfat defaults 0 0
    /dev/mapper/cryptswap none swap defaults 0 0
    /dev/mapper/root / ext4 defaults,noatime 0 1
    FSTAB_EOF
    # write etwo
    mkdir -p /lib/initcpio/hooks/
    mkdir -p /lib/initcpio/install/
    cp /src/etwo_hooks /lib/initcpio/hooks/etwo
    cp /src/etwo_install /lib/initcpio/install/etwo
    mkdir -p ${INSTALL_TARGET}/lib/initcpio/hooks/
    mkdir -p ${INSTALL_TARGET}/lib/initcpio/install/
    cp /src/etwo_hooks ${INSTALL_TARGET}/lib/initcpio/hooks/etwo
    cp /src/etwo_install ${INSTALL_TARGET}/lib/initcpio/install/etwo
    # write crypttab
    # encrypted swap (random passphrase on boot)
    echo cryptswap /dev/sda2 SWAP "-c aes-xts-plain -h whirlpool -s 512" >> ${INSTALL_TARGET}/etc/crypttab
    # copy configs we want to carry over to target from install environment
    mv ${INSTALL_TARGET}/etc/resolv.conf ${INSTALL_TARGET}/etc/resolv.conf.orig
    cp /etc/resolv.conf ${INSTALL_TARGET}/etc/resolv.conf
    mkdir -p ${INSTALL_TARGET}/tmp
    cp /tmp/pacman.conf ${INSTALL_TARGET}/tmp/pacman.conf
    # mount proc, sys, dev in install root
    mount -t proc proc ${INSTALL_TARGET}/proc
    mount -t sysfs sys ${INSTALL_TARGET}/sys
    mount -o bind /dev ${INSTALL_TARGET}/dev
    echo -e "umount boot\n"
    # we have to remount /boot from inside the chroot
    umount ${INSTALL_TARGET}/boot
    # Create install_efi script (to be run *after* chroot /install)
    touch ${INSTALL_TARGET}/install_efi
    chmod a+x ${INSTALL_TARGET}/install_efi
    cat > ${INSTALL_TARGET}/install_efi <<EFI_EOF
    # functions (these could be a library, but why overcomplicate things
    SetValue () { VALUENAME="\$1" NEWVALUE="\$2" FILEPATH="\$3"; sed -i "s+^#\?\(\${VALUENAME}\)=.*\$+\1=\${NEWVALUE}+" "\${FILEPATH}"; }
    CommentOutValue () { VALUENAME="\$1" FILEPATH="\$2"; sed -i "s/^\(\${VALUENAME}.*\)\$/#\1/" "\${FILEPATH}"; }
    UncommentValue () { VALUENAME="\$1" FILEPATH="\$2"; sed -i "s/^#\(\${VALUENAME}.*\)\$/\1/" "\${FILEPATH}"; }
    echo -e "mount boot\n"
    # remount here or grub et al gets confused
    mount -t vfat /dev/sda1 /boot
    # mkinitcpio
    # NOTE: intel_agp drm and i915 for intel graphics
    SetValue MODULES '\\"dm_mod dm_crypt aes_x86_64 ext2 ext4 vfat intel_agp drm i915\\"' /etc/mkinitcpio.conf
    SetValue HOOKS '\\"base udev pata scsi sata usb usbinput keymap consolefont etwo encrypt filesystems\\"' /etc/mkinitcpio.conf
    SetValue BINARIES '\\"/usr/bin/gpg\\"' /etc/mkinitcpio.conf
    mkinitcpio -p linux
    # kernel modules for EFI install
    modprobe efivars
    modprobe dm-mod
    # locale-gen
    UncommentValue de_AT /etc/locale.gen
    locale-gen
    # install and configure grub2
    # did this above
    #${CHROOT_PACMAN} -Sy
    #${CHROOT_PACMAN} -R grub
    #rm -rf /boot/grub
    #${CHROOT_PACMAN} -S grub2-efi-x86_64
    # you can be surprisingly sloppy with the root value you give grub2 as a kernel option and
    # even omit the cryptdevice altogether, though it will wag a finger at you for using
    # a deprecated syntax, so we're using the correct form here
    # NOTE: take out i915.modeset=1 unless you are on intel graphics
    SetValue GRUB_CMDLINE_LINUX '\\"cryptdevice=/dev/sda3:root cryptkey=/dev/sda1:vfat:/root.gpg add_efi_memmap i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 pcie_aspm=force quiet\\"' /etc/default/grub
    # set output to graphical
    SetValue GRUB_TERMINAL_OUTPUT gfxterm /etc/default/grub
    SetValue GRUB_GFXMODE 960x600x32,auto /etc/default/grub
    SetValue GRUB_GFXPAYLOAD_LINUX keep /etc/default/grub # comment out this value if text only mode
    # install the actual grub2. Note that despite our --boot-directory option we will still need to move
    # the grub directory to /boot/grub during grub-mkconfig operations until grub2 gets patched (see below)
    grub_efi_x86_64-install --bootloader-id=grub --no-floppy --recheck
    # create our EFI boot entry
    # bug in the HP bios firmware (F.08)
    efibootmgr --create --gpt --disk /dev/sda --part 1 --write-signature --label "ARCH LINUX" --loader "\\\\grub\\\\grub.efi"
    # copy font for grub2
    cp /usr/share/grub/unicode.pf2 /boot/grub
    # generate config file
    grub-mkconfig -o /boot/grub/grub.cfg
    exit
    EFI_EOF
    # Install EFI using script inside chroot
    chroot ${INSTALL_TARGET} /install_efi
    rm ${INSTALL_TARGET}/install_efi
    # Post install steps
    # anything you want to do post install. run the script automatically or
    # manually
    touch ${INSTALL_TARGET}/post_install
    chmod a+x ${INSTALL_TARGET}/post_install
    cat > ${INSTALL_TARGET}/post_install <<POST_EOF
    set -o errexit
    set -o nounset
    # functions (these could be a library, but why overcomplicate things
    SetValue () { VALUENAME="\$1" NEWVALUE="\$2" FILEPATH="\$3"; sed -i "s+^#\?\(\${VALUENAME}\)=.*\$+\1=\${NEWVALUE}+" "\${FILEPATH}"; }
    CommentOutValue () { VALUENAME="\$1" FILEPATH="\$2"; sed -i "s/^\(\${VALUENAME}.*\)\$/#\1/" "\${FILEPATH}"; }
    UncommentValue () { VALUENAME="\$1" FILEPATH="\$2"; sed -i "s/^#\(\${VALUENAME}.*\)\$/\1/" "\${FILEPATH}"; }
    # root password
    echo -e "${HR}\\nNew root user password\\n${HR}"
    passwd
    # add user
    echo -e "${HR}\\nNew non-root user password (username:${USERNAME})\\n${HR}"
    groupadd sudo
    useradd -m -g users -G audio,lp,optical,storage,video,games,power,scanner,network,sudo,wheel -s /bin/bash ${USERNAME}
    passwd ${USERNAME}
    # mirror ranking
    echo -e "${HR}\\nRanking Mirrors (this will take a while)\\n${HR}"
    cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig
    mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.all
    sed -i "s/#S/S/" /etc/pacman.d/mirrorlist.all
    rankmirrors -n 5 /etc/pacman.d/mirrorlist.all > /etc/pacman.d/mirrorlist
    # temporary fix for locale.sh update conflict
    mv /etc/profile.d/locale.sh /etc/profile.d/locale.sh.preupdate || true
    # yaourt repo (add to target pacman, not tmp pacman.conf, for ongoing use)
    echo -e "\\n[archlinuxfr]\\nServer = http://repo.archlinux.fr/\\\$arch" >> /etc/pacman.conf
    echo -e "\\n[haskell]\\nServer = http://www.kiwilight.com/\\\$repo/\\\$arch" >> /etc/pacman.conf
    # additional groups and utilities
    pacman --noconfirm -Syu
    pacman --noconfirm -S base-devel
    pacman --noconfirm -S yaourt
    # sudo
    pacman --noconfirm -S sudo
    cp /etc/sudoers /tmp/sudoers.edit
    sed -i "s/#\s*\(%wheel\s*ALL=(ALL)\s*ALL.*$\)/\1/" /tmp/sudoers.edit
    sed -i "s/#\s*\(%sudo\s*ALL=(ALL)\s*ALL.*$\)/\1/" /tmp/sudoers.edit
    visudo -qcsf /tmp/sudoers.edit && cat /tmp/sudoers.edit > /etc/sudoers
    # power
    pacman --noconfirm -S acpi acpid acpitool cpufrequtils
    yaourt --noconfirm -S powertop2
    sed -i "/^DAEMONS/ s/)/ @acpid)/" /etc/rc.conf
    sed -i "/^MODULES/ s/)/ acpi-cpufreq cpufreq_ondemand cpufreq_powersave coretemp)/" /etc/rc.conf
    # following requires my acpi handler script
    echo "/etc/acpi/handler.sh boot" > /etc/rc.local
    # time
    pacman --noconfirm -S ntp
    sed -i "/^DAEMONS/ s/hwclock /!hwclock @ntpd /" /etc/rc.conf
    # wireless (wpa supplicant should already be installed)
    pacman --noconfirm -S iw wpa_supplicant rfkill
    pacman --noconfirm -S netcfg wpa_actiond ifplugd
    mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.orig
    echo -e "ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network\nupdate_config=1" > /etc/wpa_supplicant.conf
    # make sure to copy /etc/network.d/examples/wireless-wpa-config to /etc/network.d/home and edit
    sed -i "/^DAEMONS/ s/)/ @net-auto-wireless @net-auto-wired)/" /etc/rc.conf
    sed -i "/^DAEMONS/ s/ network / /" /etc/rc.conf
    echo -e "\nWIRELESS_INTERFACE=wlan0" >> /etc/rc.conf
    echo -e "WIRED_INTERFACE=eth0" >> /etc/rc.conf
    echo "options iwlagn led_mode=2" > /etc/modprobe.d/iwlagn.conf
    # sound
    pacman --noconfirm -S alsa-utils alsa-plugins
    sed -i "/^DAEMONS/ s/)/ @alsa)/" /etc/rc.conf
    mv /etc/asound.conf /etc/asound.conf.orig || true
    #if alsamixer isn't working, try alsamixer -Dhw and speaker-test -Dhw -c 2
    # video
    pacman --noconfirm -S base-devel mesa mesa-demos
    # x
    #pacman --noconfirm -S xorg xorg-xinit xorg-utils xorg-server-utils xdotool xorg-xlsfonts
    #yaourt --noconfirm -S xf86-input-wacom-git # NOT NEEDED? input-wacom-git
    #TODO: cut down the install size
    #pacman --noconfirm -S xorg-server xorg-xinit xorg-utils xorg-server-utils
    # TODO: wacom
    # environment/wm/etc.
    #pacman --noconfirm -S xfce4 compiz ccsm
    #pacman --noconfirm -S xcompmgr
    #yaourt --noconfirm -S physlock unclutter
    #pacman --noconfirm -S rxvt-unicode urxvt-url-select hsetroot
    #pacman --noconfirm -S gtk2 #gtk3 # for taffybar?
    #pacman --noconfirm -S ghc
    # note: try installing alex and happy from cabal instead
    #pacman --noconfirm -S haskell-platform haskell-hscolour
    #yaourt --noconfirm -S xmonad-darcs xmonad-contrib-darcs xcompmgr
    #yaourt --noconfirm -S xmobar-git
    # TODO: edit xfce to use compiz
    # TODO: xmonad, but deal with video tearing
    # TODO: xmonad-darcs fails to install from AUR. haskell dependency hell.
    # switching to cabal
    # fonts
    pacman --noconfirm -S terminus-font
    yaourt --noconfirm -S webcore-fonts
    yaourt --noconfirm -S fontforge libspiro
    yaourt --noconfirm -S freetype2-git-infinality
    # TODO: sed infinality and change to OSX or OSX2 mode
    # and create the sym link from /etc/fonts/conf.avail to conf.d
    # misc apps
    #pacman --noconfirm -S htop openssh keychain bash-completion git vim
    #pacman --noconfirm -S chromium flashplugin
    #pacman --noconfirm -S scrot mypaint bc
    #yaourt --noconfirm -S task-git stellarium googlecl
    # TODO: argyll
    POST_EOF
    # Post install in chroot
    #echo "chroot and run /post_install"
    chroot /install /post_install
    rm /install/post_install
    # copy grub.efi file to the default HP EFI boot manager path
    mkdir -p ${INSTALL_TARGET}/boot/EFI/Microsoft/BOOT/
    mkdir -p ${INSTALL_TARGET}/boot/EFI/BOOT/
    cp ${INSTALL_TARGET}/boot/grub/grub.efi ${INSTALL_TARGET}/boot/EFI/Microsoft/BOOT/bootmgfw.efi
    cp ${INSTALL_TARGET}/boot/grub/grub.efi ${INSTALL_TARGET}/boot/EFI/BOOT/BOOTX64.EFI
    cp /root/root.gpg ${INSTALL_TARGET}/boot/
    # NOTES/TODO

  • [HOWTO] Installing Arch Linux stable release on Acer Aspire One 522

    [This is a work on progress and my first howto ever]
    These steps will teach you how to install ArchLinux x64 stable release (currently 2010.05) on Acer Aspire One 522 from an existing ArchLinux (your desktop computer)
    As you need a 2.6.37+ kernel to make networking work on the AO522, installing stable release as is won't work.
    This Howto borns with the intention to address this problem.
    You need to be familiarized with Linux internals to follow this howto.
    (Expect this howto to become useless with new stable releases of ArchLinux.)
    Remember to make a backup of your Windows 7 Starter system before installing ArchLinux.
    I did a full raw copy of the harddisk by using systemrescuecd, an external harddisk and dd utility:
    Just boot with systemrescuecd
    Mount your external harddisk on /mnt/floppy for example
    Clone harddisk with: dd if=/dev/sda |gzip -c > /mnt/floppy/ao522.img
    This process took me a lot of time since my external harddisk is USB-1 (almost an entire evening)
    Result image was about 22GB size
    This image will restore partition table, boot sector and all data if things go wrong.
    I followed some of the steps from this guide: https://wiki.archlinux.org/index.php/In … ting_Linux
    If you have some Gentoo Linux experience you will find those steps really familiar.
    You will need 2 USB pendrives or similar storage options.
    One is needed to boot into your netbook, and the other to store our custom archlinux build.
    Making an updated ArchLinux system
    1) Make a local dir on your existing linux system
    # mkdir ./newarch
    2) Install pacman database on it
    # pacman -Sy -r ./newarch
    3) Install base system
    # pacman -S base -r ./newarch
    4) Let's chroot inside
    # cp /etc/resolv.conf ./newarch/etc/
    # cp /etc/pacman.d/mirrorlist ./newarch/etc/pacman.d
    # mount -t proc proc ./newarch/proc
    # mount -t sysfs sys ./newarch/sys
    # mount -o bind /dev ./newarch/dev
    # chroot ./newarch /bin/bash
    5) Edit configuration files
    # nano -w /etc/rc.conf
    # nano -w /etc/hosts
    # nano -w /etc/mkinitcpio.conf
    Forget /etc/fstab for now since you don't know what partitions to use yet
    6) Generate kernel image
    # mkinitcpio -p kernel26
    7) Generate locales
    # nano -w /etc/locale.gen
    # locale-gen
    8) Make a tarball with our custom ArchLinux
    # exit
    # umount ./newarch/proc
    # umount ./newarch/dev
    # umount ./newarch/sys
    # tar -cvpf newarch.tar ./newarch
    9) Copy this tarball to an USB pendrive or external harddisk
    10) Boot your netbook with a Linux bootable USB stick (I used systemrescuecd, and remember to pick the x64 bit kernel at grub screen)
    You can use any linux distribution with usb bootable options. I suppose ArchLinux works too
    To install SystemRescueCD on an USB stick follow this tutorial -> SystemRescueCD on usb stick
    Insert the usb stick on your netbook, switch on, hit F2 to enter BIOS menu, and choose to boot from USB as first option. Save and Exit.
    You should be booting into SystemRescueCD without any problem.
    After initialization you will end in a root prompt.
    11) Let's partition the disk
    You will find 3 partitions if this is your first time:
    /dev/sda1 2048 29362175 14680064 27 Hidden NTFS WinRE
    /dev/sda2 * 29362176 29566975 102400 7 HPFS/NTFS/exFAT
    /dev/sda3 29566976 488397167 229312696 7 HPFS/NTFS/exFAT
    My recomendation is to leave sda1 and sda2 intact, as they have the recovery information to restore Windows 7 Starter
    You have plenty of space with sda3, about 230G.
    So run fdisk/cfdisk and delete /dev/sda3
    Now create a 100M partition for boot
    Now create a Extended partition with all the space left
    Now create a 1GB logical partition for swap
    Now create a 10-15 GB  logical partition for root system
    And finally a logical partition for our home partition with all space left
    Your partition table should look like this:
    /dev/sda1 2048 29362175 14680064 27 Hidden NTFS WinRE
    /dev/sda2 * 29362176 29566975 102400 7 HPFS/NTFS/exFAT
    /dev/sda3 29566976 29771775 102400 83 Linux
    /dev/sda4 29771776 488397167 229312696 5 Extended
    /dev/sda5 29773824 31821823 1024000 83 Linux
    /dev/sda6 31823872 63281151 15728640 83 Linux
    /dev/sda7 63283200 488397167 212556984 83 Linux
    12) Create filesystems
    I choosed ext2 for boot, and reiserfs for root and home partitions.
    # mke2fs /dev/sda3
    # mkreiserfs /dev/sda6
    # mkreiserfs /dev/sda7
    # mkswap /dev/sda5
    13) Mount partitions
    # mkdir arch
    # mount /dev/sda6 arch
    # mkdir arch/boot
    # mount /dev/sda3 arch/boot
    # mkdir arch/home
    # mount /dev/sda7 arch/home
    14) Copy our custom ArchLinux build on it
    # mount /dev/sdb1 /mnt/floppy (for example)
    # cd arch
    # tar -xvpf /mnt/flopy/newarch.tar
    15) Configure /etc/fstab
    Mine is as follows:
    devpts /dev/pts devpts defaults 0 0
    shm /dev/shm tmpfs nodev,nosuid 0 0
    /dev/sda3 /boot ext2 defaults 0 1
    /dev/sda6 / reiserfs defaults 0 1
    /dev/sda7 /home reiserfs defaults 0 1
    /dev/sda5 swap swap defaults 0 0
    16) Chroot in your new system
    # mount -t proc proc ./proc
    # mount -t sysfs sys ./sys
    # mount -o bind /dev ./dev
    # chroot ./ /bin/bash
    17) Install grub
    # grub-install
    Edit /boot/grub/menu.lst to suit your needs
    Mine looks like this:
    timeout 5
    default 0
    color light-blue/black light-cyan/blue
    title Arch Linux
    root (hd0,2)
    kernel /vmlinuz26 root=/dev/sda6 ro
    initrd /kernel26.img
    title Arch Linux Fallback
    root (hd0,2)
    kernel /vmlinuz26 root=/dev/sda6 ro
    initrd /kernel26-fallback.img
    title Windows 7 Recovery
    rootnoverify (hd0,0)
    makeactive
    chainloader +1
    As you see, you can restore Windows 7 Starter from Grub.
    18) Change root password
    # passwd
    19) Add a regular  user account
    # useradd -G video,audio,users -m username
    # passwd username
    20) You're done!
    # exit
    # cd ..
    # umount ./arch/proc
    # umount ./arch/dev
    # umount ./arch/sys
    # umount ./arch/boot
    # umount ./arch/
    # reboot
    Remove the usb stick from your netbook.
    If all went ok, you will be inside your new stable and updated ArchLinux system
    Next post is reserved for software configurations specific to the Acer Aspire One 522
    Last edited by tigrezno (2011-04-20 12:22:38)

    Using acpid to achieve the following:
    - Change screen brightness when operating in battery mode
    - Power off when the power button is pressed
    - Suspend when the lid is down
    - Reduce CPU frequency speed to maximize battery usage
    Remember that system suspend is only supported by ati free driver xf86-video-ati
    1) Install acpid daemon and cpufrequtils
    # pacman -S apcid cpufrequtils
    2) edit acpid handler script
    # nano -w /etc/acpi/handler.sh
    Change the following section:
    ac_adapter)
    case "$2" in
    AC)
    case "$4" in
    00000000)
    echo -n $minspeed >$setspeed
    #/etc/laptop-mode/laptop-mode start
    00000001)
    echo -n $maxspeed >$setspeed
    #/etc/laptop-mode/laptop-mode stop
    esac
    *) logger "ACPI action undefined: $2" ;;
    esac
    for:
    ac_adapter)
    case "$2" in
    ACAD)
    case "$4" in
    00000000)
    echo 3 > /sys/devices/virtual/backlight/acpi_video0/brightness
    cpufreq-set -c 0 -f 800Mhz
    cpufreq-set -c 1 -f 800Mhz
    00000001)
    echo 9 > /sys/devices/virtual/backlight/acpi_video0/brightness
    cpufreq-set -c 0 -f 1000Mhz
    cpufreq-set -c 1 -f 1000Mhz
    esac
    *) logger "ACPI action undefined: $2" ;;
    esac
    Make sure you changed AC) for ACAD)
    Now change this other section:
    button/power)
    #echo "PowerButton pressed!">/dev/tty5
    case "$2" in
    PWRF) logger "PowerButton pressed: $2" ;;
    *) logger "ACPI action undefined: $2" ;;
    esac
    with:
    button/power)
    #echo "PowerButton pressed!">/dev/tty5
    case "$2" in
    PWRF) poweroff ;;
    *) logger "ACPI action undefined: $2" ;;
    esac
    Change:
    button/lid)
    #echo "LID switched!">/dev/tty5
    logger "ACPI group/action undefined: $1 / $2"
    for:
    button/lid)
    pm-suspend && /etc/rc.d/network restart
    logger "ACPI group/action undefined: $1 / $2"
    Network restart is used because wlan0 will disconnect from AP after some time. You can try using iwconfig wlan0 essid <ap> key <key> instead of the network script, but haven't tested it myself.
    3) Start acpid and load modules
    # modprobe powernow-k8
    # /etc/rc.d/acpid start
    Add "acpid" to DAEMONS in /etc/rc.conf to start on boot
    Add "powernow-k8" to the modules sections on /etc/rc.conf to load at boot
    Stopping system freezes due to ethernet driver
    The only way people have found to avoid freezes is by blacklisting atheros kernel drivers.
    To do it at boot just edit /etc/rc.conf and change the MODULES line as this:
    MODULES=(!ath9k !atl1c)
    Reboot and you're done, but remember to not press the Wifi key, because it can freeze your system.
    Correctly starting wireless at boot
    I've found that standard scripts wont load properly my wireless lan. It gave an error telling you to use the WIRELESS_TIMEOUT variable and such.
    To solve this, edit /etc/rc.d/network script and change the wi_up function by adding a second iwconfig command like this:
    wi_up()
    eval iwcfg="\$wlan_${1}"
    [[ ! $iwcfg ]] && return 0
    /usr/sbin/iwconfig $iwcfg
    [[ $WIRELESS_TIMEOUT ]] || WIRELESS_TIMEOUT=2
    sleep $WIRELESS_TIMEOUT
    /usr/sbin/iwconfig $iwcfg
    bssid=$(iwgetid $1 -ra)
    It will do the trick and will start at boot correctly. This is not a solution but a fix.
    Adjust Touchpad to disable false taps
    What I did here is defining an area to be ignored. This area are 3 rectangles on top, left and right of the touchpad.
    This means you can write and press space without having the cursor click out of the window and such.
    # synclient AreaLeftEdge=150
    # synclient AreaRightEdge=1300
    # synclient AreaTopEdge=300
    Also, add it to your /etc/X11/xorg.conf.d/10-evdev.conf:
    Section "InputClass"
    Identifier "evdev touchpad catchall"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Driver "evdev"
    Option "AreaTopEdge" "300"
    Option "AreaLeftEdge" "150"
    Option "AreaRightEdge" "1300"
    EndSection
    You can play with those values. They just work for me.
    Last edited by tigrezno (2011-04-23 13:49:48)

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

  • Is there an Arch Linux equivalent of debconf?

    I have a debian based configuration that I roll out to clients using a scripted installation.  Essentially, the base system is imaged onto the box (currently RaspberryPi) then my script and an archive containing extra files I want to push is copied to the card.  The script runs and performs some automated tasks like downloading firmware, updating/upgrading packages and then installing the packages I need.  For some packages (e.g. mysql and phpmyadmin), I use debconf in order to set the answers to the installation questions  - this allows a completely unattended installation.  This script also works on a regular Debian system - I can pass parameters to switch off functionality that isn't required on a desktop (e.g. the RPi firmware update or HostAPD installation) and the same script can commission a dev environment for me to work on.
    I'm now looking to support other SBCs like the HummingBoard or perhaps the BananaPi which means I need to consider a platform that would work universally across any platform.  So, I am looking at the feasibility of Arch Linux.  From what I have read, it would probably suit my needs a lot better as it starts off as a very minimal installation.  However I'm struggling to find a definitive alternative to debconf for performing my unattended installation.
    My less preferred option would be to build an image by hand and then script the package updates, but this would put me in the realms of having to maintain images for each platform I end up supporting rather than having a script that would build the config on any supported system with latest packages.

    There is interaction:
    * you may be be prompted to OK removing package A and installing package B - happens when renaming packages via package conflicts e.g.
    :: lzo2 and lzo are in conflict. Remove lzo? [y/N]
    * you are asked to pick packages from a group or which one of the packages providing the thing you want to install, e.g. when installing libgl or phonon
    $ sudo pacman -S phonon
    resolving dependencies...
    :: There are 2 providers available for phonon-qt4-backend:
    :: Repository extra
    1) phonon-qt4-gstreamer 2) phonon-qt4-vlc
    Enter a number (default=1):

  • I386 Arch Linux ?

    Hi,
    I've been using Arch linux on my main machine for a few months now, and really like it. I like the "currentness" of it, as well as it's minimalist approach.
    I have an old 80486DX2 66Mhz with 20MB of RAM which I occasionally fire up to play with networking things, as I work as a network engineer. I'd really like to be able to install a minimal copy of Arch Linux on it. Of course I can't, because the Arch Linux distro is i686 or greater. I've got a 10GB hard drive in it, so disk space isn't an issue. I currently have an old version of Debian on it.
    I'd like to suggest creating "base-line PC" Arch distro, that is compiled only using i386 CPU instructions, allowing it to run on all generation 32 bit PCs. This would allow us Arch fans to run Arch on older computers we might have lying around.
    Regards,
    Mark.

    deficite wrote:I really like how you have no option to disagree with you at all, you either have to agree with you or vote that you don't know what a 486 is (Which is quite odd, because I know of quite a few rednecks in my school who even know what a 486 is)
    Was having a small amount of fun with the poll option.:-) Having used Linux since early 1993, and having come across people in another forum asking what version of Linux would run on such as slow machine as a P3 550, I was amused to ask if people knew what an 80486 was.
    Anyway, I think it's a waste of effort IMHO. A computer that old would probably not have a large HDD, and Arch requires >90MB for a full base install (of course you COULD strip things out). I remember the 486DX-33 we had only had like a 150MB hard drive or something, if even that much, and it came with 4MB of RAM (I upped it to 32MB after my dad found a broken computer in a storage unit next to ours a few years ago )
    It's possible to run large HDDs in machines that old, I have a 10GB drive in the 80486 I have. Once Linux starts, it talks directly to the disk, so BIOS limitations disappear. All you need to do is configure the BIOS with the largest sized HDD it supports, and make sure the bootloader and the kernel reside within that part of the disk. This was the technique we used to use to get around the 512MB limit in the BIOS. I think actual IDE hardware limits kick in once you require LBA access to the disk, and from very rusty memory, that is something like 37GB.
    20MB of RAM, which was also popular enough (4 x 1MB SIMMs, 4x4MB SIMMs), should be is enough to run a base Linux install(plenty actually, I used to run Linux on a 486 with 8MB of RAM, with X windows. I'd have 0.5MB left to run applications, however with fast swapping to a SCSI disk, it was quite useable).
    I guess you could run a server or two on it or something, but do you really want to spend all that effort porting Arch to 386 when you could just run another distro. There are distros made specifically for running servers on old hardware.
    Yes, but then it wouldn't be running Arch, would it. :-)

  • Arch Linux on SmartQ (V5II) -looking to start project-

    Upfront I will note that I am not skilled enough to accomplish this alone at my current level.  I will learn what I can in order to achieve this task, so any and all links to tutorials and ideas on how to get this working will be taken and put through heavy consideration.  Primary concern will be getting a working "livecd" cloned image (basically, all the most standard core packages to get a working Arch Linux with USB Keyboard and mouse support, then build from there till I get X and all the nice features of the V5(II) working, and branch out from there  Will probably look into repartitioning the NAND so I can have a complete and full install (probably preserve Android for being boot from SD, which is fine since it's a complete dual-boot which requires rebooting to switch anyway)  As of now, I am referencing the development tutorial for SmartQ, tutorials for building firmware images from plugapps (nice Arch port to ARM devices) and whatever information I can gather from someone on the Arch Linux forums who has recently ported it to the newest ARM processor type (v7, if I'm not mistaken).  All links will be provided at the bottom of this post.
    My guess is that I will have to approach this with a "Linux From Scratch" mindset of compiling the kernel, busybox and whatever else I need to get a working base install (which, from there, I can compile everything else natively on the actual device)to the point where I reach a working system with gui, basic tools, maybe a game or two, and whatever else would constitute being enough for "firmware" status.  I guess, my only question ahead of all that is how do I go about making the "base install" firmware to build up from?  Secondary question to that is, once I get a nice setup, how do I take that (all being on the actual V5II) and remaster THAT into a firmware that I can then post online for others to test?  I already have my homework cut out for me, so I'll be reading what i can to figure this out while anybody and everybody here throws me tutorial links and ideas on how I can accomplish this each step of the way...  We shall see where this train takes us.
    SmartQ Linux Development Guild: https://docs.google.com/View?id=ddtx8wk … skpm&pli=1
    PlugApps Development Portal: http://www.plugapps.com/index.php5?titl … evelopment
    Arch Forum post for developer who ported Arch Linux to the v7 ARM processor: https://bbs.archlinux.org/viewtopic.php?id=59638
    can't think of anything else at this point, but I will categorize links the best I can to morph them into somewhat of a workflow process and group the help aids to each relevant step along the way.  Anyone interested in helping, feel free to join in on the fun..  Will be looking that the ArchMobile stuff and incorporating what I can into my project... maybe this will help revive the ArchMobile project as well...

    If you are a new programmer then Python is a good place to start.  Install WingIDE 101 from the AUR for a good beginner's IDE for that.
    Think Python is a free book to get started with (PDF or HTML download on that page and you can buy the dead tree if you want)
    If you want to do programming that requires fast code above all else then C++ is the standard.  Code::Blocks is a good IDE for that.  Be sure to install "base-devel" and "gdb" to go along with it.
    Programming - Principles and Practice Using C++ is a dead tree book for C++, you have to buy it but that is offset by the fact that its author is also the author of the C++ language.

  • Arch Linux freezes the whole system in VMware

    Hi,
    I use Windows Vista as main OS and I'm trying to install Arch on VMware, the problem is, when I log in into the console and try to type anything else, it will crash my host system (Vista).
    This is very weird because:
    a) I'm running a virtual Gentoo on VMware and it doesn't freeze as Arch.
    b) Arch Linux doesn't freeze the system if I use VirtualBox instead of VMware
    c) I did a clean install of XP (just for testing purposes) and virtual Arch also crashed the system.
    This is confusing me because:
    a) Why does Gentoo work and Arch doesn't? Are there base configurations/software so different that one works and the other doesn't?
    b) Why can VirtualBox handle Arch and VMware can't?
    c) Even a clean install can't handle Arch on VMware? Does this mean it's something wrong in my hardware? How come if Gentoo works on VMware and VirtualBox handles Arch?
    Please note that I can't use VirtualBox, I must use VMware and I would really like to use Arch instead of Gentoo. I'm trying to ditch Gentoo and use Arch but this problem is leaving me no choice than to keep using Gentoo...
    Any ideas?

    Ranguvar wrote:Is it that you can't use VBox, or you must use VMware? There are still other virtual machine apps.
    I know, but I want to use VMware. I don't like VirtualBox that much and VMware is better for me. The other virtual machine apps don't even come close to VMware, at least in my point of view. But it doesn't matter, I want to use VMware.
    Ranguvar wrote:Anyways, is it the Arch install CD that crashes, or is it Arch after it has been installed? Have you read http://wiki.archlinux.org/index.php/Ins … _in_VMWare ?
    After installation, it never crashed during the install as far as I remember.
    Ranguvar wrote:Do you get any specific error messages from Windows? Are you using the latest version of VMware? Can you at least try VirtualBox to help isolate the problem?
    No specific error messages, nothing in the log files, there's nothing anywhere... Yes, I'm using the latest version. What do you mean try VirtualBox to help isolate the problem? I've already used VirtualBox, installed Arch fine and it didn't freeze.
    Ranguvar wrote:This is very odd, and may actually indicate a problem with hardware, or something... a virtual machine should NOT be able to bring down the host, under any circumstances. If it can, both the OS and the virtual machine are bugged. Not too much of a surprise, but yeah.
    My thoughts exactly but how can be an hardware problem if VirtualBox works just fine? How can it be a virtual machine problem if Gentoo works fine on VMware?
    fumbles wrote:Sounds like a problem with VMware (or maybe Vista?) not Arch. Try reinstalling VMware, make sure it is at the lastest version (maybe try even roll back to the previous version), make sure Vista is updated. When you say crash, do you mean BSoD? Or does it just freeze? If it is a BSoD then what is the specific error?
    It just freezes, not a BSOD. It is not a problem with Vista because it also happens on XP. Like I said on my first post, I did a clean install of XP, update all drivers and did all Windows updates, installed latest VMware version and the same thing still happened.
    Joe_Arch wrote:How much ram are you allocating to Arch? Counterintuitively, you might want to try lowering it. If you allocate too much your host OS freaks out.
    I have 2Gb (2x1024Mb) installed on my laptop and I'm using just 256Mb for Arch.
    jacko wrote:someone else was having this issue the other day on irc. the fact is a guest OS should NEVER even come close to crashing the host OS. So more then likely this is a bug in VMware and not arch. What arch packages that is causing the conflict with VMware is unapparent, but it's not likely a bug arch can fix.
    That was me... I'm not saying it's a bug on Arch, but it's weird that Gentoo doesn't have a problem and Arch does. They must differ somehow, one must use some package where the other doesn't or some global system configuration is different from one to the other, there must be some difference, otherwise, they both would freeze or they both would work...

  • Arch Linux Workstation

    I'm a DIY guy... with more than just computers. In the near future I am planning to use Arch Linux 64bit for a professional use environment. I'll also be building a new system after the new upcoming standards go mainstream. All the programs I'll be using will be heavily extended and modified versions. Windows (retail license) has far too much bloat, but I'll dual boot it on a separate HDD. Photoshop, Coldfusion and/or etc... are nice except for the added cost. I am trying to decide on a shell and solid programs to perform my needs. Any recommendations regarding additional open source platforms/programs, modified versions, superior alternatives or extensions? Opinions are welcome too.
    Photography -> GIMP
    3D Rendering -> Blender
    I'm searching for modified versions plus extensions to create ultra realistic images and models. Not for creating games.
    2/3D CAD -> ?
    I have my doubts about what I have seen thus far. I'd rather have a commercial grade program available on Linux than deal with a bunch of time wasting hassle when trying to create models. Maybe someone in who has been down this road can curb my appetite.
    Office Suite -> LibreOffice
    I write on a regular basis. Out-of-box it has a lot of nice features. Microsoft Office 2010 is what I am using now. I am hoping to find extensions to add the missing features found in the newest Microsoft Office.
    Pro E-mail Client -> ?
    I'm looking for an Outlook replacement. Thunderbird is not something I am too akin to after my numerous issues with Mozilla's FireFox on several (5+) computers.
    Web Development -> Notepad++ w/ Aptana Studio
    I own a website with several domains. For the past few months it has been blank as I decide on the layout. It will feature a pro online portfolio, blog and etc... Not for general or family usage. Pre-made templates are a no-go. I'm experienced with some CSS, HTML and etc...
    Etc...
    Last edited by carolinabranden (2011-10-05 22:54:36)

    carolinabranden wrote:3D Rendering -> Blender
    I'm searching for modified versions plus extensions to create ultra realistic images and models. Not for creating games.
    I don't know exactly what you mean with 'modified versions', as for extensions/plugins/addons I've heard great things about BSurfaces. As for creating ultra-realistic models, certainly Blender is capable of that, but obviously your own skill will be the determining factor. These days most character-focused modeling is done using 3d sculpting methodology and Blender has good support for this. I've been doing some spare time sculpturing myself from time to time using Blender and while it's obviously not near as powerful as commercial 'sculpting-dedicated' offerings such as ZBrush, or Mudbox, it's still very capable. Here's some old (2+ years) stuff I sculpted in Blender back when I was playing around with lots of 3d sculpting in my spare time:
    http://img3.imageshack.us/img3/3204/geek1g.jpg
    http://img846.imageshack.us/img846/2580 … dertes.jpg
    http://img810.imageshack.us/img810/3412/pig1.jpg
    http://img97.imageshack.us/img97/6084/pig2y.jpg
    http://img855.imageshack.us/img855/180/leela2.jpg
    http://img844.imageshack.us/img844/6782/dogjk.jpg
    So if you have any questions pertaining to Blender sculpting I'd be happy to share what I know. As for rendering, it seems the new Cycles renderer is the future but I haven't had any real experience with it so I can't help you there (and I really suck at rendering anyways).

  • Arch Linux running on Asus Transformer T100/T100TA... sort of.

    I'm not really asking for help here (can't find an appropriate place to put this post), but more to show off my accomplishment with this tablet.
    As the thread title says, I've gotten Arch Linux to run on the Asus T100TA which is a quite annoying little thing. I haven't documented the steps myself, however, I remember exactly what I have done, and in order to get the live image to at least run on this tablet, here are the steps I did:
    (you'll maybe need 2 USB drives, seems to be the easiest way)
    1. Create an ISO using the archiso set as you normally would (except you won't really need the ISO itself) OR if you can figure it out yourself, install the base image to the USB drive (either architecture will do, but I recommend i686 since the processor is 32 bit as well)
    https://wiki.archlinux.org/index.php/Archiso
    This step will be unnecessary as of May, as the live images onwards on the main download site will already contain the 3.14 or newer kernels.
    2. After the image building successfully finishes, copy all the contents from (PROFILE)/work/iso/ (except root-image squashfs files) to a FAT32 formatted USB drive (1). This is to simply create a bootloader drive that will allow us for later swapping the USB drives.
    3. Download an ia32 version of grub. Any will do as long as it can boot up on the tablet.
    http://www.supergrubdisk.org/category/download/supergrub2diskdownload/
    This one works, download the standalone IA-32/i386 EFI and paste it in (USB Drive (1))/EFI/boot/bootia32.efi .
    (use latest versions, no matter if it's unstable)
    4. Now you need to make a grub.cfg. The one I made looks like this
    menuentry 'Arch Linux i686'{
    echo 'Loading Linux core repo kernel ...'
    linux /arch/boot/i686/vmlinuz noefi nomodeset archisobasedir=arch archisolabel=ARCH_201404
    echo 'Loading initial ramdisk ...'
    initrd /arch/boot/i686/archiso.img
    menuentry 'Arch Linux x86_64'{
    echo 'Loading Linux core repo kernel ...'
    linux /arch/boot/x86_64/vmlinuz noefi nomodeset archisobasedir=arch archisolabel=ARCH_201404
    echo 'Loading initial ramdisk ...'
    initrd /arch/boot/x86_64/archiso.img
    NOTE: If you're using a later live image build, I advise to change the date accordingly. It's not necessary to do so, since the mount by label doesn't work, however, I like to keep everything intact.
    noefi flag seems unnecessary as well, though I have added it to prevent some kernel panics from happening, for just in case. It works without it, still, however you need the nomodeset flag or else you'll get a black screen!
    I'm not entirely sure where the grub.cfg goes, but I've put it in USB Drive(1)/boot/grub/ , /EFI/grub/ and in /EFI/boot/grub/ just to make it sure that it works.
    5. Create an ext2/3/4 (recommended ext2 for flash drives, not to wear it out) USB drive (2) and copy the arch folder to the root of the USB drive (2)
    ---- BOOT PROCESS ----
    Before this step, ensure that Secure Boot is set to OFF in the Aptio setup. Otherwise it will throw up an error in a red box crying it's not signed.
    6. Plug in the USB drive (1) into a USB port and while powering on the tablet, tilt the escape key to pop up a boot menu.
    7. Select UEFI: (your USB drive (1))
    8. GRUB 2 will pop up. If you're running the SuperGrubDisk version, you're gonna have to go to Everything and then scroll down until it says something like
    (hd0, msdos1)/boot/grub/grub.cfg
    and click on it to open the configuration data manually created.
    9. Simply select your desired version of Arch Linux live distro to boot.
    10. VOILAaa, not really... It'll pop up with a mount error saying it's a wrong FS to mount. This is where you plug in your USB drive (2) in place of the first one.
    11. Type in:
    # mount /dev/sda1 /run/archiso/bootmnt
    # exit
    12. Congratulations, you're running Arch Linux on your ASUS Transformer T100TA tablet!
    This is as far as I have went into running it. Installing it on a HDD would require mounting the mmcblk partitions, which I haven't looked into yet. For a start, I'd just recommend installing it on a USB drive, though you'd have to own one of the USB OTG converters or a USB hub. The screen is spammed with the mmcblk0rpmb timeout errors though and that is annoying. It stops after a while when it stops trying. Reboot doesn't work either, seems like acpi is broken.
    You could do it with a single usb drive, though it requires some knowledge of this tablet's EFI because it disallowed me from running a kernel on another partition other than FAT32. Grub pops up with an error:
    can't unload EFI services
    or something like that.
    I've also tried putting the USB Drive (2) in during grub and it pops up with an error with invalid sector sizes. That was to be expected.
    btw I know it's my first post, I'm just here to share this with you. I never had the need to ask for help but when absolutely necessary.
    PICS OF IT RUNNING
    Some USB devices aren't visible, like the camera.
    A custom partition layout without the recovery partitions. Yours may differ.
    Last edited by xan1242 (2014-04-13 22:54:46)

    I haven't tried much other than getting this live image to run on this machine. I'll attempt to install the base image using my desktop computer with the appropriate drivers and see how that goes. (or just install the wifi driver)
    That guy really made it to work much better than I imagined it to work at all! I'll see what can be done using the same drivers, though running Ubuntu seems tempting as well. He even got the touchscreen to work, which is really awesome. It seems that he also merged the drivers into the kernel image, which is going to be a challenge in Arch.
    Since he's using the 64 bit build of Ubuntu, I'll try it with x86_64 Arch as well to try and use his guide to make the drivers to work.
    EDIT: I have successully installed the base to an external drive and booted it on the tablet, however since the base was installed externally on another machine, I need to regenerate initrd. It boots on the fallback ramdisk, but still no wifi and the screen is spammed even more with the timeout errors. I've seen topics on Raspberry Pi having a similar issue and that it was repaired using some kernel flags, but I am not sure if those will work with the tablet. Also, using the bootflags jfwells used on Ubuntu work here as well, and gives full resolution output now. Wifi doesn't work. ip link doesn't give any signs of a wifi card present.
    EDIT2: Got Arch up and running relatively nicely on the tablet now. Though it is in the same state as the last edit in terms of functionality, it works I'd say well enough to be considered usable. I couldn't make the wireless card to work, for some strange reason, so I got a RT73 USB card (Edimax EW-7318USg to be precise, had to use 2 USB ports) and installed stuff on to the tablet. I ran X without a desktop manager, and the X apps worked fine, even with the touch screen (emulating a mouse, no right click) and I ran XFCE4 on it without a problem (with compositing).
    It simply needs more developed drivers on it, that's mostly it. The state is exactly the same as Ubuntu 14.04 that jfwells made to work (minus the wifi). I haven't played with the sound, either, due to the warning he posted, but I believe it works as it does in Ubuntu.
    The steps I made are as follows:
    1. Simply made another live ISO with the archiso set
    2. dd'd the image to a USB drive
    3. On the second USB drive I created two GPT partitions (200 - 300 MB for ESP, everything else ext2)
    4. Booted the live archiso USB drive
    5. Installed the base to the second USB drive while being mounted like this: ext2 partition -> /mnt and ESP -> /mnt/boot
    6. Installed GRUB x86_64-efi to simply generate a configuration
    7. Installed wireless utilities as well as everything else needed to make it to work
    8. To ensure bootability on the tablet, again, I put the IA32 GRUB to the ESP in /EFI/boot/bootia32.efi
    9. I have edited the grub.cfg, can't exactly remember with what, but this is what it looks like
    ### BEGIN /etc/grub.d/10_linux ###
    menuentry 'Arch Linux, with Linux core repo kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-(hd0,gpt2)' {
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,gpt1'
    echo 'Loading Linux core repo kernel ...'
    linux /vmlinuz-linux root=/dev/sda2 video=VGA-1:1368x768e reboot=pci,force sdhci.debug_quirks=0x8000 rw quiet
    echo 'Loading initial ramdisk ...'
    initrd /initramfs-linux.img
    menuentry 'Arch Linux, with Linux core repo kernel (Fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-(hd0,gpt2)' {
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,gpt1'
    echo 'Loading Linux core repo kernel ...'
    linux /vmlinuz-linux root=/dev/sda2 video=VGA-1:1368x768e reboot=pci,force sdhci.debug_quirks=0x8000 rw quiet
    echo 'Loading initial ramdisk ...'
    initrd /boot/initramfs-linux-fallback.img
    ### END /etc/grub.d/10_linux ###
    I simply added the kernel flags jfwells added. It needs that root flag, or else it will not boot. I can't figure out the UUIDs though. It will reboot, but it will not shut down.
    10. Boot up your second USB drive on the tablet and... IMPORTANT - Boot with the fallback ramdisk - or else you're going to experience non functional input
    11. After booting it, you'll get the annoying mmcblk timeout spamming the screen. I haven't figured out how to fix it, but to hide it, type in
    # dmesg -n 1
    12. Generate another ramdisk (forgot the command, but search function should serve you)
    13. Reboot with the normal ramdisk now.
    14. After setting up the wireless connection, rock on with the pacman!
    At this point I installed a bunch of stuff, like Intel GPU drivers, xorg, xfce4, ntfs-3g, gparted,  and among other stuff I personally test stuff with.
    I couldn't mount the mmcblk partitions to at least somehow be able to edit data on the Windows partitions or the disk as a whole.
    Anybody willing to help getting Arch to run on this tablet is welcome.
    EDIT3: Internal WiFi working! Simply added "sdhci.debug_quirks=0x8000" flag.
    Last edited by xan1242 (2014-04-13 23:35:26)

Maybe you are looking for

  • Sony PMW-EX1 and FCS  2 - any issues?

    After being hooked by the Creative Cow on the Sony PMW EX1, and then doing some more research on the Prosumer camcorder, I'm really interested in this unit. Cost appears to be about the same as the Panasonic AG-HVX200 $5800 or so. But what I like mos

  • Is ideatab a1000l able to connect to tv?

    is ideatab a1000l able to connect to a tv? Using an mhl adapter or any other way to connect the micro usb to hdmi port? Solved! Go to Solution.

  • Muse: In-Browser Editing with third-party FTP

    Hi, I recently finished a new website for my client. The domain already exist. Therefore, we will upload the new website, designed in Muse, directly to our hosting server's FTP. Is it possible to activate in-browser editing by using an third-party FT

  • Spamassassin Strange problem

    whitelist_from_rcvd and whitelist_from_spf are not working when messaging server send the information to spamd. Now if i go to the users imap folder and then do spamc -R -d 192.168.1.36 < 836.msg Content analysis details: (-101.9 points, 5.0 required

  • A query report of sales invoices

    Hello everyone I need help with writing a query report of sales invoices with items of the item code, last buy price, sale price, customer's name .. But the report will not be true unless it will show credits invoices' total of sold items. I'd be hap