Maintenance reference: Difference between revisions
No edit summary |
No edit summary |
||
Line 46: | Line 46: | ||
'''Development setup''' | '''Development setup''' | ||
* # install eclipse and android studio manually from zips into development folder | * # install eclipse and android studio manually from zips into development folder | ||
** use shared eclipse settings, to avoid problems like [http://stackoverflow.com/questions/13893942/eclipse-c-formatter-puts-new-line-before-method-identifiers this]. | |||
* # unzip latest boost into development folder | * # unzip latest boost into development folder | ||
** # m@wimpy:~/development/boost_1_57_0$ ./bootstrap.sh | ** # m@wimpy:~/development/boost_1_57_0$ ./bootstrap.sh |
Revision as of 19:46, 11 May 2015
Reference
Ubuntu 14.10 setup |
---|
Throw Ubuntu on a USB stick following ubuntu instructions.
Reboot, select to boot the thumb in BIOS, install, checking the [download as you go] and [install 3rd party stuff] boxes. Things to install ASAP:
sudo apt-get install i3 i3lock i3status suckless-tools dunst openssh-server cifs-utils smbclient synergy arandr ubuntu-restricted-extras exfat-fuse exfat-utils hfsprogs
sudo apt-get install openssh-server # default is ok but see /etc/ssh/sshd_config for details cd ~m/.ssh scp m@bitpost.com:/home/m/.ssh/id_rsa_3072_nopswd . ln -s id_rsa_3072_nopswd id_rsa
Development setup
sudo apt-get install emacs build-essential automake libtool libssl-dev libbz2-dev python-dev curl libcurl4-openssl-dev php5-common php5-curl php5-cli php5-json php5-readline kdiff3
JAVA_HOME="/usr/lib/jvm/java-7-oracle/jre/bin/java" # actually, use the path from above, of course |
Ubuntu and shitty Seiki |
---|
AMD
Radeon driver sucks, won't go over 1080p; and Dune (AMD chipset) overscans so you can't see the edge. The only fix I found was to use xrandr. It kinda sucks though bc it's a resize solution that blurs all pixels. Cest la vie. xrandr --output HDMI-0 --set underscan on xrandr --output HDMI-0 --set "underscan hborder" 40 --set "underscan vborder" 22 Let's try the binary ATI driver. lspci -vvnn | grep VGA [...] Advanced Micro Devices, Inc. [AMD/ATI] RS780 [Radeon HD 3200] [1002:9610] |
nvidia
For 4k video on an nvdia chipset (like wimpy), first get Ubuntu to use nvidia's driver:
Next, here is the "magic super-secret" Seiki 4K goo that should go in xorg.conf (if needed). It's from: http://ubuntuforums.org/showthread.php?t=2164924 See /etc/X11/xorg.conf for the full details: # MDM added based on http://ubuntuforums.org/showthread.php?t=2164924 # Modeline "3840x2160" 307.00 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync # MDM 2015/02/12 A more recent one from: http://ubuntuforums.org/showthread.php?t=2164924&page=3&s=b53cb9ea1b751f4b9f2fe1aadfb6f43f Modeline "3840x2160" 296.70 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync Modeline "1920x1080" 297 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync To get a full output of what the hell X is doing: scite /var/log/Xorg.0.log & # Or create one if needed X -logverbose 6 :2 # this crashed my machine but did produce a log first scite /var/log/Xorg.2.log & |
Ubuntu repo management |
---|
To see what repos Ubuntu is currently using:
cat /etc/apt/sources.list |
Ubuntu upgrade from command line |
---|
To update ubuntu from an i3 terminal:
sudo apt-get update # Fetches the list of available updates sudo apt-get upgrade # Strictly upgrades the current package sudo apt-get dist-upgrade # Installs updates (new ones) |
Ubuntu synaptic driver (Macbook Pro trackpad) |
---|
su - synclient -l # lists all params synclient PalmDetect=1 # temporarily change settings
root@wallee:~# emacs /etc/X11/xorg.conf.d/60-synaptics.conf |
bitpost LAN IP addresses |
---|
All IP address management happens on bitpost, via dnsmasq, which, rocks.
Initially set up bitpost with DHCP as follows:
config_eth0="dhcp" config_eth1="192.168.22.1/24" Turn DHCP-assigned IP into static as follows:
dhcpcd[3867]: eth0: carrier acquired dhcpcd[3867]: DUID 00:01:00:01:1a:c3:6f:da:e0:3f:49:a3:4b:d9 dhcpcd[3867]: eth0: IAID 49:a3:4b:d9 dhcpcd[3867]: eth0: rebinding lease of 66.57.227.83 dhcpcd[3867]: eth0: leased 66.57.227.83 for 86400 seconds dhcpcd[3867]: eth0: adding route to 66.57.226.0/23 dhcpcd[3867]: eth0: adding default route via 66.57.226.1
config_eth0="66.57.227.83/23" routes_eth0="default via 66.57.226.1"
We will monitor and log success here to see how it goes.
|
view dnsmasq IP leases |
---|
cat /var/lib/misc/dnsmasq.leases |
Raspberry Pi 2 and 4k |
---|
You can override settings in /flash/config.txt; here's how, from here:
mount -o remount,rw /flash nano /flash/config.txt # Make your changes, then ctrl+x to save. mount -o remount,ro /flash reboot Settings for 4k (from here)... disable_overscan=1 hdmi_ignore_edid=0xa5000080 hdmi_cvt 3840 2160 30 framebuffer_width=3840 framebuffer_height=2160 hdmi_group=2 hdmi_mode=87 hdmi_pixel_freq_limit=400000000 max_framebuffer_width=3840 max_framebuffer_height=2160 I couldn't get 4K to stick in OpenELEC tho (except for the splash screen(!))... Settings->System->System->Video->Refresh->30Hz Settings->System->System->Video->Resolution->3840x2160 (it won't come up, just drops back to 1080p.. just as well, video at 30fps sucks...) And to overclock the Pi 2 (from here): # OVERCLOCKING TO 1.1 GHz, EXTREME # default is 700 # this will NOT void the warranty :-) arm_freq=1000 sdram_freq=500 core_freq=500 over_voltage=6 temp_limit=80 #Will throttle to default clock speed if hit. # # there is also the "turbo" thingee (that "voids warranty", hot!!) #force_turbo=1 |
Updating mediawiki installation |
---|
cd /var/www/localhost/htdocs/mediawiki emacs LocalSettings_redirector.php (to hardcode each site) php maintenance/update.php (repeat for each site) emacs LocalSettings_redirector.php (to reset dynamic behavior) |
Kodi on Ubuntu 14.10 setup |
---|
Um.... fuck this... install OpenELEC!
First follow the Ubuntu install, leaving out packages that are not needed. Recommend that you select "log in automatically" since it will be a shared media center install. Then:
sudo apt-get install python-software-properties pkg-config software-properties-common sudo add-apt-repository ppa:team-xbmc/ppa sudo apt-get update sudo apt-get install kodi |
Chroot into gentoo from (say) ubuntu |
---|
# These may already be done mount /mnt/gentoo cp -L /etc/resolv.conf /mnt/gentoo/etc/ mount -t proc none /mnt/gentoo/proc mount --rbind /dev /mnt/gentoo/dev chroot /mnt/gentoo /bin/bash # ** NOW IN CHROOT ** env-update source /etc/profile export PS1="(chroot) $PS1" # GET TO IT! :-) |
Disabling xscreensaver |
---|
emacs ~/.xscreensaver timeout: 12:00:00 # the max timeout is 12 hours crontab -e # So... I have .xscreensaver set to max delay (12 hours) # and I call this every ten hours to restart the idle timer. * */10 * * * /usr/bin/xscreensaver-command --deactivate >/dev/null |
linux software raid [mdraid] |
---|
mdraid has not received the polish it needs to Just Work. It has serious flaws that after hours of learning, still leave you unsure and hanging and most likely bailing out of the entire process. But it is the best thing we have on the planet, so let’s distill it down to the essentials.
mdadm --misc --zero-superblock /dev/sdd && dd if=/dev/zero of=/dev/sdd bs=1M count=100 && mdadm --examine /dev/sdd mdadm: No md superblock detected on /dev/sdd.
mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdd /dev/sde mdadm: size set to 3906887488K mdadm: automatically enabling write-intent bitmap on large array Continue creating array? yes mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. watch -n 1 cat /proc/mdstat # wait 400 FUCKING MINUTES for a GODDAMNED EMPTY 4TB DRIVE to sync with ANOTHER empty 4TB drive, FUCKSAKE # IF YOU REBOOT BEFORE THAT, IT WILL BE AS IF YOU NEVER SET UP A RAID
mdadm --detail --scan >>/etc/mdadm.conf rc-update add mdraid boot # start then stop then start the /etc/init.d/mdraid service, make sure this works to restore your raid (check /proc/mdstat) # format /dev/md0 as ext4 and set up an auto mount point in /etc/fstab # reboot and pray
madadm -A /dev/sdd # I THINK! it's all very iffy. Which SUCKS. |
Adding a new drive (with testing) |
---|
To add a new drive:
# install smartctl tools smartctl -c /dev/sdf # to peek at available tests and how long they typically take to run smartctl -t short /dev/sdf watch -n 3 smartctl -l selftest /dev/sdf # until success, takes about 1 minute # if you're feeling ambitious, rerun with [-t long]
/dev/disk/by-label/box-type-sizename /my-mount-location ext4 noatime 0 2
|
Media Center drives |
---|
8 bay SATA tower houses these drives:
|
There are also these drive partitions:
|
Reset 1020 cable modem so it grants a real IP address (not private) |
---|
Resetting things sometimes has to be done in this precise order:
|
thedigitalmachine LAN IP addresses |
---|
We want all IP address management to happen on the Buffalo DD-WRT router, as much as possible.
Ideally, static IPs will be served up to every known box based on MAC address. Then no matter what OS is booted, the machine will have the same name and IP address. The router is slick, it can do it, but be careful to Save AND Apply changes there. DHCP dynamic assignment IP range is 2...99, keep static IPs out of this range. every [/etc/hosts] should include this block: # ======================================================================================== # MDM My LAN names v10 192.168.21.1 tdm 192.168.21.200 buffalo # hardcoded Buffalo DD-WRT router IP # MDM Buffalo DHCP-provided static IPs assigned by MAC addresses # It's important to assign static IPs via router # It will always give the same IP regardless of OS # And it has the ability to provide the names via local DNS (I think!) # NOTE THAT 192.168.21.2-99 are RESERVED for dynamic IPs 192.168.21.132 wimpy # F4-6D-04-25-9C-60 192.168.21.133 wallee-wireless # macbook pro 00:26:bb:07:d3:7d 192.168.21.134 wallee # macbook pro 00:26:4a:18:ed:58 192.168.21.140 babe # andrea's ipad2 04:54:53:3A:7B:2A 192.168.21.179 dune # 00:1f:e2:07:2d:0e # TO BE ADDED UPDATED AND VERIFIED AS NEEDED # NOTE THAT 192.168.21.2-99 are RESERVED for dynamic IPs 192.168.21.4 darthfun # mike's iphone 00:26:B0:99:7F:7E 192.168.21.5 eetee # ipod touch 8gb 00:26:b0:59:4a:94 192.168.21.6 sweepea # girl's d-link card 00:1e:58:96:3a:2a 192.168.21.7 wiihii # wii 00:21:47:ba:c8:c2 192.168.21.8 iroku # roku wired 00:0d:4b:49:a6:30 192.168.21.9 irokit # roku wireless 00:0d:4b:49:a6:31 192.168.21.10 wynter # bailey's win7 laptop 00:11:F5:89:7B:00 192.168.21.11 hermione # andrea's dell inspiron 00:24:D6:78:42:A8 192.168.21.12 toothless # wren's eee 1C:4B:D6:A3:E1:28 192.168.21.13 dunno # 00:0f:b5:f6:99:d2 192.168.21.16 jackwhite # wren's iphone 54:26:96:BB:A4:CD 192.168.21.193 hermione-wired 192.168.21.194 toothless-wired # MAC address 48:5B:39:2B:8F:E8 192.168.21.195 6c-blade1 # ======================================================================================== |
Adding a user to the server |
---|
su - useradd #newuser# -m -G wheel(,etc) # Other possibilities (likely not needed): ## only needed if you want them to have their own group (otherwise use "users" group) #groupadd #newuser# ## the additional groups here are optional #useradd #newuser# -m -g #newuser# -G users,wheel,audio,video,games,dvd,usb -s /bin/bash ## Only needed if you didn't use [-m] option #mkdir /home/#newuser# #chown #newuser#:users /home/#newuser# passwd #newuser# # grant ssh access by adding to "AllowUsers" em /etc/ssh/sshd_config /etc/init.d/sshd restart # grant samba access to home folder # it's already set up in /etc/samba/smb.conf # but the user must be manually added to samba # use same pwd as before to sync them smbpasswd -a #newuser# /etc/init.d/samba restart # YOU PROBABLY HAVE TO RESTART ANY STUPID WINDOWS BOX before it will see things correctly! crazy # you can try this in Windows but it didn't work for me: # net use # net session \\samba.server.ip.address /delete |
Check disk speed |
---|
To check SATA capability:
bitpost ~ # hdparm -I /dev/disk/by-label/reservoir-3g-mel |grep -i speed * Gen1 signaling speed (1.5Gb/s) * Gen2 signaling speed (3.0Gb/s) * Gen3 signaling speed (6.0Gb/s) To test read speed: bitpost ~ # hdparm -tT /dev/disk/by-label/reservoir-3g-mel /dev/disk/by-label/reservoir-3g-mel: Timing cached reads: 33760 MB in 2.00 seconds = 16900.70 MB/sec Timing buffered disk reads: 274 MB in 3.00 seconds = 91.28 MB/sec You can use dd to check speed, too: dd conv=fdatasync if=/dev/zero of=/spiceflow/newraid-4tb-bp/dd_test_output.dat bs=8k count=256k =256k 262144+0 records in 262144+0 records out 2147483648 bytes (2.1 GB) copied, 4.57219 s, 470 MB/s # don't forget to clean up.. rm /spiceflow/newraid-4tb-bp/dd_test_output.dat |
Updating mediawiki installation |
---|
cd /var/www/localhost/htdocs/mediawiki emacs LocalSettings_redirector.php (to hardcode each site) php maintenance/update.php (repeat for each site) emacs LocalSettings_redirector.php (to reset dynamic behavior) |
Creating a new ssh key pair for no-password access to a remote system |
---|
Say you've got a new machine with user [m] and you want to connect to it, do this:
wow I just had serious issues with basic ssh usage, so i'll put a summary on the wiki basically most misunderstandings stem from describing these two: client: machine that is trying to ssh into the server server: machine that the client user wants to get to most poor sots are just sitting on the client and they create a pair and push their public key to the server but in my case, more often, i want to create a pair on the server and push the private key to the multiple places i need to connect FROM when doing that, you have to push the public key into the server's authorized_keys and configure the client to juggle multiple private keys create a key pair: ssh suser@server ssh-keygen use defaults will create: .ssh/id_rsa (private key) .ssh/id_rsa.pub (public key) put the public key in place: cd .ssh cat id_rsa.pub >>authorized_keys put the private key on the client and configure: scp id_rsa cuser@client:.ssh/id_rsa_server ssh cuser@client em .ssh/config Host tdm thedigitalmachine.com Hostname thedigitalmachine.com IdentityFile ~/.ssh/id_rsa User m Host server Hostname server.com IdentityFile ~/.ssh/id_rsa_server User suser all is full of light |
Back up a linux system to a second bootable drive |
---|
Steps:
These are the steps for backup of the dune box to the /spiceflow/2.0tb-newmovies/ drive. When we're done, we'll boot from that drive to prove we have a working standby system. rsync does an excellent job of copying just what we need. Test it with this: # a (archive mode -rlptgoD) v (verbose) x (don't cross filesystems) h (human-readable) n (dry run) rsync -avxhn --progress / /spiceflow/2.0tb-newmovies/ Do the job with this: rsync -avxh / /spiceflow/2.0tb-newmovies/ sent 28.10G bytes received 8.64M bytes 15.63M bytes/sec total size is 39.57G speedup is 1.41 There was def some old stuff in there worth cleaning up: /home/m/development/svn/mythtv... /var/tmp xbmc log files etc Next we fix /etc/fstab on the new drive to use the drive as root. Original config: /dev/disk/by-label/d-g2-root / ext3 noatime 0 1 /dev/disk/by-label/d-sp-20newmovies /spiceflow/2.0tb-newmovies ext4 noatime 0 2 New config (remember tho, we lose the 2gb drive): /dev/disk/by-label/d-g2-root /root-hot-drive ext3 noatime 0 1 /dev/disk/by-label/d-sp-20newmovies / ext4 noatime 0 2 Note: this never worked out for me due to my system's mix of ext3 and ext4. I'll retry once I migrate everything to ext4. Next, grub: mount /boot em /boot/grub/menu.lst Orig entry: title ----- linux-2.6.34-gentoo-r11_withext4 root (hd0,0) kernel /boot/linux-2.6.34-gentoo-r11_withext4 root=/dev/sda4 Add a new "standby" entry under it - do a "df" to find the root: title ----- ==STANDBY== linux-2.6.34-gentoo-r11_withext4 root (hd0,0) kernel /boot/linux-2.6.34-gentoo-r11_withext4 root=/dev/hda1 Then reboot to standby and see what we have... (no "latest" video library etc., but otherwise the same?) |
wallee gentoo networking |
---|
Laptop has both wired and wifi adapters.
We set up custom network interface names to make it more clear. I had installed several tools when attempting to get this going. DO NOT DO THAT, they interfere with one another. Removing NetworkManager and going with the highly-recommended wpa_supplicant and its graphical tools wpa_gui and wpa_cli. I'm documenting this since it's so basic yet such a bitch. /etc/udev/rules.d/76-mdm-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key. # MDM following this to change nw interface names: # http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=4&chap=2 # # verified MAC addresses # changed eth0 line to lan0 # changed eth1 line to wifi0 # PCI device 0x10de:0x0ab0 (forcedeth) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:26:4a:18:ed:58", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="lan0" # PCI device 0x14e4:0x432b (wl) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:26:bb:07:d3:7d", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="wifi0" Next you have to set up these weird symlinks: cd /etc/init.d ln -s net.lo net.lan0 ln -s net.lo net.wifi0 Now add them to runlevels: rc-update add net.lan0 default rc-update add net.wifi0 default Now add them to runlevels: rc-update add net.lan0 default rc-update add net.wifi0 default Fix the system so that only one is required for startup to work... /etc/rc.conf rc_depend_strict="NO" No, we're not even close to done yet... We have to CUT the firmware out of the proprietary driver. Wow. su - emerge -av b43-fwcutter # NOT THIS, DAAAMN: bcm43xx-fwcutter emerge -av sys-firmware/b43-firmware export FIRMWARE_INSTALL_DIR="/lib/firmware" mkdir macbook_bcm43xx_wireless_driver cd macbook_bcm43xx_wireless_driver wget http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2 tar xjf broadcom-wl-5.100.138.tar.bz2 b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.100.138/linux/wl_apsta.o modprobe b43 /etc/init.d/net.wifi0 start Nope. What a fuckbucket of retardedness. Look at the notes this guy made - brief but heavy - i think i need to purge b43 and get the "wl" driver working instead. |
rtorrent keys |
---|
rtorrent CAN actually work pretty well, IF you pay attention to these basic keys:
stty stop undef stty start undef
NOW GET rutorrent going! :-) |
rtorrent fix torrents that didn't move into place properly |
---|
* if the torrent is archived properly, use move_and_resymlink to move it:
cd ~/download/torrents/archived/symlinks move_and_resymlink [symlink] [destdir]
|
BOX: case |
---|
To install ubuntu, I had to add [... --- nomodeset] to the boot line in the grub booter.
Then I had to use a desktop 1080p monitor - the 4k Sony would not come up for some reason. |
BOX: bitpost |
---|
My primary server at Peace Street
I had to stuff the goddamned drives right into the case since the rosewill was giving me such shit. In hindsight, it might not have been the rosewill at all... I am considering restuffing the box with the drives... but for now, i have this: sda root sdb1 tvmind sdc1 film sdd & sde softraid sdf1 spicey sdg1 reservoir sdh1 plethora sdi1 win Before it was like this: ================================ BAYS of the bitpost.com Rosewill ================================ To figure this stuff out, it was easiest to mount/umount drives and/or just access the mounted files (and watch the bay lights, of course) Disk layout: 8 7 6 5 4 3 2 1 1) spicey-3g-mel 2) reservoir-3g-mel 3) tvmind-4g-mel 4) newraid1-4tb-bp WD Black installed 2014-10-05 5) plethora-3tb-bp i hope this was not being used - 3GB Seagate barracuda - mount says some ntfs looking thing with no partitions and unable to mount - so i reformatted ext4 6) win-pax09 some old windows drive with lots of game goodies; also has sdf2 swap partition (kill it some day) 7) film-6tb-bp WD Green installed 2014-10-05 8) newraid2-4tb-bp WD Black installed 2014-10-05 ================================ |
BOX: tdm |
---|
My primary server that does just about everything internet-related
P8P67LE mobo Intel i5 quad core names that are hosted:
|
BOX: dune |
---|
Follow the ubuntu install.
We also use a StarTech AC600 ac wifi adapter. The chipset is specified here. It's a Realtek - RTL8811AU. It is not supported with the vanilla 15.04 kernel, but it's easy to build a module from sources available on github: sudo apt-get update sudo apt-get install linux-headers-generic build-essential git git clone https://github.com/gnab/rtl8812au.git cd ~/rtl8812au make sudo make install sudo modprobe 8812au Then, run NetworkManager and nm-applet, and as soon as you plug the USB dongle in and remove the wired connection, you'll get a running wifi applet, YES. We also want to drive the crappy Seiki at 4K. A 4k mode shows up in our X probe, but ubuntu is not picking it...... yet... OLD gentoo NOTES My XMBC media center and samba-based storage server AMD post-kernel tasks: make sure you update /etc/conf.d/modules for any new modules added update-modules module-rebuild populate module-rebuild rebuild (if you feel brave) module-rebuild list (if you want to do it manually) # NOTE: NO MORE ATI-DRIVERS they no longer support my old-ass onboard HD 3000 graphics chip # But the open-source radeon driver does, oh yeah! emerge lirc # etc emerge -a1 $(qlist -IC x11-drivers/) update-modules dispatch-conf # NO! eselect opengl set ati # aticonfig --ovt opengl # "no supported adapters"? eselect opengl set xorg-x11 reboot |
BOX: wimpy |
---|
My main development workstation
P8P67LE mobo Intel i5 quad core boot is in /ubuntu/boot grub menu: /ubuntu/boot/grub/menu.lst post-kernel tasks: make sure you update /etc/conf.d/modules for any new modules added update-modules module-rebuild populate module-rebuild rebuild (if you feel brave) module-rebuild list (if you want to do it manually) emerge nvidia-drivers (etc) update-modules dispatch-conf eselect opengl set nvidia reboot if you break gentoo (or rather, if gentoo devs break gentoo, or open source hacks break gentoo, or whatever... but ultimately, you...)... boot into ubuntu su - ./chroot_to_gentoo (chroot) ./setup_chroot ** FIX IT ** to install a new kernel that ubuntu will serve up... build it in a chroot back in ubuntu, copy it: cp /mnt/gentoo/usr/src/linux/arch/x86_64/boot/bzImage /boot/linux-blahblbahba and update grub. you can change em both or just the second (and rerun grub-mkconfig >/boot/grub/grub.cfg): emacs /boot/grub/grub.cfg emacs /etc/grub.d/09_gentoo |
BOX: wallee |
---|
My quad-boot laptop
Macbook Pro quad boot (OS X, Windows 7, Ubuntu, gentoo) see blog entry for quad boot instructions -- gentoo --
-- to update kernel --
-- misc --
|