On the Mac Mini model from late 2012 (aka 6,2) the default ethernet driver of Proxmox VE 2.3 doesn’t support the new broadcom interface. It’s necessary to build the driver from source.
This is a guide to build the “tg3”-driver from source on a Proxmox VE 2.3 installation.
Contents
1. Prerequisites
For a smooth installation you will need the following:
- A working computer with cd-writer and internet connection
- CDs and usb-stick
- External cd/dvd-drive
- Proxmox VE 2.3 Image
- Debian squeeze cd1 image
- tg3 kernel module sources
- Proxmox VE 2.3 kernel headers for kernel 2.6.32-18
2. Install system
Prepare boot-device
Burn the Proxmox VE 2.3 image to a cd.
Boot
Proxmox VE 2.3 uses the stable version of the debian linux distribution, aka squeeze. The provided kernel needs additional boot parameters to be able to handle the modern Mac Mini.
Enter the following boot parameters:
linux noapic
Proceed with the installation and enter user and system details according to your needs.
Bootloader
After the installation the bootloader configuration must be changed.
- Edit “/etc/default/grub”
sudo nano /etc/default/grub
- Add to the parameter “GRUB_CMDLINE_LINUX_DEFAULT” “noapic”
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
… to …
GRUB_CMDLINE_LINUX_DEFAULT="noapic quiet"
- Afterwards run
update-grub2
- And you’re done with the base system installation.
3. Ethernet
By default the provided kernel module for the broadcom ethernet device doesn’t support the new interface used in Mac Mini Late 2012.
It’s necessary to download and compile the module “tg3”.
Build-tools
First of all we’re going to need the “build-tools”. This package contains all tools required for compiling a source file.
- Burn the Debian Squeeze CD1 to a cd.
Or copy it to an usb-stick:
dd if=debian.iso of=/dev/sdb
Warning: Be sure that you write the image to the correct device. Otherwise you may severely harm your system or lose data!
Find your usb-stick with one of the following commands:
blkid -o list lsblk
- Boot your proxmox machine
- Insert the Debian Squeeze CD1 or the usb-stick containing this image and mount it
CD:
mount /media/cdrom
USB-Stick
mount /dev/sdb1 /mnt
- Change your location to the mounted device
cd /mnt
- Install all packages of the group “build-essential” (See 4. Appendix > Package list)
Packages are installed with “dpkg”:
dpkg -i package.deb
Kernel headers
Now we need to install the kernel headers. These are required to build kernel modules for the running kernel.
The Proxmox VE installation comes with a modified kernel 2.6.32-18
- First check your kernel version
uname -r
- Download the kernel headers according to your kernel verison from
http://download.proxmox.com/debian/dists/squeeze/pve/binary-amd64/
Look for “pve-headers-2.6.32-18-pve_2.6.32-88_amd64.deb”. - Save this package to your usb-stick or burn it to a cd. Install this package as described in“Build-tools”.
If you use a CD wait with burning until you have downloaded the Driver in the next section.
Driver
As last step before compiling we will need the actual driver itself.
- Download the driver sources for “Linux” from
http://www.broadcom.com/support/ethernet_nic/netxtreme_desktop.php - Extract the downloaded package
tar -xzf tg3-3.124c
- Save this package to your usb-stick or burn it to a cd.
- Mount your media as descriped in “Build-tools”.
- Navigate to your extracted driver. For example:
cd /mnt/tg3-3.124c
- Complie the driver
make tg3_flags.h make make install
- Reload the driver
rmmod tg3 modprobe tg3
- Now there should appear an additional interface, usually “eth0”, by issuing:
ip addr show
4. Appendix
Package list
The following packages must be installed. The list is sorted by dependency, packages which are further indented are dependencies of a package above.
For example “libc-dev-bin” needs “libc6”, therefore “libc6” must be installed before “libc-dev-bin”. “libc6-dev” requires “libc-dev-bin” and “linux-libc-dev” to be previously installed.
- libc6-dev
- libc-dev-bin
- libc6
- linux-libc-dev
- libc-dev-bin
- dpkg-dev
- base-files
- binutils
- libstdc++6
- libunwind7
- zlib1g
- libstdc++6
- libdpkg-perl
- libtimedate-perl
- perl
- libtimedate-perl
- gcc
- cpp
- cpp-4.4
- gcc-4.4-base
- libmpfr4
- libgmp3c2
- cpp-4.4
- gcc-4.4
- libgomp1
- libunwind7-dev
- cpp
- g++
- g++-4.4
- libstdc++6-4.4-dev
- libstdc++6
- libstdc++6-4.4-dev
- g++-4.4
- make
- build-essential
Dependencies of “build-essential” can also be found under:
http://packages.debian.org/squeeze/build-essential