Posts Tagged ‘recipe’

Howto: repair Grub’s menu on a Linux installation that wouldn’t boot

This is a simple recipe that will be obvious for many users of Un*x systems, but which proved useful to me when I needed to fix Grub on my laptop. I’m sharing it here for future personal reference, and in case anyone out there knows even less than I do about booting Linux and about Grub.

This recipe assumes that there is a /boot/ partition containing valid Linux kernels. In other words, it just creates a missing menu.lst file for Grub — it does not deal with other more complicated, lower-level boot issues.

Last time I installed Ubuntu, I somehow messed with the boot loader settings. I’m running Ubuntu on a MacBook Pro with an Intel processor; but I also have Mac OS installed, and I use rEFIt to handle both OS‘s. Whatever option Ubuntu ticks by default regarding Grub, I thought it wasn’t the right one for my setup. It turned out that either Ubuntu didn’t know how to install Grub correctly for my partition layout, or I screwed it myself. Anyway.

The system was installed successfully, but once the installation finished, Linux wouldn’t boot. rEFIt detected the new OS correctly, but when it was selected, Grub fell back to its own limited command line.

Now, if I knew more about Grub, I’d be able to find an image of the Linux kernel and boot the system with it, using Grub commands. Then I would edit the file /boot/grub/menu.lst myself.

What I did, instead, was the following:

  1. Run Linux from a live CD distro. You can boot using the same CD you used to install Ubuntu (but any live distro which includes Grub in its base system will do).
  2. Fire up a terminal.
  3. Temporarily rename the /boot/ directory:
    $ sudo mv /boot/ /boot.DISABLED
  4. Create a symbolic link to the partition on your hard drive that contains the Linux kernels, and call it /boot/ (if your live system did not mount that partition automatically, find the right device and mount it first under /media/, or mount it directly onto /boot/):
    $ sudo ln -s /boot /media/sda3/    # Your device might not be this one
  5. If there is already a /boot/grub/ directory, disable it:
    $ sudo mv /boot/grub/ /boot/grub.DISABLED
  6. Run update-grub (if it returns an error, you might need to create the directory /boot/grub/ yourself first):
    $ sudo update-grub
  7. Restore the original live /boot/:
    $ sudo unlink /boot/
    $ sudo mv /boot.DISABLED /boot
  8. Reboot the system and extract the live CD; this time Grub should show the menu of available kernels and load the one that you choose.

N.B. Although update-grub‘s man page asks you to run the command first, then set some options in menu.lst, and finally run the command again, update-grub looks idempotent to me (anyone knows what I’m missing?).

28 Aug 2009 No comments yetComputers, Linux


Definitive howto: Flex Builder 3 in Ubuntu Linux 9.04

Two weeks ago I had to reinstall Ubuntu. Yesterday I spent some time setting up Flex Builder in my new Linux installation. This time I faced even more difficulties than the last time, months ago. Definitely, Adobe is not paying much attention to its Linux developers — looking through Adobe.com and Adobe Labs, stuff regarding Flex development in Linux stays pretty much as (bad as) it was one year ago or so.

I finally managed to get the Flex 3 IDE and version 3.0.0 of the AIR SDK to run with Eclipse 3.3.2, and to launch both the AIR runtime and the Flash plug-in for Firefox from within Eclipse as needed (run and debug modes).

The process is no apt-get install, and is not well documented. At the end I combined instructions and tips from Adobe Labs, one or two comments from forums and the workaround for a bug filed in Jira. This recipe summarises the process in detail and, following it step by step, in a few minutes you will be running Flex Builder 3 in Ubuntu 9.04 Jaunty Jackalope. This recipe might be applicable to other versions of Ubuntu, and even to other Debian-based distros.

There are six main steps:

  1. Install a JRE
  2. Install the Eclipse SDK
  3. Install the FB3 plug-in for Eclipse
  4. Back up one SWC library
  5. Upgrade the AIR SDK
  6. Repair the offending SWC library from the backup

A few notes before going into details. First of all, bear in mind that the Linux version of FB3 is an unsupported alpha, and that some key features are (still) missing in it. The most important one is the design view, but also the states view, the profiler and four other features. If these are important limitations for you, you might need to consider virtualisation instead (or a different base OS altogether).

Second, there is no stand-alone FB3 for Linux. Flex developers running Windows or Mac OS are used to installing either the FB3 plug-in on top of an existing Eclipse installation or the FB3 stand-alone bundle provided by Adobe. In Linux, on the other hand, there is no option but to install the Eclipse SDK first, and then the FB3 plug-in on top of it.

Third, Java is a dependency: the FB3 plug-in needs Eclipse, and Eclipse needs a JRE.

