Tuesday, March 27, 2012

MacRumors Threads

I made fun of Mac forums in an earlier post, but if you haven't checked out the MacRumors Forums, you should because they have a still-active PowerPC section. Here are a few threads you may find useful:

F.A.Q. for Powerpc Macs

Video on PowerPC - Part 1: Playback on G4/G5

OpenMark results on PowerPC Macs

That last one is a long thread benchmarking graphics cards. Stay out of the flame wars. They could get hairy in there.

Monday, March 19, 2012

Installing Debian Linux on PPC Part V - Bugs & Quirks

[12/13/14: Updated to include information on Debian Jessie]

So now you have your system all up and running, but there are a few things that don't quite work right. If you've installed Testing some bugs are to be expected, but there are other bugs and general quirks in Linux that have been around long before and likely a long time to come.

Mac OS 9 Bugs

One bug that qualifies as having been around long before is the infamous disappearing partition bug. Every time you run through the Debian installer, it messes up your Mac OS 9 drivers making any OS 9 partition unbootable. Fortunately it has an easy fix. Simply boot with your Mac OS install CD, launch Drive Setup, highlight your hard drive on the list, and from the Functions menu select "Update Driver". You will now be able to boot into OS 9.

Another thing you should know about OS 9, never use the Startup Disk control panel to choose a startup disk (this applies to OS X's Startup Disk system preference, too). It'll mess up yaboot and you won't be able to boot into Linux. If this should happen, reset the pram (hold down command + option + p + r keys on startup) and yaboot will be restored.

Dual booting between Linux and Mac OS 9 also has an issue with system clocks. While your Debian system is set to UTC time, your OS 9 system is set to local time, so though your Linux time may be correct, you Mac clock can be several hours off. Solve this with:

sudo nano /etc/default/rcS

and change "UTC=yes" to "UTC=no". Now when you boot into OS 9, the time should display correctly. Be aware, though, that local time does not support automatic adjusting for Daylight Savings time.

For Jessie users, there's now a systemd way of doing things. Use this command to switch to local time:

sudo timedatectl set-local-rtc 1

Replace the 1 with 0 to switch back to UTC time.

Other Issues

Occasionally Debian may install with your system time one hour off (or maybe it's just me and the deb-installer hates me). To correct it, run the date and hwclock commands, the first setting your system time, and the second to sync it with your computer's hardware clock. The example below sets the time to 6:30:00 pm:

sudo date --set="2 OCT 2006 18:30:00"
sudo hwclock --systohc


Jessie users will want to use the systemd command timedatectl that adjusts both software and hardware clocks:

sudo timedatectl set-time "2014-08-23 18:30:00"

As mentioned before, KMS blocks suspend from functioning and may be unstable on some systems, so check the Part IV - Graphics section for suggestions.

As with all sound issues, check the Part IV - Sound section for fixes.

I've noticed laptop backlight issues on my iBook and PowerBook. DPMS turns off the backlight after 10 minutes as expected, but my iBook's backlight doesn't turn on after I wake it up. The only way I can turn on the screen is to press the brightness keys. This is a bug in the Jessie kernel. Conversely, with KMS off in Wheezy, DPMS never powers off my PowerBook screen. It goes blank, but the backlight always stays on. Things work correctly with KMS on.

PowerBook users may notice their caps lock light no longer works. This is caused by some conflict with mouseemu, so you can restore the light by uninstalling mouseemu and setting your right and middle click by editing /etc/sysctl.conf.

If you have a tray-loading Mac, you may find your disc tray inexplicably refuses to open. There's a bug where after the first time you insert a disc and eject it, you'll no longer be able to open the disc tray. Run the following command in a terminal to restore it:

eject -i off

Copy to the clipboard in Openbox isn't managed like in other desktop environments. You can copy and paste across applications, but when you quit the application you copied from, its contents in the clipboard disappear. The solution is to install a clipboard manager like Parcellite and put it in your autostart file, though KeePassX users should be aware of this bug.

This isn't really a bug, it's more a hidden feature. In an Open File dialogue, if it's showing a mess of hidden files you can hide them by right-clicking the file field and unchecking "Show Hidden Files".

Need a JACK audio server for your audio production software? You may fail to get a connection with jackd2. If that's the case, install jackd1 and that should work.

I mentioned in Part III, video playback on VLC is broken on G3s as it is compiled with altivec instructions. Besides trying the Deb-Multimedia version, you can also compile from the official Debian source with the configure option --disable-altivec. So here's a quick howto on compiling from source. After installing the build-essential development package, run:

sudo aptitude build-dep vlc

Then create a folder to download the source code, change your current directory to the new folder, and download the source code with apt-get:

mkdir ~/Source
cd ~/Source
apt-get source vlc


Then:

cd ~/Source/vlc-2.0.3 (or whatever the new folder name happens to be)

and:

./configure --disable-altivec

Once it's done, while still in ~/Source/vlc-2.0.3, do:

make
sudo make install


When completed, if you launch VLC in the terminal and get the error, "vlc: error while loading shared libraries: libvlc.so.5: cannot open shared object file: No such file or directory", the fix is detailed here. You simply enter the following three symlink commands:

sudo ln -s /usr/local/lib/libvlc* /usr/lib/
sudo ln -s /usr/local/lib/libx264.a /usr/lib/
sudo ln -s /usr/local/lib/vlc /usr/lib/vlc


Now you should have a working VLC.

Parting Tips

Finally, I should probably remind you there's no force quit button unless you install a panel that has one, but you can force quit processes in a terminal by entering "killall -s9 process name". Though in the case of Iceweasel, the process name is "firefox-bin". Good to know.

Another troubleshooting tip: if your system is broken and you need to boot into Single User Mode to fix it, you can do so by typing "Linux single" at the second yaboot screen. You'll eventually be prompted for your root password, and when you're done with any repairs you can type "exit" and it'll logout and continue booting to your normal login manager.

There's one more limitation you should be aware of. Almost no Linux closed-source software works on PowerPC. That's because the companies that produce them only distribute i386 or AMD binaries, so as a consequence titles like Flash, Dropbox, and Skype aren't available for PowerPC. One exception is BitTorrent Sync, which distributes a PowerPC .deb file. :)

Well, that's about it. I'll leave you with a few links that you might find of interest:

Openbox - Debian Wiki

PowerPCFAQ - Ubuntu Wiki: A wealth of information here. And Ubuntu is based on Debian, so almost all of it applies.

Best Linux Software: A good rundown of software titles.

Linux on your Apple Mac | iLinux |

Linux MintPPC | fast and slick Linux for PPC computers: The forums here are fairly active.

I'll be updating this post, hopefully with more good news than bad, as time progresses. In the meantime, happy Linuxing!

Part I - Pre-Installation
Part II - Installing the Base System
Part III - Installing the GUI
Part IV - Configuring Stuff

Friday, March 16, 2012

Installing Debian Linux on PPC Part IV - Configuring Stuff

[12/13/14: Updated to include information on Debian Jessie]

Once you've gotten past the login screen, you will likely be confronted with this as your desktop:

openbox default desktop

This is Openbox. Now take a minute to let your eyes adjust. I know the visual pizzazz is a bit overwhelming at first. The first thing you may notice is that middle-click brings down a desktop switcher menu and right-click brings down your root menu. The root menu starts off with very few items by default, so the first thing you want to do is add to it. Choose "Terminal emulator" from the root menu, then enter "obmenu".

Now just play with the editor and save changes. Add new items, then fill in the fields for label and execution command (usually the application's name, all lower case). To add a Debian menu with all your applications, install menu-xdg and then select "Reconfigure" from the root menu. Also, here's a nice video tutorial for adding a dynamic applications menu with icons (must have build-essential installed). For further creativity, you can add shortcuts for sleep, logout, restart, and shutdown. Instructions for that are here under "1. Shutdown and reboot with administrative privileges," though it lacks the logout option, which in Openbox is "sudo openbox --exit". That whole guide is a great resource for Openbox in general.

You can further spruce up your desktop by setting a wallpaper with feh and adding "sh ~/.fehbg &" to your autostart file (see Autostart on Login below). You can manage themes, fonts, and icons with LXAppearance, though you still may notice some things missing, like a taskbar, dock, and desktop icons. And that's the beauty of Openbox. You can add all those yourself, like your own favorite taskbar instead of the one handed to you by the Desktop Environment Gods. Or in low memory configurations, you can stick with the root menu, desktop switcher, and Openbox's Exposé-like keyboard shortcuts, because when push comes to shove that's really all you need.

Now the rest:

Sound
Graphics
Monitor Calibration
Wireless
Hotkeys
Swap Command and Control Keys
Trackpad
CPU Frequency Scaling
Speed Tweaks
Fstab
Yaboot
Sudoers
Lock Screen
Launchers, Docks, and Panels
Desktop Icons
Other Desktop Tools
Playing DVDs
Fonts
GTK Themes
Shadows & Transparency
Autostart on Login
Clean Caches

Sound

If sound isn't working out of the box, there are several steps you can take, and Jessie users have a few additional challenges.

First, install the packages that provide sound utilities:

sudo aptitude install alsa-base alsa-utils

Then run alsamixer in a terminal window. Jessie users, if it fails to open the mixer, try adding "snd-aoa-i2sbus" to /etc/modules and reboot. If it still fails, skip a couple of paragraphs down to the hardware detect bug.

If, on the other hand, alsamixer opens, try unmuting the Master Volume by selecting it and pressing the "m" key, and then turn it up with the up-arrow-key. Unmute the Headphone and Speaker options, though if you have external speakers plugged in, keep the Speaker option muted to disable your internal speakers. Also, if you see a PCM level, turn that up to 75%. I read in an Ubuntu forum that a PCM level above that gives you distortion.

If you're still not getting sound, make sure "snd-powermac" is in your /etc/modules file if you're using an older Mac. Newer PPC Macs like aluminum Powerbooks and G5s use the "snd-aoa" modules. There's more on that at Ubuntu's PowerPCFAQ, including how to fix a bug that blacklists(!) your snd-aoa modules.

Jessie users, if you still can't open alsamixer you're probably suffering from a hardware detect bug in the new kernel that seems to afflict mostly iBooks. Your only choices are to compile new kernel modules (detailed somewhat opaquely in this Ubuntu thread) or boot from Wheezy's 3.2.0-4 kernel that doesn't have the bug. If you upgraded from Wheezy, then you already have the old kernel in your /boot directory and can go to this Ubuntu post detailing how to tell Yaboot to boot into it. If you're on a clean Jessie install, you need to install the old kernel by adding (on one line):

deb http://security.debian.org/debian-security wheezy/updates main

to /etc/apt/sources.list, doing a "sudo aptitude update", and then installing "linux-image-3.2.0-4-powerpc" for single processors, "linux-image-3.2.0-4-powerpc-smp" for multiprocessors, or "linux-image-3.2.0-4-powerpc64" for 64 bit processors. This should set the Wheezy kernel as the default boot kernel, so go to the aforementioned Ubuntu post to set your desired default and secondary kernels. After all that, you can comment out the Wheezy line from your sources.list and do another aptitude update. Not ideal, but it did restore sound to my iBook.

I should also mention PulseAudio. Friends don't let friends do PulseAudio. But if you must and you experience stuttering or crackling playback, this looks like a solution. Also, if alsamixer shows PulseAudio is muted after every reboot, you can fix it by installing pavucontrol (a gtk volume control app) and unclicking the mute button under Output Devices.

Graphics

This section is mostly about Macs with ATI graphics cards since I don't have any experience with Nvidia cards. Go to the Ubuntu PowerPCFAQ for more on Nvidia. Pretty much that entire FAQ applies to Debian, too. The MintPPC forum is also a good resource.

Macs with ATI cards should install the package firmware-linux-nonfree for Radeon firmware that covers your cards. Starting with Jessie, KMS (Kernel Mode Setting) is required to use the Radeon driver, so if you're getting 8-bit color, you don't have KMS activated and you're getting kicked back to the (primitive) fbdev driver. You can restore 32-bit color by typing on the second Yaboot screen at boot, "Linux video=radeonfb:1024x768-32" without quotes (**see note at the end of this section), but you'll still be on the fbdev driver and suffering its poor performance. To get the Radeon driver (and 3D) working, you need to disable the radeon framebuffer and activate KMS with a couple of Yaboot parameters. At the second Yaboot screen at boot, enter:

Linux video=radeonfb:off radeon.modeset=1

This should give you radeon acceleration and 3D. Some users report instability with this (KMS on PowerPC is buggy as hell), which they can fix with the additional parameter "radeon.agpmode=-1" (that's a negative 1), which forces PCI mode. I've also seen people suggest turning off the Open Firmware framebuffer with "video=offb:off", so with all these parameters you would type (on one line):

Linux video=radeonfb:off video=offb:off radeon.modeset=1 radeon.agpmode=-1

Hopefully this gets everything working, though you should be aware that suspend doesn't work under KMS on PowerPC and the brightness keys on your laptop may be disabled (I told you it was buggy). You can make your Yaboot parameters permanent by adding:

append="video=radeonfb:off radeon.modeset=1"

(and any other parameters inside the quotes and separated by spaces) to your /etc/yaboot.conf under the lines "initrd=/boot/initrd.img", "initrd=/boot/initrd.img.old", etc., and tabbed in like the other sub-entries in the section. Then run "sudo ybin -v" after saving changes.

If, however, KMS is still giving you system freezes or even a black screen, you'll be stuck with the fbdev driver and an unaccelerated desktop. I've found running Compton (a compositing manager for shadows and transparency) greatly improves window-dragging performance, though video playback will still be severely limited. You can't use your video player's xv driver; you'll have to use the much slower X11 driver. If you're streaming Youtube, you'll probably have to go with a lower resolution than you're accustomed to.

**The "Linux" that begins that yaboot parameter refers to your default boot kernel. If you want to boot another kernel, replace "Linux" with whatever calls your alternate kernel. Also, adjust your native screen resolution accordingly.

Monitor Calibration

I've never used hardware calibration, but others report that a Pantone Huey works with Gnome Color Manager. Short of that, there are a few software tools to help you get the right display levels. You can load the .icc files you have in OS X (in /Library/ColorSync/Profiles or ~/Library/ColorSync/Profiles) with the help of xcalib. If your iMac or 'Book monitor looks washed out or too cool, you can use Redshift with the -O (capital "o") arg to warm the color temperature from the default 6500, like:

redshift -O 6250

If you like what you see, you can put the command in your autostart file to load on login (see Autostart on Login below).

Wireless

To get your wireless cards working, you need additional firmware. First generation Airport card users need to install firmware-linux-nonfree, while Airport Extreme users need firmware-b43-installer. There's also firmware-b43legacy-installer, but I'm not clear which cards, if any, require that.

If wireless-tools and wpasupplicant aren't already installed, do that, too. Then install wicd, a simple graphical client to set things up. You will also need your wireless interface, which can be found with "sudo iwconfig". It'll usually be wlan0 or eth1.

Next, launch wicd with "wicd-client". Then in preferences add your wireless interface (as well as your OpenDNS servers I know you're all using 'cause it's good for you). Next, find your network on the list (you may have to click refresh), check the "Automatically connect to this network" box, click the Properties button, check the "Use Encryption" box, choose WPA 1/2 (Passphrase), and enter your password. Click OK and you can connect. At some point a network icon should also appear in your panel's system tray.

If you can't get a stable connection with wicd, there are a couple of options. You can reboot and hope the problem magically fixes itself (this actually works sometimes). You can also disable or uninstall wicd and set a connection up from the command line. Instructions are detailed at Debian's wifi wiki. Basically, the steps are:

sudo chmod 0600 /etc/network/interfaces
wpa_passphrase your-ssid your-passphrase
sudo nano /etc/network/interfaces


and then add the wireless section detailed in the wiki to the interfaces file. Then execute "sudo ifup wlan0" and your connection should be up, and automatically up after reboot. This may be more stable but not very flexible. There are instructions at this Debuntu page to configure wifi roaming, but first generation Airport cards don't seem to work with it.

Also on the subject of first generation Airport cards' shortcomings, they only support WPA + TKIP router security. They don't support WPA + AES, or WPA2 in any configuration.

Hotkeys

PBButtonsd takes care of this. To edit the pbbuttonsd config file:

sudo nano /etc/pbbuttonsd.conf

Reading it, it should mostly make sense. The LCD_Brightness and Volume lines are commented out by default, so uncomment them if you want those settings to carry over on restart. Also, if sleep on your machine is broken, don't forget to change the suspend options here to prevent it.

A few more notes. First, aluminum Powerbook users will need to add "i2c-dev" to /etc/modules, then reboot to get your keyboard backlight keys working. Second, you can install laptop-mode-tools to enable pbbuttonsd to spin down your hard drive when on battery, but sometimes the spin down rate is too aggressive and can shorten the lifetime of the drive, so be wary. And third, your screen brightness on reboot or wake from sleep will be determined by the LCD_Brightness setting in pbbuttonsd.conf. Your brightness levels changed by the hotkeys won't be "remembered."

And if your hotkeys still won't work and you're about to go insane, try them in conjunction with the fn key.

Swap Command and Control Keys

You can have your command and control keys behave like a Mac's by swapping them. Create the file .Xmodmap (don't forget the dot) in your home directory with:

nano ~/.Xmodmap

and add the following text:

remove Mod4 = Super_L
remove Control = Control_L
keysym Control_L = Super_L
keysym Super_L = Control_L
add Mod4 = Super_L
add Control = Control_L


After you save it, run the command:

xmodmap ~/.Xmodmap

and if you're satisfied, insert it in your autostart file (see Autostart on Login below). A couple of notes: This will only work in an X session. If you switch to a console, your keys will revert. Also, restarting the mouseemu daemon (like after you change mouseemu's settings) may break this until you rerun "xmodmap ~/.Xmodmap".

Trackpad

To change the tap-to-click setting on your trackpad, you can use, ironically enough, the trackpad command. To turn it off:

sudo trackpad notap

Replace the "notap" with "tap" to turn it on. "man trackpad" gives you all the options. To have your settings carry over after reboot, you can create a startup script with:

sudo nano /etc/init.d/trackpad

and enter these two lines in the new file:

#!/bin/sh
trackpad notap


After saving it, you make it executable like this:

sudo chmod 0755 /etc/init.d/trackpad

and then add it to your boot scripts with:

sudo update-rc.d trackpad defaults

You may see a warning about missing LSB information and overrides, but you can ignore it. See this Debian article about removing the script if you no longer want it.

Also, trackpads on later iBooks and Powerbooks can add multi-touch gestures by setting up the "Synaptics" driver. I wrote a post on this for an Aluminum Powerbook.

CPU Frequency Scaling

For x86 users, CPU frequency scaling is handled by the kernel, but PowerPC users need to install powernowd for this power-saving feature (extending your laptop's battery and possibly quieting your fans). It adjusts to CPU load, so you won't notice any performance slowdowns, and though the defaults work fine, you can edit /etc/default/powernowd to customize (UPDATE: Debian maintainers removed this from their repositories because..., but reader Eric H pointed me to a powernowd.deb file kept here. You can install by downloading it, cd'ing to its current directory, and running "sudo dpkg -i powernowd_1.00-1.1+b1_powerpc.deb").

You can see it working by running:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

to display your current CPU frequency, and:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

to list available frequencies.

Speed Tweaks

There are a few speed tweaks you can use to improve application responsiveness. First, as mentioned in Part II - Installing the Base System, you should use the noatime option. It should be in your /etc/fstab file as one of the options on your Linux partition. If it's not there, add it. Not doing so will make your hard drive perform slower than it should. Also, there are a couple of things you can add to your /etc/sysctl.conf file. Open it as sudo with nano or your usual text editor and add the following two lines at the bottom:

vm.swappiness=10
vm.vfs_cache_pressure=50


The default values are 60 and 100, respectively. Changing them will make your system less likely to swap to disk until it really needs to. I've seen some people recommend a swappiness value of 10 for desktop users, others say 20. If you're running a server, you should probably stick with the defaults, but desktop users will definitely want to lower them.

Fstab

Now let's edit our fstab file to auto-mount our Mac partitions on startup. First you need to create mount points like this:

sudo mkdir /mnt/MacOS
sudo mkdir /mnt/Media


These commands create new directories in the /mnt directory called MacOS and Media. You can name yours whatever you want, but this is what I have. Then open your fstab file with:

sudo nano /etc/fstab

and add new lines at the end, for each partition you want to mount. In my case, this:

/dev/sda10 /mnt/MacOS hfsplus defaults 0 0
/dev/sda11 /mnt/Media hfsplus defaults 0 0


Put tabs between all the entries, not spaces. You can look up your own partition numbers by running "sudo mac-fdisk -l" (that's -l for list). They're either going to be /dev/hdaN or /dev/sdaN. And if you want read/write access to hfsplus volumes, you need to do a few extra things. First, make sure journaling is turned off on your OS X partition (does not apply to OS 9 partitions). Then install hfsprogs and hfsutils and change "defaults" to "rw,user,defaults" in /etc/fstab for that partition. Finally reboot, or remount the volume if it's already mounted with (on one line):

sudo mount -t hfsplus -o remount,rw,user /dev/sdaN /your/mount/point

If that still won't work you may need to run fsck.hfsplus, so unmount the volume ("sudo umount /your/mount/point"), then run:

sudo fsck.hfsplus -f /dev/sdaN

and then remount with the "rw" and "user" options. One last note, you can write to a journaled OS X volume with the "force" option, not that it's a good idea.

Yaboot

To configure boot options and set which system is the default, you need to backup and then edit /etc/yaboot.conf:

sudo cp /etc/yaboot.conf ~/yaboot-bak.conf
sudo nano /etc/yaboot.conf


Then find the main section with options like "timeout" and "enablecdboot". If you're dual booting OS 9 and you don't see macos= (or macosx= for OS X), then add it yourself with the line:

macos=/dev/yourmacpartition

with yourmacpartition found with "sudo mac-fdisk -l". Subsequently, your MacOS will appear as a boot option alongside Linux. To set the default OS, add the line "defaultos=macosx" or "defaultos=macos". If you add no line, yaboot will automatically boot to Linux after the timeout. And about timeout, if it's too long you can change the value where increments of 10 equal one second. Finally save the file, and this is important, anytime you make changes to yaboot.conf you must run:

sudo ybin -v

for the changes to stick. Run that and you're done.

Sudoers

Some programs require sudo permissions, making you enter your password every time you launch them. This is a security feature, but sometimes an annoying one. For instance, my firewall program, Gufw, requires a password which I don't really find necessary. Fortunately you can create exceptions in your /etc/sudoers file that eliminate the need to enter your password. Just add a line such as this:
dan    icebook=NOPASSWD:/usr/bin/gufw
where "dan" is my username, "icebook" is my hostname, and "/usr/bin/gufw" is the program I want to create an exception for. Commonly people will say to put "ALL" and "ALL" for username and hostname, but that allows anyone in your group, even remotely, to run these commands without a password. Having your specific username and hostname limits it to only you on your machine.

Lock Screen

What do we do with a problem like XScreensaver? Its lock screen is stuck in the '90s, and it's kind of entertaining reading its longtime maintainer stubbornly refusing to change it in bug report threads. But it's still ugly and people actually avoid whole distributions that include it by default. My solution is to not install it (See the beauty of building from the ground up?). Instead, I let DPMS take care of powering off the screen; your screen automatically shuts off after 10 minutes of inactivity unless overridden by a program like XScreensaver. For a lock screen, I use slock, part of the suckless-tools package. I also install xautolock and put the following in my autostart file to activate the lock screen after 30 minutes of inactivity:

xautolock -time 30 -locker "slock" &

Another screen locker with a bit more customization is i3lock. Here's an i3 thread that talks about taking a screenshot, blurring it, and using it as the screen lock image. Cool idea, but read the comments on how to mitigate certain security concerns.

Launchers, Docks, and Panels

If right-clicking the desktop to bring down a root menu with applications isn't your thing, you can add a Quicksilver-like capability with Synapse. Just like Quicksilver, it's an application launcher that does much more, like find and open files, web pages, etc (if the "Startup on login" preference doesn't work for you, you can add "synapse -s" to your autostart file to have it hidden on startup). Kupfer is a similar launcher. And for an ultra-lightweight option, there's dmenu from the suckless-tools package.

As far as docks and panels go, you can easily configure LXPanel to resemble a 2d, transparent dock like Tiger's. For a more Leopard-like dock, there's Cairo-dock, which I wrote about in this post. For just a task panel and system tray, Tint2 is justifiably popular.

Desktop Icons

If you want to go further in achieving a more Mac-like interface, you can add icons to your desktop. You can achieve this with PCManFM or xfdesktop (instructions are on this Crunchbang wiki page). If you do it with PCManFM, be aware that xcompmgr + conky doesn't play well, specifically with shadows persisting around the conky window. Also, though PCManFM gives you the option of retaining your Openbox right and middle click menus, xfdesktop will replace them with its own.

Rox-filer also provides desktop icons, but they're iconified file links, so the actual files stay in their original directory. You can add application launchers by dragging their /usr/share/applications/*.desktop files to the desktop. I wrote all about integrating Rox-filer on your desktop if you're interested.

Other Desktop Tools

So you probably want a few more desktop tools, starting with a system monitor. The best choice is Conky. It's very configurable and you can download other people's conkyrc files to tinker with (link to mine at the bottom of this post). Just be aware, people's commonly-used battery monitor syntax is Intel only, but I posted this solution for PowerPC users.

You don't have Spotlight on your new desktop, but you can get something similar with Tracker. (UPDATE: this uses a lot of CPU, so it's probably not worth it) It's a search indexer that comes with a gui frontend, so install tracker-gui and aptitude will take care of all the dependencies. The command "tracker-needle" launches the search GUI, and "tracker-preferences" launches the preferences (you may need to enter "tracker-control -s" to start indexing).

Another search program, that has the advantage of not constantly indexing your drive, is Searchmonkey. It's a frontend for find and grep and can be quite powerful.

One cool feature OS X users are familiar with is the ability to right-click on a word to bring up a built-in dictionary. Linux users can have this with Artha. An offline dictionary, it runs in the background when you set it as a startup item, and you bring it up by highlighting a word and hitting a hotkey combination. Just make sure to dismiss the window with close and not the quit button.

Playing DVDs

If you want to play commercial DVDs that are copy protected, you need to install libdvdcss2 from the Deb-Multimedia repository. First you want to add the repository to your sources list with:

sudo nano /etc/apt/sources.list

and add the single line:

deb http://www.deb-multimedia.org wheezy main non-free

Then run the commands:

sudo aptitude update
sudo aptitude install deb-multimedia-keyring
sudo aptitude install libdvdcss2


Ignore the scary language about untrusted packages and complete the install.

Fonts

You can make your fonts look nicer, especially in a web browser, by creating a ".fonts.conf" file. First, in your home folder:

touch .fonts.conf

to create the file (don't forget the dot in front of the file name, this will make it hidden). Then you want to open the file in a text editor and paste the following inside it:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
 <match target="font" >
  <edit mode="assign" name="autohint" >
   <bool>true</bool>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hinting" >
   <bool>true</bool>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hintstyle" >
   <const>hintslight</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="rgba" >
   <const>rgb</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="antialias" >
   <bool>true</bool>
  </edit>
 </match>
<match target="font">
   <edit mode="assign" name="lcdfilter">
   <const>lcddefault</const>
   </edit>
 </match>
</fontconfig>
Then save and logout, and when you login your fonts should look much better.

GTK Themes

If you've noticed GTK3 applications like Transmission and Abiword aren't following the theming you set in LXAppearance, it's because GTK3 applications aren't compatible with GTK2-only themes. To make everything consistent, you have to choose a theme that is available for both GTK2 and GTK3. Zukitwo is one such theme. Make sure you have its required engines installed, then download it and unpack it to your ~/.themes folder and fire up LXAppearance to choose it. This should automatically insert a gtk-3.0 folder inside ~/.config, but if it doesn't you can add it manually like this (single line):

sudo cp -r ~/.themes/Zukitwo/gtk-3.0 ~/.config/gtk-3.0

Now your theme will be consistent across all GTK2 and GTK3 applications. And a Zukitwo Openbox theme is here, too.

There's also the problem of qt apps like VLC defaulting to the ugly Windows '95 theme, and to fix that you can install qt4-qtconfig (libgnome2-common also required though it's not an official dependency, see this bug report for more). Its launch command is "qtconfig", and you can have it set all your qt apps to follow your GTK+ theme or several other choices.

Shadows & Transparency

Want shadows around your windows and menus? You need xcompmgr:

sudo aptitude install xcompmgr

and then add the following lines at the end of your /etc/X11/xorg.conf file (instructions to generate a xorg.conf file are on this page):
Section "Extensions"
    Option "Composite" "Enable"
EndSection
After restarting X, you can test shadows by entering in a terminal:

xcompmgr -cCf -D1

This will add shadows around windows and menus, but not panels or docks, and also adds fading at its fastest setting which can prevent artifacting around certain popups. Experiment with more settings with "xcompmgr --help".

For Jessie users, there's a much better alternative, actually a fork of a fork, called Compton (no xorg.conf needed). In addition to shadows, you can set window and menu transparency. Run it with "compton -b" (the -b runs it as a daemon) and edit ~/.config/compton.conf with your options (my compton.conf is linked at the bottom of this post).

Autostart on Login

In order to have the above commands (and any others) autostart on login you must add them to an autostart file. Openbox's system-wide autostart file is /etc/xdg/openbox/autostart, but your user autostart is ~/.config/openbox/autostart (in older versions it was autostart.sh, but now it's just autostart). If it's not already there, create it with:

nano ~/.config/openbox/autostart

with a dot before config, and add your text. Mine looks like this:

# swap command and control keys
xmodmap ~/.Xmodmap &

# have rox draw wallpaper and desktop icons
rox --pinboard=MyPinboard &

# display same wallpaper behind Conky
sh ~/.fehbg &

# warms color temperature on my washed-out,
# ancient iBook display
redshift -O 6250 &

# shadows and transparency
compton -b &

# automount external devices to /media
udisks-glue &

# system monitor
conky &

# offline desktop dictionary
artha &

# system tray volume icon
volumeicon &

# run slock after 30 minutes inactivity
xautolock -time 30 -locker "slock" &

# 2s delay ensures tint2 transparency
(sleep 2s && tint2) &


Always add an "&" to the end of every command in this file. Otherwise, programs after it may not run.

Clean Caches

One last thing to do, if you have limited disk space, is to clear your aptitude cache. All .deb packages you download are stored there enabling you to reinstall something without re-downloading it, but they're not essential so you can clear them out with:

sudo aptitude clean

And with that, my to-do list is pretty much exhausted. Here are a few screenshots, the first of Openbox's root menu with an applications menu added, and also Conky at the bottom of the screen:

Openbox Applications Menu

Here's the Synapse launcher in the foreground with Iceweasel and Audacious in the background:

Openbox Synapse Audacious Iceweasel

And here's a more Mac-like interface with PCManFM drawing icons on the desktop and Cairo-dock on the bottom:

Openbox PCManFM Cairo-dock

My GTK theme is FlatStudioLight and my Openbox theme is EasyGray, slightly modded. The icons are Meliae SVG (warning: the FlatStudio themes look ugly in Jessie GTK3 apps, and SVG icons and GTK3 apps don't always get along, so if you have problems switch to a more recent theme that supports newer GTK3 standards and switch to non-SVG icons like Ultra Flat Icons). If you're interested, here's my conkyrc file (for 1024x768 screens), my compton.conf (shadows, background windows transparent, slight menu transparency), my tint2rc (autohide, left side of screen), and two themerc files for EasyGray, one to match the FlatStudioLight GTK theme, and one to match FlatStudioGray.

Next is the final part of this series, "Bugs & Quirks".

Part I - Pre-Installation
Part II - Installing the Base System
Part III - Installing the GUI
Part V - Bugs & Quirks

Wednesday, March 14, 2012

Installing Debian Linux on PPC Part III - Installing the GUI

[12/13/14: Updated to include information on Debian Jessie]

By now you should be booted into your new system (if you're dual booting OS 9 and you didn't see a "MacOS" option in yaboot, I'll show how to add it manually in Part IV). You're past the startup dialogues and are staring at a terminal prompt, yourhostname login: _

Here you want to type root, then enter your root password. Now you're logged in as root with all the superpowers that comes with it. Don't let it go to your head, though. You'll only be the root user momentarily.

We logged in as root because in order to get administrative access through your user account, you have to install the sudo package first. So at the command prompt, type:

aptitude install sudo

Aptitude is the installer program we'll be using. Other people may use apt-get, but they're basically the same. Once it's done installing, type visudo at the next prompt and you'll see a text file to edit. Navigate down to the line:

root ALL=(ALL:ALL) ALL

and just below it add the line:

yourusername ALL=(ALL:ALL) ALL

Then save changes with ctrl + o (and name it "/etc/sudoers" not "/etc/sudoers.tmp"), exit with ctrl + x, and finally logout of your root session by typing logout.

At the next prompt, type your username and user password and you should be logged in with sudo capabilities. Incidentally, if you want to take a break here, enter:

sudo shutdown now -h

and this will shutdown your computer.

But if you're still here, now's the time to install your GUI. Again, you could install "lxde" of "xfce4" here, but for our purposes (fastest performance, DIYism) we're going with Openbox. At a terminal prompt, type on one line:

sudo aptitude install xorg slim openbox obconf obmenu menu-xdg gtk2-engines-murrine gtk2-engines-pixbuf fonts-freefont-otf fonts-linuxlibertine lxappearance tint2

What it all means:

1) Xorg provides the X window server.
2) Slim is a slim and fast login manager (incidentally, if you go without a login manager and just use startx, expect to have problems automounting external devices).
3) Openbox, obconf, and obmenu are what you need for Openbox.
4) menu-xdg provides a Debian applications menu.
5) The murrine and pixbuf engines are required by many third-party themes.
6) fonts-freefont-otf and fonts-linuxlibertine provides some nice extra fonts.
6) LXAppearance manages your themes, fonts, and icons.
7) Tint2 is a lightweight and attractive task panel often paired with Openbox.

Enter your password and watch the install happen. Once done, we can move on to installing applications, but let's take care of a couple of things first. First, edit your apt sources:

sudo nano /etc/apt/sources.list

In here, you'll want to add non-free repositories by adding "contrib" and "non-free" to each of the entries like this (single line):

deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free

Make sure they all end in main contrib non-free. Then save and exit, and run:

sudo aptitude update

to update to your new repositories. That last update step is required every time you change your sources list, and also, if you're running Testing you have to run that command often as repositories are constantly changing.

Next, if you have a first-generation Airport card or an ATI graphics card you need to install non-free firmware, and you also may want to add the Microsoft fonts installer for fonts many web pages use (single line):

sudo aptitude install firmware-linux-nonfree ttf-mscorefonts-installer

The mscorefonts installer will auto-launch and take a minute to install all the fonts.

Now we can install some applications. Since my laptop is going to be used for web surfing, writing, and music/video, I'm going to install just a basic set by typing on one line:

sudo aptitude install iceweasel icedove qupzilla sabnzbdplus transmission audacious mpv mplayer vlc smtube pluma libreoffice libreoffice-gtk fotoxx shutter feh evince xournal asunder rox-filer xarchiver lxterminal default-jre icedtea-plugin gftp gufw

1) Iceweasel and Icedove are Firefox and Thunderbird rebranded.
2) QupZilla is a full-featured webkit browser (requires Jessie). To set your system's default browser, check this page.
3) Sabnzbdplus and Transmission (execute command is transmission-gtk, FYI) are for Usenet and BitTorrent.
4) Audacious is a really cool, lightweight music player (you can switch from the GTK to the Winamp interface in Settings --> Appearance).
5) mpv (requires Jessie), MPlayer, and VLC are media players (See below for adding deb-multimedia apt sources as MPlayer is no longer in the official repositories. G3 users will want to try the deb-multimedia sources for VLC as well since the official version is compiled for G4s only.).
6) SMTube is a Youtube streamer (requires Jessie). MiniTube is an alternative.
7) Pluma is basically the old Gedit without all the Gnome dependencies.
8) LibreOffice is for those of us who can't abide by Abiword, and libreoffice-gtk ensures LibreOffice uses your GTK theme.
9) Fotoxx is a lightweight image editor.
10) Shutter is a versatile Skitch replacement.
11) feh and Evince are for viewing pics and pdfs, while Xournal offers basic pdf editing (for feh, set your file manager's default run action or "Open With..." command to "feh -. -B black" for jpegs and "feh -." for transparent pngs).
12) Asunder is a CD ripper and encoder.
13) Rox-filer is a lightning fast file manager that I wrote about here (Thunar and PCManFM are two other relatively lightweight alternatives).
14) XArchiver is a GUI tool for unpacking zips and tars, etc.
15) LXTerminal is a close equivalent to OS X's Terminal.app.
16) default-jre installs open-source java (replace jre with jdk if you intend to develop java applications), and icedtea-plugin is a java web plug-in (some people report they need to disable this in Iceweasel because it causes their cpu to jump to 100%).
17) gFTP I use for networking between my Macs.
18) Gufw is a simple firewall utility (must be run as sudo, and acts like a system preference in that the enabled firewall carries over on reboot until you disable it).

