Linux on an Apple Xserve EFI only machine

We have a few of these Apple Xserve machines at work which weren’t doing much, so I thought I’d make better use of them. Naturally, this meant installing Linux on them.

These machines do not have a BIOS (or even any emulation), they use EFI and as such won’t boot the standard Linux install media. I knew that Fedora could boot EFI, so that’s where I started, with Leonidas (version 11). Unfortunately, the install media just wouldn’t work on this device, presumably as it has no BIOS emulation.

To cut a long story short, I had to learn how EFI works in order to get it booting and it wasn’t an easy thing to discover!

Booting EFI
In short, the Apple EFI boots and scans all available drives (including USB drives) for a GPT partitioned device which has a FAT formatted partition on it. Inside this partition it looks for an efi directory.

In that directory must be another from the list of approved vendor named directories, such as redhat or apple. The default is boot and this is what I used.

Inside that boot directory, EFI looks for a binary EFI file, which it can run. In my case, this is a GRUB2 EFI binary. The name of the file must match your architecture, so for me it is called bootia32.efi but if you’re running a 64bit system it should be bootx64.efi.
NOTE: Your Mac must have a 64bit EFI to load the 64bit EFI Linux installer (bootx64.efi)). Else, try choosing the 64bit options when using the 32bit EFI installer (bootia32.efi), but either way your system must have a 64bit CPU.

The GRUB2 EFI binary I am using looks for the standard GRUB config file, which is called grub.cfg. This must also be in the efi/boot/ directory of the USB device. The kernel and initramfs for the net installer should also be in that directory.

I have made a Debian Squeeze, Fedora Constantine and Ubuntu Karmic installer which you can download and extract onto your USB device (sha1sum). You will still need to partition and format your device, so more on how to do that later.

Partition USB Boot Device
So, once we understand how EFI works, next we need to get a bootable GRUB happening in order to install Linux.

Grab a USB memory stick and let’s prepare it. Please know what device it is you’re partitioning!! I’ll use sdz just for example purposes only.
Unmount it
su -c 'umount /dev/sdz1'

Partition and format it
Partition and format it
su -c 'parted -s /dev/sdz mklabel gpt mkpartfs EFI fat32 0% 100% toggle 1 boot'

It should now automatically mount. If not, unplug it and plug it in again, or mount it manually.

Prepare USB Boot Device
Next you can extract my tarball onto the device, ensuring that it maintains the efi/boot/ directory structure on it and not create an extra directories because of the archiver. If it’s not right, then re-arrange things and eject the device.

You should now be able to plug it into your Xserve and turn it on.

Hold down the Option key (Alt key on non-Apple keyboards) until you see the boot option. It should show “EFI” on the usb stick. Boot this and you should see the GRUB menu load. Choose the distro you want to install and away you go! See the “Installation” section below and skip the next few.

Manual preparation – Building GRUB2
Before we can compile GRUB, we need some dependencies. If you’re using Debian or Ubuntu, then run the following:
sudo apt-get build-dep grub2
sudo apt-get install libusb-dev

We need to check out GRUB from CVS and build it for EFI systems. Note, my Xserve is 32bit only, so I’m installing 32bit version. If you’re using 64bit then use a 64bit OS. You can cross compile, see the link above for info if you need to.

Check out source from CVS:
cvs -z3 \
-d:pserver:anonymous@cvs.savannah.gnu.org:/sources/grub \
co grub2
cd grub2

Or get source from Debian (which is more likely to compile):
apt-get source grub2
cd grub2*

Build grub2:
./configure --with-platform=efi
make

Now, make a temporary directory in which to put the GRUB EFI binary.
mkdir -p efi/boot/

Next we need to create the GRUB2 EFI program, and will specify a bunch of modules to include. This was a big stumbling block for me because someone removed the ability to read config files from module “configfile” and put it into “minicmd” requiring “sh”. The documentation I was following was not updated and I couldn’t work out why GRUB2 couldn’t parse my config (typing it in manually at the GRUB2 command prompt worked however). After lots of wasted time I emailed the GRUB list and had an answer within 20 minutes, which was a big relief.

