Arch Linux as a development environment.

How many Archers use Arch for development? If so, what areas are you developing in? I am primarily into biomedical image analysis and I have begun to dabble in AI.

I am still learnig alot, but what development I do is all in Arch: Java, Ruby, Ruby on Rails, and Python in Emacs mostly (with CEDET and JDE setup in emacs). I am also learning and using Lisp, Scheme, and Church; C++, and Prolog.
Most my projects are natural language processing and AI. 
I am new to the computational sciences. I switched over to Linux in general when I started to doing development. Like alot of people I started with Ubuntu, then moved to Fedora. Now I do everything in Arch. I run Ubuntu and Fedora on the same computer but haven't even finished their most recent updates (10.4, 13). I thinking about repartitioning to take out Ubuntu. Importantly, my Fedora OS has been the master boot since using Arch (for about 4-6 months now). I am kind of considering making Arch the master boot but I won't likely get to it any time soon.
Any problems I've had with Arch are minor. For example, I broke the screen on my laptop and been using a Dell flatscreen monitor for a few weeks. For some reason when I connect to one specific wireless router (a Belkin) everything freezes and I have to reboot by cutting power. Due to time I haven't diagnosed it yet. I dont have the problem as long as I stay off that specific wireless router. (!??)

Similar Messages

  • Forms 9i on Linux 9 in Development Environment

    I installed Oracle DB 9.0.2 and 9iDS 9.0.2 on a Linux 9 (Kernel 2.4.20-6)Server. I can run listeners (HTTP, OC4J, etc.) without any problem and then connect through a Linux Client (another Computer) to the server and access the database. I created the form through the client.
    The problem that I have is the following. "When I try to run the form as a developer, I get the 'servlet not found error." As far as I know, the environment is set correctly to see the forms.
    First, I heard that "the forms cannot be tested without 9iAS installed in the middle tier." Then, I found out, "I can test a form in a development environment without installing 9iAS."
    I have been checking for any kind of documentation in the net stating "how to set up the developer environment."
    Is there anyone, who has experience in this area and can give me a hand to set up environment for development?

    Hello,
    Isn't there anybody who knows the answer to this question? Not even a tech at Oracle? Surprising?

  • CUDA SDK for Arch Linux

    Which cuda package shall I choose for arch linux? https://developer.nvidia.com/cuda-downloads
    There are several links for other linux distributions. Can I choose any of them for arch?
    BTW: I've gone through the AUR package list, only find the cuda toolkit. Still cannot find cuda SDK. Any one has any idea?
    Last edited by fantasticzr (2013-11-11 14:19:12)

    It's in the repos: https://www.archlinux.org/packages/comm … 6_64/cuda/
    This package provides cuda-sdk.

  • Arch Linux Netboot Environment under grub legacy

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

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

  • (Arch) Linux Myths

    I have recently noticed that online forums and Linux user communities in particular are prone to developing what I'd like to call "technology myths".
    Most of the problems and solutions given on forums are anecdotal in nature. Problems are rarely sourced to the actual code and suggestions are often casual or incomplete which is of course natural for this kind of communication. However, as certain solutions are being repeated without clear feedback, some notions take deeper roots in the collective consciousness thus becoming myths. Let me illustrate with an example.
    How often have you seen people posting glxgears results? How often have you seen people replying "glxgears is not a benchmark"? Could you actually explain why it's not suitable to be one? The explanation is out there.
    Another example could be the myth that exporting INTEL_BATCH=1 increases performance on Intel integrated GPUs. I have seen this in circulation for a long time, despite the fact that the actual code that could be triggered by this environment variable has been removed a long time ago.
    As Arch Linux is rolling-release and a lot of code is being replaced rather rapidly, old and tried solutions are likely to become obsolete fast. I'd like to ask the Community to share their examples of other widely circulated myths and help keep an updated and sourced list of them (https://wiki.archlinux.org/index.php/Myths) so others will not waste their time trying solutions which are sure to fail.

    In my experience, outdated wiki pages tend to propagate this stuff, along with blog entries. The trouble with blog entries is that they're often fire-and-forget, which means that solutions that might have been necessary a while ago are now unsuitable or unnecessary.
    Wiki pages have no such excuse, being more fluid than blogs posts. This is particularly prevalent on the Arch Wiki, as Arch is a distribution with a small number but a large variety of (mostly) technically-experienced users who will often go to great lengths to increase performance or to accomodate for Rube Goldberg machine-like hardware or network setups. Thus, there are a lot of hacks on obscure pages (not, say, the Beginner's Guide or the major pages).
    What we need is a major overhaul and review of many of the shorter and more obscure wiki pages, such as any of the ones under Request:Correction and Request:Expansion. I've "rescued" a few pages from this purgatory, but many pages have sat there for months or years and I do not have the experience or knowledge to improve them. I think that we could gain a great deal from more community awareness about improving the wiki and trying to encourage people to edit more. Rather than the same editors working on more mainstream pages and ignoring or barely touching the more arcane ones, it might be preferable to have people with little editing experience but more technical experience to take a look at some of the pages, capitalizing on the cumulative knowledge of our userbase a bit more.
    Just a thought.

  • Arch Linux deemed "best" distro of 2014 by Linux Voice

    Congrats everyone! http://www.linuxvoice.com/linux-distros/.
    We were looking for a distro that performs well in every area, and excellently in many, making it a good all-round distro. However this alone isn’t enough. It needs to have something that pushes it ahead of the competition – and the competition is getting better every year. It needs that certain X factor to make it stand out. It should be a distro people want to install; a distro that people get passionate about; a distro that makes you remember why you love Linux.
    Arch Linux does all this and more. The two things that make it stand out aren’t fancy bits of software, or slick user interfaces, but its philosophy and its community.
    Last edited by link (2014-10-09 05:31:52)

    From the same DistroWatch page karol quoted from:
    Before one can answer what is the best distro, they have to answer for what purpose! While Arch is a great linux distribution, it isn't the one I would want to install and support on a 100 workstations in a business or classroom environment, or even my mother's computer. I probably wouldn't use it for a mission critical server role and it's also not one I would use for embed systems work.
    There's a saying that learn Ubuntu and you learn Ubuntu, learn Arch and you learn Linux. Well, most users don't want or need to learn Linux (or Ubuntu).
    "Best Distro" declarations are worthless. Instead they need to be "Best Distro For..." declarations. Arch is an excellent distribution, but as most people will tell you, it's not for the feint of heart. For general use, particularly in a business setting, openSuse would seem to be a better choice. For general use as a home desktop, one might look at one of the *buntus. For development work, particularly in the US, fedora, RHEL or CENTOS seems a good choice.
    The reality is that from the user perspective, one can make any distro look and act like any other. The question as to what is best really comes down to how much work is involved to make it actually do that.
    Again, Arch is an excellent distro. But depending on your use case, it might not be the best distro.
    Fair points all (except for the "development work" bit), but since the whole article was a comparison of rolling-release operating systems, why single out Arch? Why bother even commenting? Using a rolling-release OS when you want a static setup is foolish, no matter what the distribution is.

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

  • What is your development environment?

    What is your current development  environment in Arch?
    I use vim in gnome-terminal with multiple tabs, to quickbrowse the code I use cscope.
    Pure gdb as debugger, valgrind as profiller and memory debugger.
    I tried to use something better to browse the huge code tree, but Anjuta has many limitations (for example it seams impossible to develop code without all that autoconf crap), Kdevelop has similiar problems, and I don't like Eclipse.
    Are there any other solutions?

    I am a software developper at work. I have tried many tools such as Borland, Anjuta, Eclipse, Visual Studio, KDevelop ...
    I have never been satisfied with any of this tools, even with big projects. There is maybe an exception with Eclipse and Java programming, which almost satisfied me.
    Amazingly the most crapy IDE I have ever seen are Opensource's one such as KDevelop or Anjuta. Visual Studio .NET is maybe the better of all big IDE software, imho.
    I really think a small editor and the command line is the best, far far away from any big IDE solution.
    On Windows I use Vim or Notepad++ . On Linux I use Vim or Gedit. And of course valgrind/gdb are my favorite debugging tools . I also use ctags
    Cheers,
    Chicha

  • [GUIDE] How to get MapleStory working in Arch Linux

    MapleStory is a free-of-charge, 2D, side-scrolling massively multiplayer online role-playing game developed by the South Korean company Wizet. Several versions of the game are available for specific countries or regions, and each is published by various companies such as Wizet and Nexon. Although playing the game is free, character appearances and gameplay enhancements can be purchased from the "Cash Shop" using real money. MapleStory has a combined total of over 50 million subscriber accounts in all of its versions. MapleStory North America (Global), for players mainly in North America and outside of East Asia, Southeast Asia and Europe, has over three million players.
    In the game, players travel the "Maple World", defeating monsters and developing their characters' skills and abilities as is typical in role-playing games. Players can interact with others in many ways, such as through chatting, trading, and playing minigames. Groups of players can band together in parties to hunt monsters and share the rewards. Players can also join a guild to interact more easily with each other.
    I am an avid mapler myself, however, I am also an avid archer! For some time, I have wanted to get MapleStory working on Arch Linux in some way, but nothing seemed to work. As you might have guessed by now, recently, while playing around with VirtualBox, I discovered a method to get MapleStory working on it! Though in this method you won't actually have MapleStory running on Arch Linux, you'll have it running on a VirtualBox Windows virtual machine, that is still pretty good compared to other people's experiences.
    I hope there are at least a few maplers on this forum, and if there aren't, I hope that someone will port this post over to other Linux, or even MapleStory, forums. Anyways, let's begin.
    1. Download and install a version of Virtual Box that is version 3.0+. The reason for this is that, only versions 3.0+ support an experimental DirectX Driver with 3D acceleration that is required for MapleStory to run.
    2. Create a Windows Virtual Machine, add a hard disk to it, and install and update Windows on it(preferably Windows XP, as it uses less resources than other contemporary Windows installations).
    3. Once you have done all you needed and wanted on that Windows installation, restart it, boot it into safe mode by holding F8 at the boot, and wait until the desktop is fully loaded.
    4. After you are at the desktop, go to "Devices" at the top of the menu of the Windows virtual machine, and select "Install Guest Additions...". Wait until Guest Additions finishes installing, and when VirtualBox asks you if you want to mount the disk containing the Guest Additions on the virtual machine, say "Yes".
    5. Run the main executable on the disk that doesn't have amd64 or x86 following its name. Follow the instructions it gives you, and when it asks you what components to install, make sure both of the boxes it shows you are checked.
    6. After the install is completed, the virtual machine will restart. After it restarts, shut it down.
    7. Congratulations! You now have DirectX installed on your VirtualBox virtual machine! Now you need to activate the "3D Acceleration", that enables it.
    8. In the VirtualBox main window, make sure you have your machine with Windows selected. Then, click on "Machine", and then "Settings...", at the top. A new window should pop up. On the left hand side, click on the display panel, and in the new settings section, tick Enable 3D Acceleration. Click "OK", to save the settings.
    9. Start your Windows virtual machine, install MapleStory just as you would on a normal windows computer, and run MapleStory.
    Notes: This way of running MapleStory is slower than by running it normally, on a normal windows computer. Also, try to not interact with your Linux desktop while playing MapleStory, because this can cause HackShield to shut down MapleStory, due to the fact that it believes there is a hacking attempt.
    If any of you port this guide to any other place on the web, please, credit me, neovaysburd5.
    For any further questions or inquiries, this goes to all of you, please contact me at [email protected].
    Last edited by neovaysburd5 (2009-08-19 16:51:31)

    Alright, I've posted it in the wiki. I don't know if it meets the Arch Linux wiki standards, so if there is absolutely anything wrong with it, please fix it right away. Don't even ask my permission.
    http://wiki.archlinux.org/index.php/MapleStory

  • Installing Multiple Operating Systems with grub and Arch Linux

    NOTE: Please keep in mind that there are many different ways to achieve this same result using various loop and ramdisk methods, read this with a separate window to jot down your comments and suggestions... this is ongoing for me so any help would be appreciated!
    Read the full article at Install Multiple Os without cds
    This is my first post and I plan on making this topic an official HOWTO with www.tldp.org.
    I have been into the computer security scene since 1990, but I realized that I had very little experience with the various LInux, Unix, and alternative Operating systems out there.
    I have a CD-RW drive but being a struggling computer security researcher I had no money for blank cd-recordables.  What follows is how I managed to install various operating systems on my computer (1 hard drive) without having to burn to a CD the ISO and then boot from that.
    I first partitioned my 120GB harddrive into 10 partitions, the 2nd partition is a small swap and the last partition is extra large because it holds all the ISO images..
    I then wrote a small shell script to automatically download (I love wget!)  the following.
    OpenBSD
    IpCOP
    Libranet
    Arch-Linux
    Fire
    Local Area Security
    Packet Master
    Devil-Linux
    FreeBSD
    Knoppix
    Helix
    Gentoo
    Yoper-Linux
    NetBSD
    RedHat
    Slackware
    The script also downloaded Installation manuals and md5 checksums.. (let me know if I should post... its pretty unsophisticated
    I installed Slackware (personal favorite) on hda1 using my last blank CD-R, note that I do not have a separate boot partitino.  (Should I?).  I also installed grub on the MBR.  I love grub, if you read through the man pages and all info you can find about grub, you can learn a whole lot.  Grub has much more features and capability than lilo, even though lilo comes installed by default with slack.
    I organize my kernel situation as follows...  In my /boot directory, I mkdir KERNEL, CONFIG, MAP, INITRD and that is a good way for me to keep my kernels and everything organized..  Another good way is a separate dir for each new kernel. 
    Since Arch-Linux is a solid distro, I'll use that as a first example.
    Here is the Arch-Linux section of my shell script
    goge Arch-Linux
    $w http://puzzle.dl.sourceforge.net/sourceforge/archlinux/arch-0.6.iso
    $w http://unc.dl.sourceforge.net/sourceforge/archlinux/arch-0.6.md5sum
    $w http://www.archlinux.org/docs/en/guide/install/arch-install-guide.html
    md55
    cat arch-0.6.md5sum
    md5sum arch-0.6.iso
    md55
    The first thing to do is to mount the downloaded ISO image so we can use it as if it were an actual CD.
    mount -t iso9660 -o ro,loop=/dev/loop0 cdimage /mnt/cdrom
    Where cdimage= the ISO image.   EX. /usr/local/src/ISO/Linux/Arch-Linux/arch-0.6.iso
    This mounts the iso as /mnt/cdrom.
    Next you need to copy /mnt/cdrom to a separate partition for the booting process.  So mkfs.ext2 /dev/hda9.  ( I prefer reiserfs or even XFS to ext but if you use something other than ext2 you could run into some problems because some of the installation kernels and initrds don't include support for reiserfs and so can't recognize the files.  Although you could use mkinitrd to create a new initrd with reiserfs support, that might be pushin it IMO...   I use the 9th partition consistently for this.  I know there is a "right" way to copy the /mnt/cdrom files so everything stays the way it is supposed too, using tar or cpio, but I'm lazy so I just do cp -rp.   
    (What is the tar or cpio commands to copy with correct permissions etc??)
    So you mount the 9th partition as whatever, say /mnt/hd and then copy the files.  Now what?
    Now edit your /boot/grub/menu.lst file to include the specific options to boot arch-linux installation. 
    A good idea is to find the isolinux.cfg file somewhere on the distro cd, this will tell you what to include in the menu.lst.
    Here is the section in my menu.lst
    title Arch Install
    root (hd0,8)
    kernel /isolinux/vmlinuz load_ramdisk=1 prompt_ramdisk=0 root=/dev/rd/0
    initrd=/isolinux/initrd.img
    This should be self-explanatory.  The root (hd0,8) is pointing to partition 9.  So the rest of the commands start from partition 9. 
    When you experience problems, remember you can always edit the grub boot options by typing 'e' and then edit the section.  Also, a good idea is to include several variations in your menu.lst so you can easily try other ways to boot efficiently.  And, remember to read up on all the installation guides that come with your distro, specifically, hard-disk installs. 
    There are special cases, Gentoo, has a semi-new compressed filesystem called squashfs.  BTW, this is AWESOME, so check it out.  It has to be compiled into the kernel, so some work is in order, but use this recompile to optimize your kernel.  You can get the squashfs patch for almost any kernel.  I use the latest stable 2.6 kernel.  Squashfs is incredible and although I don't think you need it to install from ISO, you do need it to expand the livecd.squashfs filesystem that comes with the cd.
    Heres a sample Gentoo section from my menu.lst
    title Gentoo Install
    root (hd0,8)
    kernel /isolinux/gentoo root=/dev/ram0
    initrd=/isolinux/gentoo.igz init=/linuxrc acpi=off looptype=squashfs loop=/livecd.squashfs cdroot vga=791 splash=silent
    A nother' tip is the shell that is provided if you experience problems, typically busybox or ash.  The key tools to get you going from here is mount and chroot.  Sometimes you will need to manually create a simulated file system and then chroot into it.  For instance, you might have to create boot, etc, bin, directories on the target partition. 
    I generally install each OS onto the next partition (careful of the logical partition) and add it to my menu.lst after install.  A good idea is after installation, copy the kernel and initrd(if there is one) to the slackware(or whatever) boot partition on hda1.  I copy kernels to /boot/KERNEL/ and initrd's to /boot/INITRD, then menu.lst is more organized...
    You then need to add an updated section to your menu.lst (just comment out the install section for later)
    Here is the finished arch-linux section from menu.lst
    title Arch Linux 6
    root (hd0,2)
    kernel /boot/vmlinuz26 ro root=/dev/hdc3
    This doesn't use my convenient boot/KERNEL/vmlinuz26 as you can tell by setting the root to partition 3.
    ***NOTE: Make a backup of MBR using dd and save to floppy, also backup the partition table to floppy, using cfdisk or parted.  And boot disks (I use 1 with grub, and 1 with slack, and tomsbootdisk) will invariably come in handy.  Tomsbootdisk is recommended, and make the grub boot disk when you install grub.  install to floppy.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    The final result after some fun experimenting, is when I boot, I have a cool grub boot screen come up with the option to boot into whatever OS I want, this is handy for multiple reasons.  One good thing to do after this is to port scan and vuln scan each OS, after you update of course.  Write this stuff down and you will know the weaknesses/strengths of the various OS's. 
    I can boot a custom Firewall, snort, or multiple honeypots using this procedure, as well as a graphical kde environment with a kernel optimized for graphics and my processor/architecture, or an environment devoted to forensics or even an environment suitable for programming.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    P.S. Some of the cooler alternative operating systems are BeOS 5, EOS, ER_OS, V2_OS, and my personal favorite Menuet.  Menuet is 100% assembly graphical operating system that fits on a floppy.  Its f'in money!
    This should be a good enough example to get you started, this kind of thing should be learned and not just copied... Knowing how to do this stuff could prove to be exceptionally useful...

    Start by reading all the articles built-in on your Mac - Help > Mac Help, search "printer sharing."
    http://desk.stinkpot.org:8080/tricks/index.php/2008/04/how-to-print-to-a-cups-se rver-from-mac-os-x/
    http://www.macosxhints.com/article.php?story=20080324224027152&query=share%2Bpri nter
    http://members.cox.net/18james/osxprintersharing.html
    http://ubuntuforums.org/archive/index.php/t-56940.html

  • [Bounty] Free Macbook Pro to get Arch Linux running on Amazon's EC2

    First, the details:
    I will purchase a lowest–end Macbook Pro 13″ ($US 1,200 on Apple's store, new) for the first person to deliver to me a working set of step–by–step instructions for installing the latest Arch Linux on top of Amazon's EC2 platform.
    Caveats & Rules:
    - I don't care how long it takes you—there's a good chance I'm doing something absolutely stupid in my noobishness that's causing the problems I've been experiencing; if it takes you half an hour to make a working AMI, and produce instructions to do such… you just won yourself a Macbook Pro for half an hour's work. Booyah!
    - Again, I say, I don't care how long it takes you—if you don't produce a working set of instructions, there will be no payout, even if you spend 200 hours trying (as I already have!). It's a bounty, not a work contract d-:
    - You must provide me with instructions that work for me (as I don't intend to use your AMI, but rather modify the steps that worked for you a bit at a time until I arrive at an AMI configured exactly as I want it). If you arrive at a working AMI, and can reproduce your steps successfully locally, but they can't be made to work for me, I may be able to go about procuring alternative hardware for myself on which to preform the steps, or taking other measures to reproduce your environment; but the bottom line is I will not shell out until I can, personally, produce a working AMI running Arch Linux.
    - The instructions are considered to be "working" when I can successfully SSH into the root account on an instance instantiated from an AMI created by following the instructions using the key generated by EC2.
    - Your instructions must work both for x86_32 and x86_64 instance types; however, this shouldn't be too much of a problem, as (barring any weirdness) anything that works on x86_32 should be easily made to work on x86_64.
    - Instructions that involve instantiating an intermediate bundling host (say, a CentOS or Fedora Core instance) and then installing Arch to a loopback filesystem using a statically–built pacman are much preferred to instructions that involve me having to install and package Arch locally and then ship it up to S3, because my upstream is unimaginably slow and I eventually will need to create something between eight and twenty different AMIs (see below). But anything that works will be accepted.
    - If you don't want a Macbook Pro, alternative payment methods may be arranged, though you need to contact me before you start and arrange these, as there's only so much I can do.
    - If you are in any way confused or unsure of what I'm offering here, please contact me before you start (see below for contact info)
    Backstory:
    I set up the first AMI for Arch Linux on Amazon, but unfortunately, I did some really stupid things (hey, I was completely new to Linux at the time, gimmie a break!). The root filesystem was limited to 1GB, there was a whole bunch of software that really was completely unnecessary (WiFi drivers? on a virtualized server? seriously?), there were no kernel modules provided… and so on.
    So, after running all my stuff on instances of that for a while, I finally got fed up and found the time to start setting up a newer, cleaner AMI. Unfortunately, I made the mistake of deleting my old AMI before starting work on the first. Now I find myself completely unable to create an AMI that will work whatsoever, and I cannot for the life of me figure out why.
    I've already invested 200 or so hours of my personal time since deleting my original, broken AMI; I'm very fed up and in badly need of working instances. I tried every method I could think of; running the Arch installer from a LiveCD locally and then bundling the running (and thus proved working) Arch install and shipping it off to S3; installing Arch on a loopback filesystem locally, cloning it to a local partition, booting to it to ensure it works, and shipping it off to S3; installing Arch on a loopback filesystem on a remote bundling host running CentOS or whatever and then shipping it off to S3… I've tried installing nothing but the essentials, I've tried installing everything the installer offers… I've tried to do my best to remember the exact steps I took the first time around, years ago, and reproduce them exactly… nothing has worked.
    If I take EC2 out of the equation, and install the images I've prepared locally, they work. If I take Arch out of the equation, and install, say, CentOS instead, and then ship it off to EC2, it works. The only time I have problems is when I attempt to install Arch Linux specifically on EC2 specifically; the exact use–case I need.
    I've run into a lot of problems along the way, and fixed them as I go, but I universally end up with an AMI that, once instantiated, does not successfully boot. Worse yet, I get absolutely no output from the console (provided by the ec2-get-console command–line tool) to help me debug the problem. I can't give you any more specifics beyond this to help you, because I don't want to insinuate some idea that will cause you to make some little stupid mistake that I also made, thus dooming the project.
    Contact:
    For more info of any sort, please hit me up on Google Talk or Jabber (… or any other XMPP–federated chat service, or AIM, or ICQ, or MSN, or whatever you like, they all use the same address anyway) at the following address:
    [email protected]
    Edit: I should point out that it would be good form to post here if you're going to make a stab at it, so interested parties know how many people are already making attempts.
    Last edited by elliottcable (2009-07-25 03:59:46)

    drtoki wrote:
    http://blog.mudy.info/2009/04/archlinux-ec2-public-ami/
    lolwat
    from fryguy
    Public AMIs aren't what I need, because I need to mass–produce quite a few AMIs with different custom configurations for different purposes; so I have to be able to start from scratch and arrive at a working AMI *myself*.
    As for the script, I'm sitting down to play with it now; it looks just about exactly like what I've been doing so far. Maybe there's some small thing he did differently that will make it work. Here's hoping it works for me; that'll be a real load off my chest.

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

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

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

  • Recovering earlier installed Windows 7 after installing Arch Linux

    I'm trying to boot windows on my ASUS notebook.
    There was windows 7 from the very beginning (disks C:\ and D:\), then I divided disk D:\ on several partitions and installed Arch Linux. I overwrited Windows boot information by boot part of Linux. Now I want to recover windows, that I still have on hard drive. It doesn's matter what there will be: dualboot or only windows (but dualboot is prefered).
    Disk info:
    [jhon@fckrsns ~]$ sudo fdisk -l
    Disk /dev/sda: 698.7 GiB, 750156374016 bytes, 1465149168 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: gpt
    Disk identifier: 1AFC9DFF-CD3B-4CE1-8CAF-41C3E5B75772
    Device Start End Size Type
    /dev/sda1 2048 411647 200M EFI System
    /dev/sda2 411648 673791 128M Microsoft reserved
    /dev/sda3 673792 586731519 279.5G Microsoft basic data
    /dev/sda4 586731520 691589119 50G Linux filesystem
    /dev/sda5 1412718592 1465147391 25G Windows recovery environment
    /dev/sda6 691589120 901304319 100G Linux filesystem
    /dev/sda7 901304320 1412718591 243.9G Microsoft basic data
    [jhon@fckrsns ~]$ lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 698.7G 0 disk
    ├─sda1 8:1 0 200M 0 part /boot
    ├─sda2 8:2 0 128M 0 part
    ├─sda3 8:3 0 279.5G 0 part
    ├─sda4 8:4 0 50G 0 part /
    ├─sda5 8:5 0 25G 0 part
    ├─sda6 8:6 0 100G 0 part /home
    └─sda7 8:7 0 243.9G 0 part
    sr0 11:0 1 1024M 0 rom
    [jhon@fckrsns ~]$ lsblk -f
    NAME FSTYPE LABEL UUID MOUNTPOINT
    sda
    ├─sda1 vfat 4DEB-D6D2 /boot
    ├─sda2
    ├─sda3 ntfs OS 62364BE9364BBCB3
    ├─sda4 ext4 c4da4683-871a-49fa-96a3-4da11387d31d /
    ├─sda5 ntfs Recovery 8ECE4F50CE4F2FAF
    ├─sda6 ext4 3eba01c6-e422-4542-8442-16064c74a563 /home
    └─sda7 ntfs 3B29E7794F6CD932
    sr0
    OS partition (/dev/sda3):
    [jhon@fckrsns /]$ ls /run/media/jhon/OS
    altera Boot djvureader DrWeb Quarantine eSupport hiberfil.sys MSOCache N56VM.BIN pagefile.sys Program Files Recovery SecurityScanner.dll VisualCLibs
    AsusVibeData bootmgr Documents and Settings eclipse Games Intel MS.Office.2007.Portable.micro.v.1.16 N56VZ.BIN PerfLogs Program Files (x86) $Recycle.Bin System Volume Information Windows
    AVScanner.ini BOOTSECT.BAK DOSBox_SIM END gcc Keil_v5 mtd NVIDIA ProgramData Qt R.G. Catalyst Users
    I tried to recover MBR with different ways:
    with syslinux:
    [jhon@fckrsns /]$ sudo dd if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sda
    0+1 records in
    0+1 records out
    440 bytes (440 B) copied, 0.0226394 s, 19.4 kB/s
    with ms-sys:
    [jhon@fckrsns /]$ sudo ms-sys --partition /dev/sda1
    Start sector 2048 (nr of hidden sectors) successfully written to /dev/sda1
    Physical disk drive id 0x80 (C:) successfully written to /dev/sda1
    Number of heads (255) successfully written to /dev/sda1
    [jhon@fckrsns /]$ sudo ms-sys --mbr7 /dev/sda
    Windows 7 master boot record successfully written to /dev/sda
    But there is still no way to boot windows.
    I run grub-mkconfig before and after these manipulations with MBR:
    [jhon@fckrsns ~]$ sudo grub-mkconfig -o /boot/grub/grub.cfg
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-linux
    Found initrd image: /boot/initramfs-linux.img
    Found fallback initramfs image: /boot/initramfs-linux-fallback.img
    No volume groups found
    done
    [jhon@fckrsns /]$ sudo os-prober
    /dev/cdrom: open failed: No medium found
    No volume groups found
    I installed rEFInd, now I have two choices on boot screen: vmlinuz-linux, which it founded, and my earlier installed grub bootloader.
    Maybe I missed something, but i don't know what exactly.
    Last edited by Jhon (2014-09-28 16:45:38)

    Now I know that I don't need MBR at all (but google told me that recovering windows = recovering MBR..)
    Are there any ways to recover boot information on EFI system partition from Linux without using Windows Live CD and it's bootrec.exe?
    I have bootmgr and bootmgfw.efi files on /dev/sda3 (partition with windows installed), what else I need? Simple copy of bootmgfw.efi to /boot/EFI/Microsoft/Boot/bootmgfw.efi and addition of custom menu item to /etc/grub.d/40_custom does'nt work. There is Windows now in rEFInd and GRUB menus, but there is error on loading.

  • Looking for best practice on J2EE development environment

    Hi,
    We are starting to develope with J2EE. We are looking for best practice on J2EE development environment. Our concern is mainly on code sharing and deployment.
    Thanks, Charles

    To support "code sharing" you need an integrated source code control system. Several options are out there but CVS (https://www.cvshome.org/) is a nice choice, and it's completely free and it runs on Windows, Linux, and most UNIX variants.
    Your next decision is on IDE and application server. These are usually from a single "source". For instance, you can choose Oracle's JDeveloper and Deploy to Oracle Application Server; or go with free NetBeans IDE and Jakarta Tomcat; or IBM's WebSphere and their application server. Selection of IDE and AppServer will likely result in heated debates.

  • [SOLVED] Arch Linux on Macbook Pro 4.1

    Hey There,
    I'm a 2 years old Arch Linux guy and due to the problems I've had with my HP Pavilion PC, I've bought a Macbook Pro 3-4 months ago.. Because that it's a pain in the ass to install, upgrade and remove software on Mac OS X, especially development software such as Python and its bindings, I'm thinking of migrating to Arch Linux. Any way, I've just installed Arch Linux and dual boot..
    I've installed X, GNOME, NVIDIA so far and when I try to open GNOME (via startx), it opens up a 800x600 or 1024x768 resolution X and shows GNOME.. But I can't move the mouse and no matter what I type no menus show up.. So I'm stuck after GNOME starts.. I can't drop back into the terminal so I hold the power button to shutdown and start the machine...
    It seems that this is the only problem I have for now.. Anyone had this problem before? I've tried it with and without xorg.conf and the result is the same..
    Last edited by T-u-N-i-X (2008-11-30 16:17:11)

    CTRL + ALT + Backspace
    That should close startx.  Also, the user manual has a couple of alternative methods of setting up your xorg.conf file.  I'd try those next.
    http://wiki.archlinux.org/index.php/Beg … phic_Cards
    Last edited by sharpie (2008-11-30 14:05:39)

Maybe you are looking for