As noted earlier, you need the unofficial deb-multimedia repositories to install MPlayer, or a host of other multimedia packages which Debian's official repositories don't carry for licensing reasons. Go to www.deb-multimedia.org and follow the instructions, which are basically:

a) Add one of the deb-multimedia repositories to your /etc/apt/sources.list, then run "sudo aptitude update".
b) Install deb-multimedia-keyring.
c) Ignore scary-sounding warnings about untrusted packages and install MPlayer.

I should also tell you about a little aptitude trick. There's a disc burning application called Brasero that I want, but when you install the normal way it pulls in Yelp, a Gnome help guide, which I don't need. So to avoid that, try (on one line):

sudo aptitude install brasero --without-recommends

and it will leave out the recommended extras without interfering with the basic functions of the program.

Once all that's done, you're ready to enter your GUI. Just note that right and middle click are mapped by mouseemu to F10 and F11 (or on some keyboards F11 and F12) by default. You can change these by editing /etc/default/mouseemu and restarting the daemon with "sudo /etc/init.d/mouseemu restart". Xev and showkey are two command-line tools to get keycodes from (showkey must be run in an actual console, not a terminal emulator).

So to get to our GUI, type "sudo shutdown now -r" to reboot. I hope I didn't forget anything...

Coming up next, Part IV - Configuring Stuff. Be there or be square!