./grub-mkimage -d . -o bootia32.efi part_gpt hfsplus fat ext2 normal sh chain boot configfile minicmd linux loadbios reboot appleldr halt search
sudo cp bootia32.efi efi/boot/

The efi/ directory now just needs to be copied onto your FAT USB stick. Don’t forget to make sure the directory structure is correct, as laid out above.

Now you just need to create a GRUB2 config file, which we’ll do below after getting the kernel and initramfs.

Manual preparation – Linux installers
I am using the netboot installers for each distro. This basically consists of a kernel, initramfs (which includes the installer). To know how to boot these in the GRUB config file, I read the isolinux configs included on the install CDs.

So, download the network installer of your choice in ISO format. Mount loop it and copy the kernel and initramfs onto the efi/boot/ directory on your USB disk.

For example (32bit), Ubuntu, Fedora, Debian Squeeze (note that Fedora does actually have an EFI boot disk which you can dd directly to a USB stick and boot, however this didn’t work on my Xserve but it might be useful to grab the kernel and initramfs from as it’s smaller).

Mount loop ISO:
mkdir /tmp/iso
sudo mount -o loop boot.iso /tmp/iso

Copy the kernel and initramfs from /tmp/iso onto your USB stick. You might need to look at the isolinux.cfg files under /tmp/iso in order to find out which is the kernel. On Debian and Ubuntu the kernel is called linux and the initramfs is called initrd.gz, both in the root directory.

GRUB Config File
Now that you have the GRUB2 EFI binary (bootia32.efi), kernel and initramfs on the USB stick, we need a config file for GRUB to read when it loads.

Here is an example for all four distros that I use in my provided tarball.
set timeout=10
set default=0
menuentry "Debian Squeeze" {
linux /efi/boot/linux-squeeze priority=low vga=normal video=efifb
initrd /efi/boot/initrd-squeeze.gz
}
menuentry "Fedora Leonidas" {
linux /efi/boot/vmlinuz-leonidas nomodeset xdriver=fbdev noselinux
initrd /efi/boot/initrd-leonidas.img
}
menuentry "Ubuntu Jaunty" {
linux /efi/boot/linux-jaunty priority=low vga=normal video=efifb
initrd /efi/boot/initrd-jaunty.gz
}
menuentry "Ubuntu Karmic" {
linux /efi/boot/linux-karmic priority=low vga=normal video=efifb
initrd /efi/boot/initrd-karmic.gz
}

Note that for Fedora I had to turn kernel based mode-setting off, and specify the Xserver driver.

The USB keyboard just wouldn’t work on either Ubuntu, but Debian Squeeze worked fine. I ended up choosing Fedora.

Manual preparation – Install Linux
Once you have all the required files, plug the stick in and turn on the Xserve. Hold down the Option key (Alt key on non-Apple keyboards) until you see the boot option. It should show “EFI” on the usb stick. Boot this and you should see the GRUB menu load where you can boot your network installer of choice.

Installation
When installing, you need to follow the same partition structure as the USB stick. I completely blew away all Apple partitions and am booting only Linux. The drives need to be GPT and to have a small FAT partition at the beginning with the efi/boot/ directory, GRUB2 EFI binary, GRUB config, kernel and initramfs.

There’s probably a better way to do this, I’m sure some distros will support GRUB2 and EFI out of the box soon. In the mean time I install the OS without a boot loader and create the efi/boot/ system manually. This means every time you update your kernel, you need to copy the kernel and initramfs, and update the GRUB config file.

The config file should be the same as the one used on the USB stick, except that the names of the kernel and initramfs will be different. For example:

set timeout=10
set default=0
menuentry "Fedora Leonidas" {
linux /efi/boot/vmlinuz-2.6.28-13-generic nomodeset xdriver=fbdev noselinux root=/dev/sda3 ro
initrd /efi/boot/initrd.img-2.6.28-13-generic
}

Conclusion
These are some rough notes to hopefully help others out there trying similar things. Please let me know how it works for you. I installed Fedora on my Xserve and it’s running quite well!

