Monday, March 19, 2012

Installing Debian Linux on PPC Part V - Bugs & Quirks

[4/24/15: Updated for Jessie stable]

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 on PowerPC Linux that have been around a long time and will likely persist.

Boot Parameters

Among those quirks are system freezes from poorly supported drivers. This is where boot parameters come in handy. If your radeon driver is causing you persistent lock-ups, you can restore stability by forcing PCI mode by entering this at the second yaboot screen:

Linux radeon.agpmode=-1

The "Linux" tells it to boot the default kernel, and everything that follows are the boot parameters.

One user reports they had system freezes until they entered the parameter "irqpoll", perhaps related to multiple devices being attached.

To make boot parameters permanent so don't have to type them in every time, edit your kernel entries in /etc/yaboot.conf so they look something like this:
image=/boot/vmlinux
    label=Linux
    read-only
    initrd=/boot/initrd.img
    append="radeon.agpmode=-1 video=offb:off"
That parameter video=offb:off disables the Open Firmware framebuffer, which is sometimes useful. And every time you edit yaboot.conf, you must then run "sudo ybin -v" to reconfigure.

Mac OS 9 Issues

Another bug that persists 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 there's 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 can now boot into your OS 9 partition.

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 messes 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). If that still doesn't restore Yaboot, boot with the Option key held down and choose your Linux partition on the boot screen. Then when you're safely in Linux, run "sudo ybin -v" to reset Yaboot.

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 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 timedatectl command. The example below sets the time to 6:30:00 pm:

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

As mentioned before, KMS is glitchy and blocks suspend from functioning, so check the Part IV - Graphics section for suggestions.

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

There's a new bug afflicting PowerPC Iceweasel users where their bookmark folders aren't showing up in the bookmarks menu or toolbar, though they can still be accessed in the Bookmarks Library and Sidebar (and the bookmarks within them are still accessible with auto-complete).

I've noticed a backlight issue on my iBook. DPMS turns off the backlight after 10 minutes as expected, but the 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 may be because my iBook runs with KMS disabled.

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 that inappropriately preserves your secret passwords in Parcellite's clipboard.

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.

My SSH server is a diva. Over wireless, sometimes it wants to work, sometimes it doesn't. When I attempt to login to icebook.local, I get an error: "ssh: Could not resolve hostname icebook.local: No address associated with nodename". Sometimes logging into the actual IP address works, but sometimes not. The only foolproof fix is to stick an ethernet cable in and login through a wired connection.

I mentioned in Part III, video playback on VLC is broken on G3s as it's compiled with altivec instructions. To solve, you can 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 Openbox users have no force quit button, 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 was BitTorrent Sync, which distributes used to distribute a PowerPC .deb file. :)

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

Debian Mailing Lists -- Index for debian-powerpc

PowerPC/FAQ - Debian Wiki

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

Linux MintPPC | fast and slick Linux for PPC computers (site restored!)
The forums are also a great source of information.

Openbox - Debian Wiki

Best Linux Software: A decent rundown of Linux software.

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