Part I - Pre-Installation
Part II - Installing the Base System
Part IV - Configuring Stuff
Part V - Bugs & Quirks

Tuesday, March 13, 2012

Installing Debian Linux on PPC Part II - Installing the Base System

[12/13/14: Updated to include information on Debian Jessie]

Now that you have your newly burned and scorching hot install disc handy, put it in and boot your Mac holding down the "c" key. The first screen will have a few rudimentary instructions including how to choose your desktop environment (Gnome, KDE, LXDE, XFCE), but for an Openbox install I skipped that and just pressed return at the boot prompt. The next few screens are pretty self-explanatory, asking for language and keyboard settings. Just pay attention to the navigation instructions on the bottom showing how to use the tab, spacebar, and enter keys (on an aluminum Powerbook install, it also gave me complaints that I had a non-standard CDROM device and prompted me for load modules, but I just kept pressing return at the prompts until the installer moved on).

Next, you may see a screen that asks if you want to install nonfree firmware. I think this is due to first generation Airport cards needing nonfree firmware installed in order to work, and you need the Airport card to work if you're installing over a wireless connection. However, since I have an ethernet connection, I was able to answer no and move on. I'll set up wireless after I've installed the base system. For more information on this, check Debian's install manual and the section, "Loading Missing Firmware".

