MacBookPro

From PardusWiki

Jump to: navigation, search

This article tries to tell how to install Pardus to MacBook Pro 3rd. (Santa Rosa, Nvidia GPU) gen.

Contents

[edit] Preparation

For installing dual boot with MacOSX and Pardus you can resize your disk and get free spaces for Pardus installation; there is a tool "diskutil" in MacOSX, but don't forget it is not a toy - you can lose your data -

[edit] Getting Disk Informations

$ diskutil resizeVolume disk1s2 limits
For device disk1s2 USB1:
       Current size:   99686268928 bytes
       Minimum size:   1118990336 bytes
       Maximum size:   99686268928 bytes

It shows (with limits option) you can resize your current disk at least 11~GB. So for resizing it as 75GB;

$ diskutil resizeVolume disk1s2 75G
Started resizing on disk disk1s2 USB
Verifying
Resizing Volume
Adjusting Partitions

Finished resizing on disk disk1s2 USB
WARNING: You must now reboot!

After that you must have a 25G free space on your hard drive.

For multi-boot you also need to install a boot manager from your current Mac OSX. You can use rEFIt, follow the instructions on the project site.After installing rEFIt you can use any bootable device (usb-disk,cd-rom etc.) to boot your MacBook Pro.

[edit] Installation

Install Pardus as you wish, but don't erase the first two partition (first one is refit, second one macosx) and dont forget to install bootloader to pardus installed partition.

[edit] Configuring

You can use following settings. Some utils at the end of the file.

[edit] Key Settings

For Turkish Q Keymap you can use the following Xmodmap configuration;

keycode 116 = ISO_Level3_Shift
keycode 115 = Super_L
keycode 108 = Delete
keycode 49 = less greater NoSymbol NoSymbol bar
keycode 94 = quotedbl backslash
keycode 204 = F13

Also for shortcuts you can use xbindkeys with the following configuration;

"setkeybright minus"
  Mod5 + F9

"setkeybright plus"
  Mod5 + F10

"setbright minus"
  Mod5 + F1

"setbright plus"
  Mod5 + F2

[edit] AirPort

With current madwifi you can use the AirPort ver well. But sometimes it gets "wifi: overrun FIFO errors";

Workaround :

# iwpriv ath0 bgscan 0

To start at boot add to /etc/conf.d/local.start

[edit] Sound Card

To get work your microphone you can use "mbp3" option with snd-hda-intel; edit /etc/modules.d/alsa and insert

options snd-hda-intel model=mbp3

and then restart the machine ..

[edit] Utils

You will need some utilities to use your MacBook Pro efficiently..

[edit] Keyboard Light Setting

You can use the following C code with gcc -o setkeybright setkeybright.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TARGET "/sys/devices/platform/applesmc/leds:smc:kbd_backlight/brightness"

int limited(int inp) {
    if (inp<0) return 0;
    if (inp>255) return 255;
    return inp;
}

int main(int argc, char *argv[]) {
    int current,new;
    char tempC[10];
    FILE *fp = fopen(TARGET,"r");
    fread(tempC,4,1,fp);
    fclose(fp);
    fp = fopen(TARGET,"w");
    current=atoi(tempC);
    printf("Current : %d\n",current);
    if (argc==2) {
        if (!strcmp(argv[1],"plus"))
            new = limited(current + 10);
        if (!strcmp(argv[1],"minus"))
            new = limited(current - 10);
        if (!strcmp(argv[1],"set") && argc==3)
            new = limited((int)argv[2]);
        printf("New : %d\n",new);
        fprintf(fp,"%d",new);
    }
    else printf("Usage : %s plus or minus\n",argv[0]);
    fclose(fp);
    return 0;
}

[edit] LCD Backlight Settings

You can use the following C code with gcc -O2 -o setbrigth setbright.c

#include <stdio.h>
#include <sys/io.h>
#include <stdlib.h>
#include <string.h>

int limited(int inp) {
    if (inp<0) return 0;
    if (inp>15) return 15;
    return inp;
}

int main(int argc, char *argv[]) {
    int new;
    if (ioperm(0xB2, 0xB3, 1) < 0) {
        perror("ioperm failed (you should be root).");
        exit(1);
    }
    outb(0x03, 0xB3);
    outb(0xBF, 0xB2);
    char t = inb(0xB3) >> 4;
    new = t;
    printf("Current: %d\n",new);
    if (argc >= 2) {
        if (!strcmp(argv[1],"minus"))
            new = limited(t - 1);
        if (!strcmp(argv[1],"plus"))
            new = limited(t + 1);
        if (!strcmp(argv[1],"set") && argc == 3)
            new = limited(atoi(argv[2]));
        printf("New: %d\n",new);
        outb(0x04 | (new << 4), 0xB3);
        outb(0xBF, 0xB2);
    }
    else printf("Usage : %s plus or minus\n",argv[0]);
    return 0;
}
Personal tools