Wednesday, September 24, 2008

Fedora 9 on MacBook Pro penryn (Intel)

Pre Installation Process



  1. Macbook has a single harddisk with two partitions, first one is for the EFI, second one is for the MacOSX itself. Resize the second partition to allow some space for Linux.

  2. After step-1 you have 3 partitions on your system. Do not touch the first and second partitions, you might loose your whole data on MacOSX

  3. Install rEFIt from here http://refit.sourceforge.net/. rEFIt scans all the available partitions/harddisks/removable devices for the Boot Images. After we install rEFIt we don't have to do any special configurations etc, it will auto-detect things for us.


  4. Installation Process



    1. Insert your Fedora 9 DVD into the notebook and reboot your Mac.

    2. rEFIt asks you to choose the 'bootable DVD' or 'MacOSX' for booting. Select the 'Tux' icon with arrow keys, now you can boot into the Fedora 9 Install system

    3. Answer all the questions as usual during the install process. Be careful at the partitioning page. Choose 'create custom layout'.

      1. Select the Last partition(/dev/sda3) that we've created on disk (extreme right block on the gui). Click on 'Delete' partition (Double check that you are deleting the right partition)

      2. Now you'll have free space on your system

      3. Lets create 3 partitions from the free space.

      4. Create new partition for /boot with 200MB of space (/dev/sda3)

      5. Create new partition for swap with 2GB of space

      6. Create new partition for / with the rest of available space (/dev/sda4)



    4. After you are done with the changes click 'apply' (This step writes the requested changes to disk, double check before applying your changes)

    5. Customize your packages and proceed with the rest of the installation



    Post Installation Process



    Login to your account and perform all the package updates. (This will make sure you have all the latest packages)

    1. Wireless Setup


    Wireless doesn't work automatically due to the Broadcom wireless chipset present in the system. Do not worry, its easy to get the wireless working.

    Download the windows driver package from here . (If you have 'wine' packages installed on system its easy to extract all the driver related from files within your linux itself, if not go to a windows machine extract the drivers which are present in the .exe file and copy them over to linux).

    Extract the drivers from the .exe into /tmp/ndis (I am using /tmp/ndis for all the steps below)

    Open Terminal and go to that directory



    [nareshv@fallenAngel ]$ cd /tmp/ndis
    [nareshv@fallenAngel ]$ pwd
    /tmp/ndis/sp37950a
    [nareshv@fallenAngel ]$ ls
    bcm43xx64.cat bcm43xx.cat bcmwl564.sys bcmwl5.inf bcmwl5.sys bcmwlcoi64.dll bcmwlcoi.dll Setup.exe sp37950.cva



    Download the ndiswrapper from Subversion (currently the ndiswrapper-1.53 doesn't compile correctly on 2.6.26 and higher kernels)


    [nareshv@fallenAngel ]$ mkdir /tmp/ndiswrapper/
    [nareshv@fallenAngel ]$ cd /tmp/ndiswrapper/
    [nareshv@fallenAngel ]$ svn co https://ndiswrapper.svn.sourceforge.net/svnroot/ndiswrapper ndiswrapper
    [nareshv@fallenAngel ]$ pwd
    /tmp/ndiswrapper
    [nareshv@fallenAngel ]$ ls
    branches trunk
    [nareshv@fallenAngel ]$ cd trunk/
    [nareshv@fallenAngel ]$ ls
    CVSROOT ndiswrapper
    [nareshv@fallenAngel ]$ cd ndiswrapper/
    [nareshv@fallenAngel ]$ ls
    AUTHORS ChangeLog driver INSTALL loadndisdriver.8 Makefile ndiswrapper.8 ndiswrapper.spec README utils


    (Before compiling stuff, make sure you have the kernel-2.6.26 and kernel-devel-2.6.26 packages)


    [nareshv@fallenAngel ]$ make

    [nareshv@fallenAngel ]$ sudo make install


    Now you have installed the ndiswrapper scripts and kernel module into the system.


    Install the drivers for wireless now



    [nareshv@fallenAngel ]$ cd /tmp/ndis/sp37950a/
    [nareshv@fallenAngel ]$ sudo ndiswrapper -i bcmwl5.inf



    Verify that the drivers are installed. You should see something like below.


    [nareshv@fallenAngel ~]$ sudo /usr/sbin/ndiswrapper -l
    bcmwl5 : driver installed
    device (14E4:4328) present (alternate driver: ssb)



    Setup the kernel modules to be autoloaded.


    [nareshv@fallenAngel ~]$ sudo /usr/sbin/ndiswrapper -ma
    module configuration information is stored in /etc/modprobe.d/ndiswrapper
    [nareshv@fallenAngel ~]$ sudo /usr/sbin/ndiswrapper -mi
    module configuration information is stored in /etc/modprobe.d/ndiswrapper
    [nareshv@fallenAngel ~]$ sudo /usr/sbin/ndiswrapper -m
    [nareshv@fallenAngel ~]$ cat /etc/modprobe.conf
    alias wlan0 ndiswrapper


    Load the kernel module


    [nareshv@fallenAngel ]$ sudo /sbin/modprobe ndiswrapper


    Check the wlan0 device


    [nareshv@fallenAngel ]$ /sbin/iwconfig wlan0


    Now the NetworkManager should detect your wifi device and shows the list of available devices. Select your network and enter the passcode (if any).

    Bluetooth



    Just works


    Audio



    Just works. Run this command.


    [nareshv@fallenAngel ]$ echo "options snd_hda_intel model=mbp3" >> /etc/modprobe.d/sound



    Make sure to add yourself to the 'pulse-rt,pulse,pulse-access' groups from 'system-config-users' command.

    Ethernet card



    Just works

    Nvidia Graphics



    Install the nvidia drivers from either freshrpms (http://freshrpms.net) or Livna repositories

    Keyboard special keys / Backlight



    Install the pommed rpm from the following location.



    [nareshv@fallenAngel ]$ cd /etc/yum.repos.d

    [nareshv@fallenAngel ]$ wget http://www.diffingo.com/downloads/diffingo-repo/diffingo.repo

    [nareshv@fallenAngel ]$ sudo yum install pommed



    (Edit the /etc/pommed.conf to suit your needs)

    Touchpad/Tapping




    This currently works out of the box (all the tapping features) on 2.6.27 and higher kernels. For this you can just upgrade your kernel from the 'fedora-rawhide' repository.

    I've filed a ticket with Redhat Bugzilla to get this driver for 2.6.26 and lower kernels, but the
    the touchpad is gonna work only from Fedora 10, See this ticket for reference

    In case someone interested in trying out the bcm5974 driver for the 2.6.26 and lower kernels, i have created a dkms package for RPM based systems. Give it a try, let me know if things work for you.


    Add the following lines to your xorg.conf so that synaptics driver can help
    your touchpad work like that in the macosx. Here is mine looks like.



    # nvidia-xconfig: X configuration file generated by nvidia-xconfig
    # nvidia-xconfig: version 1.0 (buildmeister@builder63) Wed Aug 27 13:20:19
    # PDT 2008

    # Xorg configuration created by pyxf86config

    Section "ServerLayout"
    Identifier "Default Layout"
    Screen 0 "Screen0" 0 0
    InputDevice "Keyboard0" "CoreKeyboard"
    InputDevice "Synaptics Touchpad" "CorePointer"
    EndSection

    Section "Files"
    ModulePath "/usr/lib/xorg/modules/extensions/nvidia"
    ModulePath "/usr/lib/xorg/modules"
    EndSection

    Section "Module"
    Load "synaptics"
    Load "extmod"
    Load "dbe"
    Load "glx"
    EndSection

    Section "InputDevice"
    Identifier "Synaptics Touchpad"
    Driver "synaptics"
    Option "SendCoreEvents" "true"
    Option "Device" "/dev/input/mice"
    Option "Protocol" "auto-dev"
    Option "SHMConfig" "true"
    Option "LeftEdge" "10"
    Option "RightEdge" "1200"
    Option "TopEdge" "10"
    Option "BottomEdge" "370"
    Option "FingerLow" "10"
    Option "FingerHigh" "20"
    Option "MaxTapTime" "180"
    Option "MaxTapMove" "220"
    Option "SingleTapTimeout" "100"
    Option "MaxDoubleTapTime" "180"
    Option "LockedDrags" "off"
    Option "MinSpeed" "1.10"
    Option "MaxSpeed" "1.30"
    Option "AccelFactor" "0.08"
    Option "TapButton1" "1"
    Option "TapButton2" "3"
    Option "TapButton3" "2"
    Option "RTCornerButton" "0"
    Option "RBCornerButton" "0"
    Option "LTCornerButton" "0"
    Option "LBCornerButton" "0"
    Option "VertScrollDelta" "20"
    Option "HorizScrollDelta" "50"
    Option "HorizEdgeScroll" "0"
    Option "VertEdgeScroll" "0"
    Option "VertTwoFingerScroll" "1"
    Option "HorizTwoFingerScroll" "1"
    EndSection


    Section "InputDevice"

    # keyboard added by rhpxl
    Identifier "Keyboard0"
    Driver "kbd"
    Option "XkbModel" "pc105"
    Option "XkbLayout" "us"
    EndSection

    Section "Monitor"
    Identifier "Monitor0"
    VendorName "Unknown"
    ModelName "Unknown"
    HorizSync 30.0 - 110.0
    VertRefresh 50.0 - 150.0
    Option "DPMS"
    EndSection

    Section "Device"
    Identifier "Videocard0"
    Driver "nvidia"
    EndSection

    Section "Screen"
    Identifier "Screen0"
    Device "Videocard0"
    Monitor "Monitor0"
    DefaultDepth 24

    Option "AllowGLXWithComposite" "True"
    Option "AddARGBGLXVisuals" "True"
    Option "TripleBuffer" "True"
    Option "UseDamageEvents" "True"
    Option "UseRandR" "True"
    Option "RenderAccel" "True"
    Option "NoPowerConnectorCheck" "False"
    Option "RandRRotation" "True"
    Option "DynamicTwinView" "True"
    Option "OnDemandVBlankInterrupts" "True"
    Option "ConnectToAcpid" "True"
    Option "EnableACPIHotkeys" "True"
    Option "UseEvents" "True"
    Option "ExactModeTimingsDVI" "True"
    Option "NvAGP" "0"

    SubSection "Display"
    Viewport 0 0
    Depth 24
    EndSubSection
    EndSection


    Section "Extensions"
    Option "Composite" "Enable"
    EndSection




    Now upgrade your kernel to 2.6.27 as it allows all the above changes in xorg.conf come true.


    sudo yum --enable-repo=fedora-rawhide update kernel kernel-devel


    After kernel upgrade reboot your box and then recompile the ndiswrapper too (its easy, no other changes required)



    cd /tmp/ndiswrapper/trunk/ndiswrapper && make uninstall && make && make install && modprobe ndiswrapper



    Remove the 'applesmc' driver , its causing some problems with the wireless in 2.6.27. Also you see the following wierd error lines in /var/log/messages. Not sure if they are harmless. But removing the applesmc make them go away.


    echo "applesmc" >> /etc/modporbe.d/blacklist

    rmmod applesmc


    Suspend



    Just works

    Hibernate



    Fails sometimes.

    Microphone



    Haven't tested

    iSight (webcam)



    Just works.

    Install this package


    bash$ sudo yum install isight-firmware-tools


    Test the camera using 'cheese' or 'tvtime'


    bash$ sudo yum install cheese


    References



    Below documentations are verymuch useful in case of any problems.

    [1] Fedora : http://www.mactel-linux.org/wiki/Fedora8OnMacBookSantaRosa
    [2] Ubuntu : https://help.ubuntu.com/community/Macbook_Air
    [3] Wifi Drivers : ftp://ftp.hp.com/pub/softpaq/sp37501-38000/sp37950.exe

10 comments:

  1. i'm using ndiswrapper rpm from livna (running well so far). you can use broadcom driver from dvd supplied with macbook too.

    isight (webcam) is just work, try with cheese (webcam application, already on yum repo).

    i'm not try kernel 2.6.27 yet, but in newest fedora kernel (not rawhide) 2.6.26.3-29.fc9.x86_64 applesmc is running well. see my respond in bugzilla.

    ReplyDelete
  2. Hi Naresh,

    I installed FC6 on my MacBook Air. I have problems that it seems to overheat easily, which I think has to do with the applesmc driver not recognizing my Macbook and (therefore) the fan not kicking in early enough.

    Do you know how I can update this silly driver? Apparently the driver needs a patch from the Mactel list. Or something. I never did a kernel compile and are very uncomfortable with that. Is there any way I can persuade the FC people to add the patch to the FC9 release?

    ReplyDelete
  3. Oh, I am running kernel 2.6.26.6-79.fc9.x86_64.

    ReplyDelete
  4. Marco,

    I guess Fedora 9 Already supports the Latest Macbook versions.

    You can do these simple things to identify

    1. Remove the applesmc driver

    root # grep applesmc /proc/modules
    applesmc 90180 0 - Live 0xffffffffa0d4d000
    hwmon 68408 1 applesmc, Live 0xffffffffa0d3b000
    input_polldev 69392 1 applesmc, Live 0xffffffffa0d29000

    root # rmmod applesmc

    2. Load the applesmc driver

    root # modprobe applesmc

    3. Watch the kernel message log, to identify that your macbook air is detected correctly (you should not see any errors from applesmc driver).

    root # dmesg | tail -11
    applesmc: Apple MacBook Pro 4 detected:
    applesmc: - Model with accelerometer
    applesmc: - Model with light sensors and backlight
    applesmc: - Model with 12 temperature sensors
    applesmc: device has already been initialized (0xe0, 0x00).
    applesmc: device successfully initialized.
    applesmc: 2 fans found.
    input: applesmc as /devices/platform/applesmc.768/input/input13
    Registered led device: smc::kbd_backlight
    applesmc: driver successfully loaded.
    applesmc: light sensor data length set to 6

    4. Run 'sensors' command to see all the sensors

    root # sensors

    applesmc-isa-0300
    Adapter: ISA adapter
    Left side :2004 RPM (min = 2000 RPM)
    Right side :1993 RPM (min = 2000 RPM)
    temp1: +33.0°C
    temp2: +48.5°C
    temp3: +47.0°C
    temp4: +57.5°C
    temp5: +48.0°C
    temp6: +70.0°C
    temp7: +55.0°C
    temp8: +47.0°C
    temp9: +41.2°C
    temp10: +42.5°C
    temp11: +40.5°C
    temp12: +35.5°C

    (If applesmc is not patched correctly, some of the sensors will timeout)

    ReplyDelete
  5. Hi there!

    Thanks to all who take the time to write this stuff!

    Just spent the weekend successfully installing a triple boot on my brand new Macbook Pro (late 2008). Now I have mac os, ubuntu (64-bit) and windows home premium (also 64 bit) on my mac. Just finishing off the ubuntu install (with propriertry drivers.

    Here is what I did (although, as it took a bit of experimenting - removing and reinstalling again and again 'till I got it right it wasn't the order I did it in myself). But it should work, let me know if anyone else succedes!

    First I created 2 new partitions, 1 for ubuntu and 1 for windows. I used the diskutil resizeVolume option. I had a 320 GB disk so the command was:

    diskutil resizeVolume /dev/disk0s2 220G "UFS" "Linux" 25G "MS-DOS FAT32" Windows 0G

    Aparently "Linus" as a file system type isn'r supported anymore. The 0G at the end tells diskutil to use all the remaining space apparently. I got around 50 GB.

    I then installed rEFIt (as mentioned above). They have an installer now so it was just a question of double clicking and following the wizard.

    I then shut down the machine and rebooted with the windows CD (holding down the alt key). Did the normal windows install (picking out the last partition - 50GB). This process required 2 reboots and each time I held down the alt key and selected the windows disk (this is the boot camp menu and not rEFIt).

    Now came the tricky part. I rebooted with the ubuntu install disk (again holding down the alt key). I chose to run ubuntu from the DVD (not the install option). You come up in "live mode".

    In ubuntu "live" mode I opened a terminal window and formatted my linux partition (the one formated UFS) as ext3.

    sudo mkfs -t ext3 /dev/sda3

    I did this seperately (and not as part of the install so as not to let install write to the partition table - at one point yesterday I had ubuntu working but not windows and vice versa - ubuntu and grun was sabotaging my windows boot and windows wouldn't repair it afterwards!).

    I then double clicked on the install icon in the ubuntu live desktop.

    I then followed the wizard. Points to note.

    Use manual for setting up your partition. The only thing I did here was edit /dev/sda3 and set it to "/" and ext3 (without the format my disk option! We have already formatted it!).

    At the last stage, before we install I clicked advance. Her we have the install boot option. I changed the place where the installer suggested (I think it was hb0) to my linux partition /dev/sda3).

    I then installed ubuntu.

    As a belt and braces thing I (still in ubuntu live mode) opened a terminal and removed the grub util itself and then windows from the grub menu (I guess rEFIt uses this somehow):

    cd /tmp
    mkdir ubuntu
    sudo mount /dev/sda3 /tmp/ubuntu
    sudo chroot /tmp/ubuntu
    sudo apt-get remove grub
    cd /boot/grub
    vi menu.lst

    commented out the following (this is how it looked after the edit):

    # This entry automatically added by the Debian installer for a non-linux OS
    # on /dev/sda4
    #title Windows Vista/Longhorn (loader)
    #root (hd0,3)
    #savedefault
    #chainloader +1


    I then closed the terminal and rebooted.

    I then had a triple boot mac!

    I finished of the windows install by inserting the first mac disk and running setup (to install the apple boot camp drivers - I could then use the wireless).

    I then installed a well known free anti-virus program!!

    I am now finishing off the ubuntu install (with the proprietry divers - the Hardware Drivers meny option under the system Administration menu).

    I don't know whether this will work on a macbook (I have a pro). The pro supports 64-bit windows whish supports EFI (or so I have read). I don't know whether the macbook can take 64-bit windows (although it seems to have the same processor type so I guess it could).

    Anyway good look and let me know how you get on!

    /paul

    ReplyDelete
  6. Hi Naresh,
    I was trying to install F10 from an iso on a MacPro wth a second disk. Refi was installed.

    I gave the whole second disk to the installer using default partitioning. Bootloader was put onto the boot partition. Installation was a "success".

    On reboot the shutdown was normal until the file system. There was a bunch of error messages.

    Then refi saw the OS but the boot resulted in Missing OS.

    I have tried manual partitioning etc many many times and the results were the same.

    Any help will be most appreciated.

    ReplyDelete
  7. Hi Vincent,

    You are trying to boot from a external harddisk correct ? If you have given the /boot partition on the second harddisk itself, then make sure that the partition is marked bootable. This might help http://fedoraproject.org/wiki/How_to_create_and_use_Live_USB#Partition_isn.27t_marked_bootable.21

    Also, if you want to try out Fedora-10 with the Persistent OS on the external disk, you can try 'fedora on usb stick' http://search.yahoo.com/search?p=fedora+on+usb+stick approach. It works :-)
    ~Naresh.

    ReplyDelete
  8. Sorry I forgot to say that the second drive is internal.
    I checked the /boot and it was flagged bootable. However, it was in ext3. Could this be the problem? The installer would not accept vfat as format for the boot partition.
    Incidentally, I followed the instructions in the Fedora site to make a USB on Windows, but it cannot be booted either.

    ReplyDelete
  9. /boot should be a ext2/3 partition (ext4 not yet) for booting. Looks like you need to create a GPT/MBR on your second internal harddisk. see this http://refit.sourceforge.net/myths/ Title => (Fact: You need a MBR partition table to use LILO/GRUB)

    ReplyDelete
  10. I have managed to install and boot Ubuntu 8.04. I think the problem was that using the default install of rEFIt the Linux drivers were not intalled. I stumbed onto this by doing custom installation. I also did bless etc.

    I used manual partitioning when installing Ubuntu..

    I still have to try Fedora and the USB stick.

    Thanks.

    ReplyDelete