12 comments:

  1. what a great series of posts! I really enjoyed them and look forward to trying installing Linux on my old macs. ... what about a series of posts about installing some variant of bsd on old macs? I never managed to achieve that.

    ReplyDelete
  2. Thank you for this series of posts.

    My experience with installing Ubuntu 10.10 on a 333MHz PPC Lombard was very similar. This is not too surprising given their common debian origins.

    I started with a brand-new hard disk drive, on which I installed XPostFacto so that I could install both MacOSX 10.4.11 and MacOS 9.2.2. (They were on a single partition of a multi-partitioned drive.) Then I used the Ubuntu installer to make further partitions for NewWorldBoot, /User and /swap and so forth.

    At first everything worked perfectly; I could select OSX versus Ubuntu using yaboot. I "discovered" the Startup Disk killing behavior, but not the simple solution you give here.

    In my experience, of the three desktop environments I installed & tested (LXDE, KDE, Gnome), the lightest-weight LXDE gave the best performance.

    I found that an old Sonnet Aria Extreme 802.11g card seemed to work reliably, despite driver issues.

    I found that shell commands to enable trackpad tap & drag, but the settings did not persist between startups.

    The various software center & package manager applications were fairly straightforward for finding and installing third-party applications. The Software-Update-equivalent is very good at finding and installing updates, including kernel and security-related updates, but it fails if I try using it to install the next version of Ubuntu, 11.04 Apparently there are crucial components that are not available in PPC code.

    Getting "serious" work done (e.g., bioinformatics) is problematic because of the antiquated hardware. But the point is: IT WORKS, by and large, for dual-booting between OSX and a fairly recent edition of Ubuntu.

    ReplyDelete
  3. Don't know if you are interested but the mintPPC developer has built a version of mplayer that plays nice with G3's in Wheezy. Also I think there is a fix for Abiword in Wheezy the forums somewhere.

    Great series, one that will help out many!

    ReplyDelete
  4. Thanks for pointing me to the forums. They all seem to report the same bug after recent updates, so I'll keep an eye on a fix. Also, the mplayer I installed from the official Wheezy repositories played fine. It was the Squeeze version that was broke for me.

    ReplyDelete
  5. I've tried 11.10 Kubuntu PPC and 12.04 Lubuntu PPC live CDs on my PowerMac G5 and they both just boot to a black screen with white pointer. Can anybody explain what could be wrong? Is the X800 graphics card unsupported?

    ReplyDelete
  6. Never mind. I just found this quote:

    "I tried for several weeks to get the X800XT to work, using Debian, Ubuntu and Mint. I filed a bug report and had some back and forth on the Debian bugs mailing list. As far as I have been able to find, the X800 does not work under PPC Linux."

    Once again, I have been screwed by Linux. I have a pile of at least 30 useless Linux CDs I've burned over the years. (all the way back to 1998!)

    ReplyDelete
  7. Thank you very much. You helped me quite a lot to bring wheezy on a g3 pismo.

    ReplyDelete
  8. Thanks! Great work.

    i installed debian wheezy on a imac g5, with the assisted install and the lvm + cryptluks option.
    The 3.2 kernel hung, so i had to use the sid kernel
    (3.9.6). To avoid the fan blowing like an airplane i added the following lines in /etc/modules :

    rack-meter
    windfarm_core
    windfarm_cpufreq_clamp
    windfarm_lm75_sensor
    windfarm_max6690_sensor
    windfarm_pid
    windfarm_pm121
    windfarm_smu_controls
    windfarm_smu_sat
    windfarm_smu_sensors
    i2c-powermac

    Carlo

    ReplyDelete
  9. Hi, again excellent tutorials.
    About Linux/Mac files exchange, i discovered a neat trick
    for mounting and accessing folders of my MacMini (running
    Leopard) on my iBookG3 (running Debian Wheezy).
    That is with sshfs ,avaihable from Synaptic.
    Command should be like this :
    sudo sshfs -o allow_other,uid=501,gid=20
    UserOfTheMac@AdressOfTheMac:/path/to/the/folder/you/want/to/mount /path/to/the/mount/point
    -d

    "-o allow_other" option is for getting read/write permission on
    the mounted volume, in this case the usuals 501/20 Mac user
    uid and gid.
    rest is self-explained, the Mac user login, then the Mac address,
    then the folder/volume to mount, then the mount point, in my
    case i've created a "Server" folder in my home directory.
    Finally "-d" is for the debug option, a bit like a "-v" verbose
    option... Hope this can be of some help :)

    Gaël Elégoët - galgot

    ReplyDelete
    Replies
    1. Thanks for the tip! Did you turn journaling off on your Leopard volume before setting sshfs to give you read/write access?

      Delete
    2. Nope, journaling is running on that Leopard :) That's also what surprised me.
      But that's logical, cause it's running an ssh server, and sshfs just access the server and mount the volume in ssh. No journaling messing here.
      Should be possible to make a script to mount just by cliking.

      Note at time of installing, i had previously changed the uid/gid numbers of the debian iBook user to get access to his Tiger partition, following this :
      http://mac.linux.be/phpBB3/viewtopic.php?f=14&t=95#p130
      But still only Read permission in that case, cause i didn't turn of journaling on that Tiger partition.
      Now if only i could run an ssh server on that not-booted Tiger part… silly me :D

      Delete