Fourth, if you plan to build AIR applications for the desktop (as opposed to Flash applications for the web) you might need to install the AIR runtime separately, in addition to the steps listed here.

Finally, here I use Bash commands to illustrate these steps in detail and without ambiguity; but most of these steps, if not all of them, you can accomplish using your file manager and visual tools of choice instead.

  1. Install a JRE
    $ sudo apt-get install sun-java6-jre

    This will also install sun-java6-bin.
    You can now check that Java has been installed successfully, the usual way:

    $ java -version
  2. Install the Eclipse SDK
    From all the bundles that Eclipse.org provides, pick and download a minimal Eclipse SDK (you won’t need all those fancy plug-ins, and they can be added after the installation anyway).
    Whatever the bundle, it needs to be version 3.3.x, codename Europa.
    The IDE “for Java developers” [Europa] is the best option:

    $ wget "http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/europa/winter/eclipse-java-europa-winter-linux-gtk.tar.gz"

    Extract the files from the archive and then move the base eclipse/ directory to, for example, /usr/local/:

    $ tar -xzf eclipse-java-europa-winter-linux-gtk.tar.gz
    $ sudo mv eclipse /usr/local/

    Create a permanent workspace for Eclipse:

    $ mkdir ~/eclipse-workspace/

    Launch Eclipse:

    $ /usr/local/eclipse/eclipse &
  3. During the first initialisation it will prompt for a workspace. Browse to the directory that you just created (~/eclipse-workspace/).
    Check that Eclipse works (you can write and run a helloworld in Java).
    Close Eclipse.

  4. Install the FB3 plug-in for Eclipse
    Download Flex Builder for Linux and give yourself permission to run the file:

    $ wget "http://download.macromedia.com/pub/labs/flex/flexbuilder_linux/flexbuilder_linux_install_a4_081408.bin"
    $ chmod u+x flexbuilder_linux_install_a4_081408.bin

    Create a new directory for FB3 and make it your own:

    $ sudo mkdir /usr/local/flex-builder/
    $ sudo chown $USER:$USER /usr/local/flex-builder/

    Run the installer:

    $ ./flexbuilder_linux_install_a4_081408.bin

    Accept the license.
    When asked where to install Flex Builder, browse to the directory you just created (/usr/local/flex-builder/).
    When asked where Eclipse is currently installed, browse to the directory where you copied Eclipse (/usr/local/eclipse/).
    If you plan to develop for the Flash Player, tick the option to install the debug version of Flash Player 9 for Firefox (but you might be able to download it separately anyway).
    The “pre-installation summary” should look similar to this:

    Once the installation finishes you can launch FB3:

    $ /usr/local/flex-builder/Adobe_Flex_builder.sh &

    Flash projects will run fine …but most likely AIR projects won’t work. When you try to build and launch an AIR app, you will see this error message in Eclipse:

  5. Back up one SWC library
    $ cp /usr/local/flex-builder/sdks/3.0.0/frameworks/libs/air/airglobal.swc ~
  6. Upgrade the AIR SDK
    Download the AIR SDK for Linux to a temporary directory and uncompress it:

    $ mkdir ~/tmp-air/
    $ cd ~/tmp-air/
    $ wget "http://airdownload.adobe.com/air/lin/download/latest/air_1.5_sdk.tbz2"
    $ tar -xjf air_1.5_sdk.tbz2
    $ rm air_1.5_sdk.tbz2

    Delete the current SDK 3.0.0 runtime/ directory from the FB3 installation directory:

    $ rm -rf /usr/local/flex-builder/sdks/3.0.0/runtimes/

    Overwrite the SDK 3.0.0 with the version you downloaded (it will overwrite some files — that’s fine):

    $ cp -a ~/tmp-air/* /usr/local/flex-builder/sdks/3.0.0/

    Replace these two files:

    $ cd /usr/local/flex-builder/sdks/3.0.0/bin/
    $ rm adl_lin adt_lin
    $ mv adl adl_lin
    $ mv adt adt_lin

    Create this new symbolic link:

    $ cd /usr/local/flex-builder/sdks/3.0.0/runtimes/air/
    $ ln -s linux/ Linux

    Now it will almost work. When you run FB3 and try to run an AIR app, you will get this error:

  7. Repair the offending SWC library from the backup
    $ cp ~/airglobal.swc /usr/local/flex-builder/sdks/3.0.0/frameworks/libs/air/

    This will fix the previous error. Try to build Flash and AIR apps again in FB3; everything should work fine.

20 Aug 2009 17 comments so farAdobe Flex, Computers, Images, Work