# Installing FreeBSD 11.1 to an Apple Xserve 1,1 (intel)



## Keve (Mar 13, 2018)

Hello Forum,
I have an Apple Xserve 1,1 which I am hoping to install FreeBSD 11.1R on, because the OS X on it is no longer supported by MacPorts, therefore I can no longer install any recent piece of software on it (no latest node.js, perl, php).
I created a FreeBSD installer memstick using the FreeBSD-11.1-RELEASE-amd64-memstick.img but the boot selector (holding Alt during POST) on the Xserve does not recognize the volume. The same memstick does show up on the boot screen of my MacBook Air and boots fine too.
As far as I know, FreeBSD 11 supports EFI booting out of the box. I verified that the GPT volume types on the memstick are proper.
Also tried another memstick, using the FreeBSD-10.4-RELEASE-amd64-uefi-memstick.img just to make sure. Same result. The memstick does not show up on the boot selection screen.
All related posts I found date back to 2014 and 2015, I am certain a lot has improved in FreeBSD around EFI support.

I will burn a CD using FreeBSD 11.1R disc1 and see if that boots, but I am afraid if the memstick did not show up on the boot screen then my harddisk will not boot either, even if I manage to boot from the CD and manage to install FreeBSD on the hdd.

Any suggestion or pointer is more than welcome.

Please note: I have already studied https://forums.freebsd.org/threads/upgrading-macmini-7-4-to-9-1-mountroot-failure.37218/ and https://forums.freebsd.org/threads/upgrading-macmini-7-4-to-9-1-mountroot-failure.37218/ including the links mentioned there, and I will try to use what is mentioned there if I get past installing the base system on the Xserve's hdd.


----------



## Keve (Nov 7, 2018)

an update on this project:
The main issue with the Xserve 1,1 seems to be the fact that the processor and system architecture is 64-bit, allowing the use of a 64-bit operating system (like FreeBSD 11.2R/amd64) and up to 32GB system memory, while the firmware provides a 32-bit EFI 1.0 only.

I had some success on a similar system, a 2006 iMac, sporting a 32-bit EFI 1.1, where rEFInd recognized the pendrive based on memsctick.img, but gave nothing upon loading it other than a full black empty screen. However, using a generic PC (HP 8000) I could boot this pendrive, install FreeBSD to a SATA hdd or another memstick, and boot those in the iMac via rEFInd.
I tried to repeat that success on the Xserve, but always failed for one peculiar reason or another.


rEFInd does start on the Xserve too, but it is unable to boot any USB drives. It complains that I should upgrade my EFI firmware, but it is already the latest available for this Xserve.
While the old iMac was able to boot FreeBSD from an MBR-partitioned hdd (but failed to boot from a GPT-partitioned hdd), the Xserve is NOT ABLE to boot FreeBSD from the same MBR-partitioned hdd.
The loader.efi from FreeBSD 11.2R/amd64 fails to start (no surprise as the firmware has a 32-bit EFI).
The loader.efi from FreeBSD 11.2R/i386 does start, but fails to find my freebsd-ufs partition.
grub2.efi gets me grub prompt, and I can load modules for part_bsd, part_gpt, ufs2, chain, whatever, and I can launch a kernel or a loader, but was never able to past beyound that.

So far, the only system I could successfully start on the Xserve 1,1 was Mac OS X 10.6 Snow Leopard, but that works fine from harddisk, from memstick, or from DVD too.


----------



## vchan (Nov 8, 2018)

Have you tried the i386 img? I know you want the x86_64 img, but if the i386 img will boot then you can probably make a work around.


----------



## Keve (Nov 8, 2018)

Excellent point.
I did try to use loader.efi from the i386 image, but my *freebsd-ufs* partition always contained an amd64 system.
I shall give an i386 system a try too, and see if that goes any further.


----------



## ladeschale (Nov 17, 2018)

Hello Keve,

yeah finally today i got success in booting up 64bit 11.2 on Xserve1,1.

To boot up the amd64memstick version i used these things:
1. null-modem cable (TX/RX crossed)
2. grub2, i used supergrub on a usb-stick https://www.supergrubdisk.org/super-grub2-disk/
3. FreeBSD Installer memstick version


First i connected null-modem cable with Xserves RS232 and an usb-serial adapter with my monitoring computer (Windows with Hyperterminal in my case). The Terminal should be configured to 9600 baud 8N1, VT100.

