Differences between revisions 19 and 20
Revision 19 as of 2007-06-27 17:59:21
Size: 8443
Editor: RicardoYanez
Comment:
Revision 20 as of 2007-07-28 12:51:08
Size: 8388
Editor: RicardoYanez
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Introduction =
= Debian On Intel Mac Pro =
 
Line 9: Line 9:
In the long version section I explain how I compiled the custom kernel and how I made the custom Debian Installer CD. In the "Details" section I explain how I compiled the custom kernel and how I made the custom Debian Installer CD.
Line 13: Line 13:
= Short-short version = == Debian Installation ==
Line 17: Line 17:
{{{$ wodim -v -eject dev=/dev/cdrw -data mini.iso}}} {{{
$ wodim -v -eject dev=/dev/cdrw -data mini.iso
}}}
Line 19: Line 21:
Being a mini CD, it contains only .udeb packages, no .deb packages. You will need a network connection to install the base system. Being a mini CD, it contains only `.udeb` packages, no `.deb` packages. You will need a network connection to install the base system.
Line 29: Line 31:
During the installation of the base system, choose '{{{none}}}' for the kernel to install. During the installation of the base system, choose '`none`' for the kernel to install.
Line 33: Line 35:
Just before finishing the installation, open a virtual terminal, {{{<ctrl>-<alt>-<f2>}}} for instance, and run a shell. Change the root directory with '{{{chroot /target}}}'. Just before finishing the installation, open a virtual terminal, {{{<ctrl>-<alt>-<f2>}}} for instance, and run a shell. Change the root directory with,
Line 35: Line 37:
Install {{{grub}}} and {{{initramfs-tools}}} with '{{{apt-get install}}}'. Install GRUB on the first disk drive by running '{{{grub-install /dev/sda}}}'. {{{
# chroot /target
}}}
Line 37: Line 41:
Edit {{{/etc/apt/sources.list}}} and add line, Install `grub` and `initramfs-tools` with,
Line 39: Line 43:
{{{deb http://debian.calel.org/macpro etch main}}} {{{
# apt-get install grub initramfs-tools
}}}
Line 41: Line 47:
Run '{{{apt-get update}}}' and install the custom kernel, Run,
{{
# grub-install /dev/sda
}}}
Line 43: Line 52:
{{{# apt-get install linux-image-2.6.20-1-macpro-amd64}}} to install GRUB on the first disk drive.

Edit `/etc/apt/sources.list` and add line,

{{{
 deb http://debian.calel.org/macpro etch main
}}}

Run '`apt-get update`' and install the custom kernel,

{{{
# apt-get install linux-image-2.6.20-1-macpro-amd64
}}}
Line 55: Line 76:
{{{# apt-get install linux-headers-2.6.20-1-macpro-amd64}}} {{{
# apt-get install linux-headers-2.6.20-1-macpro-amd64
}}}
Line 57: Line 80:
If you like to make Debian the first boot device, under Mac OS X, edit {{{/efi/refit/refit.conf}}} and uncomment option {{{legacyfirst}}}. If you like to make Debian the first boot device, under Mac OS X, edit `/efi/refit/refit.conf` and uncomment option `legacyfirst`.
Line 61: Line 84:
= Long version = == Details ==
Line 81: Line 104:
== Custom kernel 2.6 == === Custom kernel 2.6 ===
Line 85: Line 108:
Install {{{subversion}}} and get the mactel-linux kernel patches, Install `subversion` and get the mactel-linux kernel patches,
Line 87: Line 110:
{{{# svn co https://mactel-linux.svn.sourceforge.net/svnroot/mactel-linux mactel-linux}}} {{{
# svn co https://mactel-linux.svn.sourceforge.net/svnroot/mactel-linux mactel-linux
}}}
Line 89: Line 114:
Go to {{{trunk/kernel/mactel-patches-[kernel-version]}}} and apply patches with, Go to `trunk/kernel/mactel-patches-[kernel-version]` and apply patches with,
Line 91: Line 116:
{{{# ./apply /usr/src/[linux-source-directory]}}} {{{
# ./apply /usr/src/[linux-source-directory]
}}}
Line 93: Line 120:
Install {{{kernel-package}}} and {{{libncurses5-dev}}}. Go the the kernel source directory and '{{{make menuconfig}}}'. Install `kernel-package` and `libncurses5-dev`. Go the the kernel source directory and '`make menuconfig`'.
Line 97: Line 124:
Before compiling, edit {{{Makefile}}} and remove the {{{EXTRAVERSION}}} introduced by the Mactel-linux patching. Leave it blank. Before compiling, edit `Makefile` and remove the `EXTRAVERSION` introduced by the Mactel-linux patching. Leave it blank.
Line 101: Line 128:
{{{# make-kpkg --initrd --append-to-version=-1-macpro-amd64 --revision=2.6.20 kernel_image kernel_headers}}} {{{
# make-kpkg --initrd --append-to-version=-1-macpro-amd64 --revision=2.6.20 kernel_image kernel_headers
}}}
Line 105: Line 134:
== Kernel udebs == === Kernel udebs ===
Line 109: Line 138:
Install {{{devscripts}}} and {{{kernel-wedge}}}. Install `devscripts` and `kernel-wedge`.
Line 111: Line 140:
Unpack the source package {{{linux-kernel-di-amd64-2.6}}}, Unpack the source package `linux-kernel-di-amd64-2.6`,
Line 113: Line 142:
{{{# apt-get source linux-kernel-di-amd64-2.6}}} {{{
# apt-get source linux-kernel-di-amd64-2.6
}}}
Line 115: Line 146:
Go to the directory and edit {{{kernel-versions}}} to match the new version, {{{2.6.20-1-macpro-amd64}}}. Comment out or delete the existing line. Go to the directory and edit `kernel-versions` to match the new version, `2.6.20-1-macpro-amd64`. Comment out or delete the existing line.
Line 117: Line 148:
Check for build dependencies with {{{dpkg-checkbuilddeps}}}, and install dependencies as needed. Check for build dependencies with `dpkg-checkbuilddeps`, and install dependencies as needed.
Line 119: Line 150:
If you have a GPG signature you can do '{{{debchange -i}}}' to edit the changelog with your e-mail address and some comments. The directory name will change, reflecting the new version number. You will have to go to the parent directory, then back into the new directory. You may also want to change the {{{Maintainer:}}} field in {{{debian/control.stub}}}, and define the {{{EMAIL}}} and {{{GNUPGHOME}}} environment variables in the user's {{{.bashrc}}}, then source it. If you have a GPG signature you can do '`debchange -i`' to edit the changelog with your e-mail address and some comments. The directory name will change, reflecting the new version number. You will have to go to the parent directory, then back into the new directory. You may also want to change the `Maintainer:` field in `debian/control.stub`, and define the `EMAIL` and `GNUPGHOME` environment variables in the user's `.bashrc`, then source it.
Line 121: Line 152:
Build the package with {{{debuild}}}, or '{{{debuild -rfakeroot}}}' if not root. Build the package with `debuild`, or '`debuild -rfakeroot`' if not root.
Line 123: Line 154:
If you have no GPG signature, build with '{{{debuild binary}}}', or '{{{debuild -rfakeroot binary}}}' if not root instead. If you have no GPG signature, build with '`debuild binary`', or '`debuild -rfakeroot binary`' if not root instead.
Line 125: Line 156:
The building may fail due to missing kernel modules. Edit module listings in {{{modules/amd64}}} needed be. I copied some of the include files into the directory and put a {{{?}}} at the end of the missing module. See kernel-wedge documentation for more options. I had to delete some module-list files that generated empty udebs. The building may fail due to missing kernel modules. Edit module listings in `modules/amd64` needed be. I copied some of the include files into the directory and put a `?` at the end of the missing module. See kernel-wedge documentation for more options. I had to delete some module-list files that generated empty udebs.
Line 131: Line 162:
== Debian Installer == === Debian Installer ===
Line 135: Line 166:
{{{# apt-get source debian-installer}}} {{{
# apt-get source debian-installer
}}}
Line 139: Line 172:
Edit {{{build/config/amd64.cfg}}} and change {{{KERNELVERSION}}}. Uncomment
monolithic image type.
Edit `build/config/amd64.cfg` and change `KERNELVERSION`. Uncomment monolithic image type.
Line 142: Line 174:
Copy all kernel udebs into {{{build/localudebs}}}. Copy all kernel udebs into `build/localudebs`.
Line 144: Line 176:
Go to {{{build/}}} and build the monolithic image, Go to `build/` and build the monolithic image,
Line 146: Line 178:
{{{# make build_monolithic}}} {{{
# make build_monolithic
}}}
Line 148: Line 182:
The image is placed in {{{dest/monolithic}}}. The image is placed in `dest/monolithic`.
Line 150: Line 184:
Now you have the CD image and the kernel image. Install as described in the short-short version section. Now you have the CD image and the kernel image. Install as described in the installation section.

Debian On Intel Mac Pro

This page describes a method to install Debian on Apple Intel Mac Pro computers. It has been tested in two computer systems with a Quad-Core and dual Quad-core Xeon 5300-series "Clovertown" processors.

If you have already tried to install Debian on Intel Mac Pro, you may have noticed the Debian Installer CD doesn't mount the CD-ROM properly. Eventually, no media is available to continue with the installation.

For the inpatient, the next section explains how to install Debian with a custom Debian Installer mini CD and custom Linux kernel in few steps.

In the "Details" section I explain how I compiled the custom kernel and how I made the custom Debian Installer CD.

If you have a MacBook Pro, you may want to see MacBookPro instead.

Debian Installation

Download the [http://debian.calel.org/macpro/mini.iso Debian Installer Mini CD for Intel Mac Pro] (md5sum 023dadbea2bb5bc064d81b4fc62f184f), burn it to a CD, for example,

$ wodim -v -eject dev=/dev/cdrw -data mini.iso

Being a mini CD, it contains only .udeb packages, no .deb packages. You will need a network connection to install the base system.

Under Mac OS X, install [http://refit.sourceforge.net/ rEFIt], the EFI boot menu for Intel Mac. Easiest is to download the Mac disk image, double click on the icon and run the installer.

Still under Mac OS X, open the CD tray, insert the Debian Installer Mini CD and reboot. In the boot menu choose the penguin CD.

Boot the installer in expert mode. Install as you would in any system.

Choose to partition manually, then set the root partition bootable flag on.

During the installation of the base system, choose 'none' for the kernel to install.

Choose to continue without boot loader.

Just before finishing the installation, open a virtual terminal, <ctrl>-<alt>-<f2> for instance, and run a shell. Change the root directory with,

# chroot /target

Install grub and initramfs-tools with,

# apt-get install grub initramfs-tools

Run, {{ # grub-install /dev/sda }}}

to install GRUB on the first disk drive.

Edit /etc/apt/sources.list and add line,

 deb http://debian.calel.org/macpro etch main

Run 'apt-get update' and install the custom kernel,

# apt-get install linux-image-2.6.20-1-macpro-amd64

Say no to abort kernel installation.

Run update-grub and create /boot/grub/menu.lst.

Go back to the installation terminal, <ctrl>-<alt>-<f1> and finish the installation.

In the boot menu choose the penguin disk.

After boot, you may want to install the kernel headers,

# apt-get install linux-headers-2.6.20-1-macpro-amd64

If you like to make Debian the first boot device, under Mac OS X, edit /efi/refit/refit.conf and uncomment option legacyfirst.

If you feel uncomfortable using my custom kernel, compile your own using the mactel-linux patches as described below.

Details

(This part requires some familiarity with kernel compilation and debian packaging).

I have two 64-bit dual Quad-Core Xeon E5335 "Clovertown" machines at work. One is an HP server, the other an Apple Intel Mac Pro. Both are primarily used to run and develop Monte Carlo simulations in parallel, or otherwise.

I obviously had no trouble installing Debian Etch on the HP server. On the Mac, the first thing one needs to do is to install rEFIt under Mac OS X, open the CD tray to insert the installation CD, boot and choose the penguin.

The Debian installer boots, but it doesn't mount the CD-ROM. Eventually, no media is available to continue with the base-system installation. I tried the standard approaches given in several wikies on the subject, e.g. boot parameters like 'install noapic irqpoll acpi=force', and combinations thereof, but none really helped. I also tried a USB-key installation, only to learn Mac firmware doesn't support USB-key installations, at least in the machines I have.

Then a co-worker handed me an Ubuntu 7.04 Feisty server installation CD, which recognized the CD-ROM, mounted the CD, installed the base system, and went all the way to the finish line. After boot, the kernel would not load, though. I read several guides describing some very intricate recipes, which included the need of Live CDs and disk partition utilities. None of these approaches is really necessary, once you realize the only thing they are trying to do is to set the boot flag on the root partition.

This exercise made me realize the installer needs to attach the CD-ROM not as ATAPI IDE (ide-cd) as the Debian Installer does, but under SATA (not sure here why, nor if this statement is absolutely true.)

My plan of action was then to compile a custom kernel a la Ubuntu (which has the Mactel-linux patches included) that attaches the CD-ROM as the hardware requires, then make a new Debian Installer CD with it.

I followed closely the ["DebianInstaller/Modify/CustomKernel"] wiki and the ["DebianInstaller/BuildEtch"] wiki.

In short, kernel 2.6.20 is compiled with the mactel-linux patches, then debian-installer is used to create the mini installation image.

Custom kernel 2.6

I compiled the kernel in the HP server running Debian Etch. I used kernel version 2.6.20, downloaded from kernel.org. Untar the tarball in /usr/src.

Install subversion and get the mactel-linux kernel patches,

# svn co https://mactel-linux.svn.sourceforge.net/svnroot/mactel-linux mactel-linux

Go to trunk/kernel/mactel-patches-[kernel-version] and apply patches with,

# ./apply /usr/src/[linux-source-directory]

Install kernel-package and libncurses5-dev. Go the the kernel source directory and 'make menuconfig'.

This is the [http://debian.calel.org/macpro/config-2.6.20-1-macpro-amd64 .config] file.

Before compiling, edit Makefile and remove the EXTRAVERSION introduced by the Mactel-linux patching. Leave it blank.

Compile with,

# make-kpkg --initrd --append-to-version=-1-macpro-amd64 --revision=2.6.20 kernel_image kernel_headers

Install the custom kernel. No need to boot it in what follows.

Kernel udebs

I'm repeating here some, if not most, of the ["DebianInstaller/Modify/CustomKernel"] wiki.

Install devscripts and kernel-wedge.

Unpack the source package linux-kernel-di-amd64-2.6,

# apt-get source linux-kernel-di-amd64-2.6

Go to the directory and edit kernel-versions to match the new version, 2.6.20-1-macpro-amd64. Comment out or delete the existing line.

Check for build dependencies with dpkg-checkbuilddeps, and install dependencies as needed.

If you have a GPG signature you can do 'debchange -i' to edit the changelog with your e-mail address and some comments. The directory name will change, reflecting the new version number. You will have to go to the parent directory, then back into the new directory. You may also want to change the Maintainer: field in debian/control.stub, and define the EMAIL and GNUPGHOME environment variables in the user's .bashrc, then source it.

Build the package with debuild, or 'debuild -rfakeroot' if not root.

If you have no GPG signature, build with 'debuild binary', or 'debuild -rfakeroot binary' if not root instead.

The building may fail due to missing kernel modules. Edit module listings in modules/amd64 needed be. I copied some of the include files into the directory and put a ? at the end of the missing module. See kernel-wedge documentation for more options. I had to delete some module-list files that generated empty udebs.

If you have a GPG signature, sign the files.

You should end up with a bunch of udebs in the parent directory.

Debian Installer

Get the source,

# apt-get source debian-installer

Go to directory and check for dependencies.

Edit build/config/amd64.cfg and change KERNELVERSION. Uncomment monolithic image type.

Copy all kernel udebs into build/localudebs.

Go to build/ and build the monolithic image,

# make build_monolithic

The image is placed in dest/monolithic.

Now you have the CD image and the kernel image. Install as described in the installation section.

Good luck!