Now the installer will prompt for a host name. This is what you want your computer to be called (I'll call mine "icebook"). Then it asks for a domain name, which I have no need for so I left it blank. Then it asks for a root password, your full name, username, and user password. Remember your passwords! Then after you choose your time zone, you're taken to the real meat of the installer--the Debian partitioner.

If you're installing a Debian-only system, you can use Guided Partitioning here. But if you're dual booting OS 9 or OS X, you'll want to select Manual Partitioning. When you next see the partition table, use the arrow keys to navigate down to your Debian partition (if it already says "Free Space" here, the next couple of steps are unnecessary). Press return and choose "Delete the partition". When you return to the partition table, it should say "Free Space" for the Debian partition. Now you will create the bootloader, swap, and root partitions.

Navigate down to Free Space, press return, then select "Create a new partition". Enter 1 MB for the size, to be created at the beginning of the partition. Then name it "Apple_Bootstrap". For "Use as:" select "NewWorld boot partition", then set the bootable flag to "On". Then select "Done setting up the partition" and you will see the bootloader partition in your new partition table.

Next, create a swap partition following basically the same procedure. Go down to Free Space, create a new partition, enter the size (at least as much as your physical RAM), at the beginning of the partition, but for "Use as:" select "swap area". Then select "Done setting up the partition" and see the new partition table.

Finally, begin the same procedure for making your root partition. Go down to Free Space, create new, and for size use the maximum remaining space (unless you're one of those weirdos who uses a separate partition for your home folder /wink). Name it something like "Debian". For "Use as:" select "Ext4 journaling file system". For mount point, choose "/ - the root file system". For mount options, select "noatime" by ticking it with the spacebar. Change the bootable flag to "On", and then you can select "Done setting up the partition" and see your completed partition table. Don't worry about the few kilobytes of free space at the end.

Now you can finally choose "Finish partitioning and write changes to disk." Use the tab key to select yes and press return.

This is when the actual installation begins. Here it will install the base system and, after a bit, ask you to enter your country and to select an archive mirror. When it asked for proxy info, I left it blank since I'm not using one. The next question to come up is "Participate in package usage survey?" Answer yes because it's always good to let the mothership know there are PowerPC users out there.

On a subsequent page you will be asked to choose additional software to install. Here you'll notice "Debian desktop environment" is checked by default. This will install whichever desktop environment you chose--which you could totally do. I'm not judging you, really. But if you want to install Openbox without all the extra cruft, you'll want to uncheck this box by pressing the spacebar. You can always install Gnome later if you insist ;) Just make sure "Standard system utilities" and "Print server" are checked and also "SSH Server", then use the tab key to navigate to "Continue" and press return.

When the installation finally completes, the CD will eject and you can press return to boot into your new system.

Next part, "Installing the GUI". Hope to see you soon!

Part I - Pre-Installation
Part III - Installing the GUI
Part IV - Configuring Stuff
Part V - Bugs & Quirks

Monday, March 12, 2012

Installing Debian Linux on PPC Part I - Pre-Installation

[12/13/14: Updated to include information on Debian Jessie]

I've been meaning to do this for awhile, so I've finally gotten around to giving you my thoroughly complete guide to installing Linux on your old iBook, Powerbook, Mini, or Power Mac. This will be an epic told in five parts: Pre-Installation, Installing the Base System, Installing the GUI, Configuring Stuff, and Bugs & Quirks. There are a few distributions out there that already do much of the work for you--MintPPC, Ubuntu, and Debian's default desktop install. But I thought I'd put up a guide for a more custom install, in this case using Openbox as window manager, for an ultra-fast low memory system and for those of you who like to roll your own. But even if you're planning to go with Debian's default desktop or MintPPC, you should still find the info here useful and hopefully it'll save you some serious hair pulling. So let's get to it!

For this install I'll be dual-booting Debian and Mac OS 9 on an iBook G3 with 640 MB of RAM. If you want to dual boot OS X, the same basically applies, and although this guide will be laptop-centric, most of the steps here apply to desktops, too.

The first thing you want to do is backup your data because you'll be reformatting your hard drive in order to repartition it. After you've backed everything up, boot your computer with an OS 9 (or OS X) installation disc by inserting it and pressing the "c" key. Then, find the Utilities folder and run Drive Setup (or Disk Utility if you're booting an OS X disc). Next, select your hard drive from the list and click "Initialize...", then click "Custom Setup..."

Now, how many partitions do you want? At least two, but I'm choosing three, one for Debian, one for Mac OS 9, and one as a sharing partition (if you only intend to install Debian alone, you can choose one partition). The reason for three? Though your Mac partitions are visible in Linux, your Linux partition is not in OS 9. So I like to have a shared partition that I can access from both systems. Also, OS X's journaled filesystem will only mount as read-only in Linux, and mounting Linux partitions in the OS X Finder can be a pain, so again, you may prefer having a shared partition easily writable between both systems (Somewhat related, there's this Lifehacker tutorial on symlinking your OS X home folder into your Linux home folder on the same computer).

Back to Drive Setup, I'm choosing three partitions, then choosing their sizes and filesystems. The first (top) partition on the table must be your Debian partition. Choose the size, then choose "Unallocated" for the filesystem. Then set the sizes of your OS 9 and shared partitions and choose HFS Plus for their filesystems. OS X users running Disc Utility will want to choose "Mac OS Extended (Journaled)" for their OS X partition and "Mac OS Extended" for any OS 9 or sharing partitions. Also, if you're triple booting OS 9 and OS X, put them on separate partitions. If they're on the same one, they'll need the native Mac startup disk chooser to know which to boot, and that can conflict with the Linux bootloader.

Once I was done, I had three volumes, one unallocated, one for OS 9, and one for sharing data between systems. From there, I initialized the disk and saw the two HFS Plus partitions show up on my desktop. Now you can install OS 9 (or OS X). You must install the Mac OS first, before Debian, because Mac system installers don't play well with Linux systems already on disk. Reboot and check that everything works, and now you can proceed to the one step missing from all this--getting the Debian install disc!

So go over to Debian.org and find an ISO to download. There are three branches to choose from: Stable, Testing, and Sid (unstable). Stable is generally for newbies and servers, Testing is for somewhat experienced desktop users, and Sid is the bleeding edge, may-make-your-system-fry choice. The Stable branch netinstall ISO can be found on this page, and the Testing installer can be downloaded here (for both, choose the ISO ending in "...powerpc-netinst.iso"). If you have to ask how to install Sid, you probably shouldn't be using Sid.

The only thing left is to burn the disc. People say to burn it at a slow speed since Linux install discs can be fickle, so when in Rome...

One more note, a longstanding bug in the Debian installer messes up Apple driver partitions and will temporarily make your OS 9 partition unbootable (OS 9 only, doesn't affect OS X partitions). There's a simple fix for this, however, that is detailed in Part V - Bugs & Quirks.

I'll see you in our next episode, "Installing the Base System".

Part II - Installing the Base System
Part III - Installing the GUI
Part IV - Configuring Stuff
Part V - Bugs & Quirks