The FreeBSDInstaller i put on a hdd, but i think it should work with usb-stick too.
With prepared supergrub helper-stick hold down alt-key and start Xserve.
After selecting the helper-stick to boot in grub2 efi bootloader the supergrub menue appears.
At this point switch to the grub commandline to prepare serial connection and starting fakebios to mimic BIOS environment.

`serial --unit=0 --speed=9600`
configuring serial port and speed, serial is an alias, unit=0 is com0, speed=... baud rate

next routing terminaloutput and input arround
`terminal_output serial gfxterm; terminal_input serial console`
terminal_output goes to two outputs, our configured serial where the monitoring computer is connected and to gfxterm what is actually the monitor connected to Xserves graphiccard
terminal_input comes from two sources, serial is our monitoring computer who now can send characters back, console is where usb-keyboard connected is.
Now it should be possible to see `grub>` commandline on Monitor and via serialcable on monitoring computer
also the usbkeyboard on xserve should working and on monitoring computer too.

When this is up and running, the last thing in grub commandline is to entering
`fakebios`
fakebios mimic a BIOS environment without this FreeBSD Kernel is crashing at first step in ACPI mode cause no APIC is found and without ACPI mode it crashes later when absolut no usable event timer is found.

After this we can switch back to supergrubmenue with hitting ESC-key.
In supergrubmenue entering the entry where it detects available systems to start. After a short moment it comes up with a list of available systems and bootoptions. For FreeBSD Installer i choosed the option verbose to start.
Now the Monitor go blank, but on serial monitoring it should be possible to see a starting system par excellence.


----------



## Keve (Nov 18, 2018)

This is excellent news, ladeschale!
I would have never thought of using a serial terminal. And Grub2's fakebios is another splendid idea I missed.
These are very promising additions to my trials. I will see if I can get any further with your findings.
Much appreciated. Thank you!


----------



## tangles (Apr 26, 2019)

Hi Keve,

Just curious how you got on?

I have an old MacPro 2006 that has 32bit EFI and 64bit Xeons with 32GB RAM and am wondering how far I'd get considering there's no serial port to take advantage of.

Regards,


----------



## Keve (May 1, 2019)

Hi,
I allowed myself to be sidetracked by "more important" things. So I have not even tried the FakeBIOS+Serial method. The Xserve is still waiting next to my desk.
Your interest is the perfect motivation to direct my attention back to the "FreeBSD on Xserve 1.1" project. I will attempt to finish-up with current tasks in the next 10 days and then see if the earlier suggestions can make the Xserve boot. I will post the results here.


----------



## Keve (Jun 27, 2019)

I experimented with this several times during the last couple of weeks, but never managed to boot FreeBSD on my Xserve. Just like before, the boot process comes to a halt as soon as the kernel starts to load. Some important points to note:

Using the grub commands *ladeschale* showed above, I could use a Terminal as a second display for output and its keyboard as a second input. The local console _(LCD display connected to the mini-DVI port of the Xserve, and a USB keyboard connected to the USB port on the Xserve)_ and the serial Terminal _(an old Pentium II laptop with a built-in RS-232 port running FreeBSD and tip, connected to the RS-232 port of the Xserve via a null-modem cable)_ were BOTH functioning at the same time, for keyboard input and display output equally.
The mirrored console worked only while I was fiddling with the grub commands, but after I told grub to *boot*, only 1 console worked. If I wanted the serial Terminal to remain functional after *boot* was issued, I had to enter `set console=comconsole` at the FreeBSD loader prompt.
Regardless of what I did, the best I could get is exactly the same as before. Kernel modules got loaded without any problems, but booting FreeBSD froze completely as soon as the kernel started loading. From that point nothing more appeared on the screen and keyboard imput seemed to get ignored.
Grub always rejected to chainload the loader.efi of FreeBSD/amd64, only the 32 edition of loader.efi was accepted for chainload. Chainloading the 32 bit edition of loader.efi from a UFS2 volume that had a 64 bit FreeBSD installed never recognized /boot/kernel/kernel as a valid kernel.
I had high hopes that grub's *fakebios* will enable the FreeBSD kernel to load completely, but on my Xserve 1.1 this apparently improved nothing at all. :-(


----------