149 Responses to “Linux on an Apple Xserve EFI only machine”


  • chris,
    do you know about somebody who has successfully installed any 64bit ubuntu version on an XSERVE3,1 machine?

    i can load the kernel (vmlinuz), init the ramdisk and when booting, the xserve3,1 hangs.

    any suggestions?

  • HI Michael,

    Unfortunately I don’t have one, so I can’t test. Maybe someone in the comments has. I don’t have much luck with Ubuntu generally, but maybe remove splash and quiet from the kernel line on your install media if you can’t see what’s going on.

    -c

  • Off topic — looks like you’re losing past comments :) this post is listed as having 102 comments; but currently only 2 are visible.

  • Hmm.. yeah, thanks. I wonder where they went to..

    -c

  • Cool, thanks. I’ll have to see if there’s a way to fix it..

  • I was totally interested in doing this, but after reading your instructions (nice job by the way), I think I’ll wait for a distro to have all of this built in. Have you heard of any since you wrote this? Just seems like ALOT of work to install linux on my old xserve(intel based).

  • Hi Gary,

    I think you should try Fedora with their efidisk image installer. It supports EFI out of the box, unlike Ubuntu, etc.

    -c

  • Hi Chris,

    I work for a college in Canada. I have an Xserve 3,1 with Quad-Core Intel Xeon that I’m trying to get any decent version of Linux or even BSD or Darwin open source to run on, without much luck. I’ve read through your instructions and comments but a number of things remain opaque for me.

    For example, in Mac OS X Server, the command “parted” doesn’t exist, so I am unable to follow those instructions for partitioning.

    Is there a distribution that solves the EFI problem on Xserve? Ideally users should be able to burn a disc from an ISO, select it from the Startup preferences pane and say goodbye to Mac OS X Server operating system.

    My goal is to explore alternative operating systems for this hardware now that Apple has discontinued it, so when they get around to killing the server OS I will be ready.

    Thanks for sharing all this information.

  • Hi Jim,

    Parted is a Linux tool, the OS X one is diskutil. So if I’m referring to parted, then it’s under Linux :-)

    OK, my recommendation then is to try Fedora’s EFIdisk image. You should be able to write this to a USB stick, boot off it and install Fedora:
    http://ur1.ca/37v8p

    In Linux (and Mac, I just don’t know the device), you can just dd the img to a USB drive, as root (replace sdX with your device):
    dd if=efidisk.img of=/dev/sdX

    Once you have this, plug it into your Xserve and boot it, holding down the option key to bring up the booting menus.

    That’s all from memory, so give it a try and let me know if you get stuck.

    -c

  • Thanks, I will try the EFI image you suggested. I managed to prepare a USB stick with the tarball you provided and I put the Fedora 14 iso disc in the optical drive and the grub menu appeared, but when I selected Fedora 64 bit I got an error message:

    [Linux-bzImage, setup=0x3400, size=0x340640]
    Video mode: 640×480-32@60
    Display controller: 4:0.0
    Device id: 65610de
    MMIO(0): 0×92000000
    VMEM(1): 0×80000000
    MMIO(3): 0×90000000
    Can’t find frame buffer address
    [Initrd, addr=0x3e98c000, size=0x1673474]

    _

    So, progress of a sort. Do you think the EFI disk image you suggest will work with the Fedora 14 iso on CD? Thanks again for your help.

    Jim

  • Hi Jim,

    Try adding this to the Fedora entry on the kernel line in the grub.cfg config on the usb stick:
    nomodeset xdriver=fbdev noselinux

    That should already be there on the grub.cfg. I think however, that the efidisk should work better. It’s a “proper” Fedora installer :-)

    -c

  • I erased my USB stick that I created with some sort of Linux “Live” CD and I’ve been trying to create it again from the efidisk.dmg but dd refuses to cooperate.

    When I format the stick and put it in the top USB port on the front panel of the Mac Pro, the df command shows it’s device name as /dev/disk1s2 but dd doesn’t like this and I don’t know what to type to specify the “raw device” for the top front panel USB port. In Disk Utility, if I right-click on the stick and show info I see the following:

    Name : Verbatim STORE N GO Media
    Type : Disk

    Partition Map Scheme : GUID Partition Table
    Disk Identifier : disk2
    Media Name : Verbatim STORE N GO Media
    Media Type : Generic
    Connection Bus : USB
    USB Serial Number : 079A0A09D66BE5C6
    Device Tree : IODeviceTree:/PCI0@0/EHC1@1D,7
    Writable : Yes
    Ejectable : Yes
    Location : External
    Total Capacity : 5.85 GB (5,851,054,080 Bytes)
    S.M.A.R.T. Status : Not Supported
    Disk Number : 2
    Partition Number : 0

    But entering this command:

    dd if=efidisk.img of=/dev/disk2s2 bs=1024

    Returns “Resource busy” if the Untitled volume I created is mounted and “Operation not supported” if it is not. I always have a full backup before messing with any of these commands as a typo can erase a disk very easily, so I’m not very comfortable trying to guess the correct device name. Nor can I remember which “Live CD” I managed to get running on the Mac Pro to do this again with “parted”. Still plugging away. Thanks again for the assistance.

  • First, thank you for this great resource of information which with the write up and comments have been very valuable in getting my install up to the part that I am having problems with. In short video display.

    Server: latest (last) generation of Xserve 3,1
    I have used the fedora 14 efi image on a usb to get the install going. However once I get into the anaconda installer the screen goes to being unreadable.
    The grub splash screen comes up and quite readable however see links below to see how the installer looks.

    http://imgur.com/ZSYug&GHTu0&pd4k3
    http://imgur.com/ZSYug&GHTu0l&pd4k3
    http://imgur.com/ZSYug&GHTu0&pd4k3l

    I know the installer works, as I have used a parallel install off fedora 14 on another machine (i386) to try and help navigate the install windows by guess work.

    Some additional info
    At the grub splash screen I enter “nomodeset xdriver=fbdev noselinux” to get the install going.

    I have also tried quite a few other anaconda options, tried vnc install.

    However all boils down to cannot understand some of the screens that come up due to video problems and my parallel install box, since it is not the same I do not get the same windows thus not giving as much help as I would like.

    Any thoughts, suggestions and help would be greatly appreciated.

    Very frustrating to think you are this close and just cannot get there.

    Thanks
    JohnD

  • Hi John,

    Have you tried not setting the xdriver to fbdev? Maybe try default boot, or vesa driver? The noselinux won’t affect this..

    -c

  • OK, so if you do it under Mac it’s a little different. Mac uses different device scheme to Linux, so what you’re seeing with disk2s2 is the second slice, that means the second partition.

    You want to dd the whole disk, so it’s probably something like /dev/disk2

    However, Mac will probably have mounted the USB disk. If you eject it in the normal way, it probably will remove the device completely. Try manually unmounting it in the terminal instead. The df command will tell you where it’s mounted, then run the umount command on that mount point.
    df
    sudo umount /media/USBSTICK

    Then you should be able to dd the image, I’m guessing something like:
    sudo dd if=efidisk.img of=/dev/disk2

    Hope that helps!
    -c

  • Chris,

    Thanks for the suggestion however each of those and some others all give the same results as seen in images in previous post.
    Some options passed to anaconda boot loader.

    xdriver=vesa nomodeset noselinux
    nomodeset noselinux
    nomodeset noselinux headless
    nomodeset noselinux lowres
    nomodeset noselinux resolution=(with various settings tried)

    nomodeset noselinux text
    nomodeset noselinux usefbx

    And several of the vnc settings to try and do a remote install.

    Screen always comes up like seen in images and thus cannot see what needs to be seen to get the proper questions answered.

    Thanks
    John

  • OK, bummer. Well, I would have thought that the vnc is the way to go (but maybe that needs a working X). When you booted the vnc one, did you then connect to it from another machine?

    See the Anaconda boot options, for setting IP addresses, etc:
    https://fedoraproject.org/wiki/Anaconda_Boot_Options

    With headless, that shouldn’t even probe for hardware.. maybe headless and text together? That way it shouldn’t probe graphical hardware, but should then go to a text install..

    I wonder whether the options you’re adding are not actually working? Maybe try changing them in the grub config on the bootable stick instead of on the fly?

    Other than that, I’m running out of ideas!

    -c

  • Chris,

    Thanks. The vnc would probably work but it brings up some screens obviously looking for information or questions to be answered and just cannot get to same screens else where to see what it is asking.

    I was thinking kind of the same think with the parameters in the grub config file. However every time I try to modify the file and load it the system will not pick up the usb stick and run. If I copy back the original grub config the system then sees the usb stick and boots.

    Have to try this some more but not sure what else I can really try.

    Thanks
    john

  • Chris,

    I also believe the parameters are being seen when entered in the grub boot menu, due to the fact without them the install does not process to the point of getting the red screens which is probably the check disc question.

    Thanks
    John

  • I think with VNC you can specify an IP in the anaconda settings, then just connect via another PC on ip:1 – but I’ve never done it.

    Unfortunately, I’m not sure what else to help with.. You could try using my USB stick image, then copy your own kernels and your own config.. maybe you can find some combination that works?

    For me, you should be able to do a headless install.. whatever that means, it should work.

    -c

  • Chris,

    SUCCESS!!!

    Well sort of, I cheated.

    Using the mac book pro as a visual reference was able to get through the install and firstboot by counting tabs and enter keys.

    Since I do not care about physically attaching a monitor to the xserve, as they will be nothing more than compute nodes in a cluster ssh access is all that I need.

    Thanks again
    John

  • Hi Chris,

    Many thanks for your contribution.

    I finally did it too !!

    I have an Intel Xserve 2.0QX (bi quad Xeon) that was unused and planned to use it with Debian Squeeze.

    I’ll share the deadends I ran into, if it can help others…

    I created the USB key following your instructions and all went well.
    I planned to install Debian using a non-Apple disk via a USB to SATA adapter (external disk) : don’t… Apparently, the installer won’t install Debian on an external disk.

    After booting on the USB key and installing Debian on an internal non-Apple disk, I could not see the EFI part of the internal disk at boot time, although I could see the EFI part when the same disk was connected thru USB to SATA (external disk).

    I finally used an Apple (logo’d) internal disk to boot (sda1 contained EFI partition) to install the Debian system on sda3 (sda2 is swap).
    NB : I tried the Xen kernel first. Did not work (bad magic number). The regular Kernel works.

    Here’s my grub menuentry :
    menuentry “Debian Squeeze 64″ {
    fakebios
    linux (hd0,1)/efi/boot/vmlinuz-2.6.26-2-amd64 root=/dev/sda3
    initrd (hd0,1)/efi/boot/initrd.img-2.6.26-2-amd64
    }

    I still have some modprobes ‘blocked for more than 120 seconds’ issues but, at least, the server runs…

    Thanks again Chris !!

    Kam

  • Just to let you know that I blacklisted the 2 ipmi modules (ipmi_si and ipmi_msghandler) and the modprobes issues are gone !!

    I also added ‘irqpoll’ to the boot command…

    A 64 bits Squeeze Debian Xserve… :)))

    Thanks Chris,
    Kam

  • Great, thanks for the post Kam. Glad it worked for you! :-)

    -c

  • First, thanks for a great instruction set.
    Exactly what I needed.

    However, I am stuck on something that you probably consider to be really basic. In the installation section you state:

    “The drives need to be GPT and to have a small FAT partition at the beginning with the efi/boot/ directory, GRUB2 EFI binary, GRUB config, kernel and initramfs.

    There’s probably a better way to do this, I’m sure some distros will support GRUB2 and EFI out of the box soon. In the mean time I install the OS without a boot loader and create the efi/boot/ system manually.”

    My question: How exactly do you do this? I complete the installation, but when I reboot, that stuff is not there.

    So how do I create a GPT partition on the hard drive with an /efi/boot directory and put those files on it?

    Sorry to be so confused over such a simple matter, but it’s just frustrating to be so close but not quite there.

    Thanks again for the great information.

    Regards,

    Garn

  • Hey Garn,

    Sorry for the delay in replying.

    So where are you up to exactly? If your drive already has the fat32 partition and GPT partition table, then you can just mount it under a live CD and copy the files across from your /boot drive (is that what you need help with?).

    Or, if you don’t have anything yet and your distro won’t create a GPT partition table or fat32 partition, you can create that manually using parted on a live CD (is that what you need help with?).

    Let me know and I’ll be happy to help if I can! :-)

    Cheers,
    Chris

  • Took a long time to find this post/solution of installing Debian on my iMac and thanks for revealing it.
    Unfortunately in my case this is only part of the solution since the Debian install seems to be a net install only via dhcp without the pppoe package. I am on DSL and pppoe is the only way to get to the internet to finish the install.
    So my question is, how is the installer made? Is there a possibility to use Squeeze CD 1 install iso (which has pppoe&all) to make this installer?
    BTW, I just copied the efi folder to a fat partition (usb stick partitioned with GUID not MBR) and it worked as expected.

  • Hi Andu,

    You can just copy any initramfs and kernel to the efi folder and edit the configuration file to add that as a new entry. You could also overwrite one of the existing ones, and just boot that one from the menu.

    Hope that helps!

    Cheers,
    Chris

  • Hi Chris. I think I’m having the same issue as Garn’s question in August.

    I successfully installed Ubuntu 8.04 from the USB drive. It’s on a second hard drive, so I removed the MacOS drive and tried to boot, but I just get a question mark folder cause it can’t find a system folder.

    I’m assuming it’s because there’s no FAT partition on the drive with an efi/boot/ directory, GRUB2 EFI binary, GRUB config, kernel and initramfs. But I can’t figure out how to add it.

    I installed MacFUSE and FUSE-EXT2, so I can access the drive through the Finder (MacOS won’t read the ext2 file system and will want to reformat the drive otherwise), but I can’t add a new partition through Disk Utility or diskutil in the terminal without wiping the drive. Should I have formatted the drive before I did the install with a FAT32 partition for the EFI and a GUPT FAT32 partition on which to install Ubuntu?

    Thanks, any help would be appreciated.

  • Hey Russell,

    Yeah, you need to have a fat32 partition – you might need to have created it when you installed Ubuntu. I don’t think that Ubuntu supports EFI in its default install, so you need to manually copy the kernel and initramfs over to the fat32 partition (same structure as on my install tarball).

    Not sure how much that helps..

    -c

  • Hi, I’m setting up a set of 10 Xserve’s with Fedora 17. OS loaded fine and all is well, except if I try to boot it headless. If I do not have a console connected it just hangs somewhere and I get no log messages or anything post mortem.

    Has anyone seen or experienced this and have a workaround?

    I’ve tried using a serial console with ‘console=’ and a netconsole, but neither seems to help.

    Any ideas?

  • Sorry Larry, I haven’t had that issue. You might have to ask in Fedora channels if there’s a way to tweak headless mode or something.

    -c

  • Thank you Chris for the explanation of EFI back in 2010 Linux did not support efi by default nowadays I think its possible to install ubuntu 12.04 or 12.10 without going thru the hassle like old distros back in 2010 right? Could you please let me know if I booted ubuntu 12.04 or 12.10 on usb would the xserve reads it without a problem? Because as i am noticing /efi/boot directory is created on USB the moment you extract latest ubuntu distros using unetbootin or other software that can make ubuntu on usb installer right?

    Will give it a shot later on.

    Regards,

  • Honestly I couldn’t tell you.. I haven’t tried it, but it seems like it probably finally has good support. Maybe you can try and let me know? :-)

    -c

  • Sure, will try it on Monday @ work. We have like 7 xserve standing there…

  • Saad,
    Could you post an update regarding your Ubuntu 12+ installation Xserve systems? Any insight on this process would be much appreciated.

    -j

  • Hi Chris,
    This is a question for you. I’m trying to compile my own grub mkimage. I’m using the following options:

    ./grub-mkimage -d . -o bootx64.efi -O x86_64-efi part_gpt
    hfsplus fat ext2 normal sh chain boot configfile minicmd
    linux loadbios reboot appleldr halt search
    sudo cp bootia32.efi efi/boot/

    As you can see the only difference is that I output to bootx64.efi and using -O x86_64-efi (without this grub-mkimage complains)

    Problem is I get an error stating that ./moddep.lst cannot be opened. When I locate this file and copy it into the current directory and try again I get a similar error but for the next module. Could you suggest a solution to this problem?

    -j

  • Hi again,
    Okay so I managed to get that part working also. The problem was -d . had to be changed to -d grub-core during the ./grub-mkimage command. (BTW: I’m using the Grub2 source files from Debian).

    Now I’m left with just ‘cannot stat sh.mod’ error message. If I remove sh from the module list it produces the file. Continuing with the remaining steps worked flawlessly, but when booting with the USB and selecting EFI from the boot menu it leaves me on the grub command prompt instead of showing me the boot menu gui. I’ve double and triple checked grub.cfg file I created. (kernel and initramfs found here: http://archive.ubuntu.com/ubuntu/dists/precise/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/).

    Will skipping the sh module have this effect? I searched the net for sh.mod and did a ‘find / -name sh.mod’ on my system but cannot locate that file. Any suggestions?

    -j

  • Maybe use your package manager to see if any packages provides */sh.mod and then install that? It’s been too long I’m afraid for me to remember. Other than that I’d be looking for bug reports in Debian.

    -c

  • Well, i tried 12.04 ubuntu and 12.10 x64 on xserv which has EFI64 and using nomodeset in the kernel parameters ended up like JohnD, kernel loads, text appear however the moment it hits the ubuntu Anaconda installer for the graphics it gives unreadable display colors and text :(,
    I can see the mouse cursor moved but not readable! I think iam going to install it blindly like what JohnD did. And see where it gets me.

  • Here is another video which I have tried ubuntu server 12.10 which should be console only and not graphical! Adding nomodeset boots it all the way except I cannot see anything but the system is intact and stable, what video any ideas?

    http://youtu.be/pmJRlc3DvMA

  • Did you try Fedora 18 live cd?

    -c

  • Yes Chris, I have tried it and it did not boot.. I get to the grub menu then it doesn’t boot the kernel even with nomodeset.

    [updates] on the above installation of 12.10 server now after installing fglrx, I can boot to the kernel without a problem and adding random xorg.conf file and rebooting without nomodeset solved the problem and I can see Lightdm because I did install ubuntu-desktop, however ubuntu gnome loads only desktop without unity panels.

    installing xubuntu-desktop xfce loads well without a problem with menu and everything however the resolution is only 800×600! :(

  • Hi Chris,

    Very helpful blog post here but I’m getting stuck at the very last step. My installed system refuses to boot.

    I started with your tarball and a USB stick, added wheezy64 entries and proceeded to install. All went well until time to install grub which didn’t seem to work so I skipped over it and completed the install.

    Now I can boot the system from the USB key by dropping to grub command line and passing set root, loading the kernel and initrd but I can’t figure out how to get grub on the internal disk.

    I’m working on an xserve 1.1 so it’s the typical 32bit EFI vs 64bit kernel mess.

    Any suggestions you can offer would be most appreciated!

  • Hi Chris,

    Just an update. I was finally successful. Even managed a mirrored software raid.

    The Debian iso I found here: http://cdimage.debian.org/cdimage/unofficial/efi-development/upload4/

    The multiarch one in particular was a huge help. I was able to install 32bit on my old xserve then 64bit on a new PC with EFI. Then I just copied the entire root over top of the 32bit install.

    At this point the system would not boot but all I had to do was manually start my mdadm arrays. Then once up and running rebuild my initrd and now everything works like a charm.

    Thanks again for the very helpful post!

  • Great, thanks for the update. Sorry I’ve been away so haven’t had time to reply to your message earlier.

    -c

Leave a Reply