DebianPowerPcStartersManual

From Power Progress Community Projects Wiki
Jump to: navigation, search

Get inspiration and information from http://www.debian.org/doc/maint-guide/ keep this guide simple, in the form of:
Title / Why would you want to do that / tasks and commands to do it


Introduction

Currently, Big Endian PowerPC architectures (powerpc/ppc64) are only classified as ports within Debian, meaning neither are an officially supported architecture. 32-bit PowerPC (powerpc) was an officially supported architecture, with a 64-bit kernel available, until the release of Debian 9 (codenamed Stretch). As a result the only way to run Debian on PowerPC is to use to either used the currently supported Debian 8 (codenamed Jessie) or the unstable branch known as Sid.

Why would you want to contribute to Debian PowerPC

- FREE Software and DFSF
- PowerPC is a RISC architecture (more on that later)
- All the existing G3, G4, and G5 Mac Machines
- All the existing Freescale/NXP Boards/Amigas/etc.
- Diversity, freedom, and choice
- A learning opportunity for non-x86 architecture and Linux
- The PowerPC Notebook Project
- Saving the world! :-)

Installation of Debian PPC/PPC64

First things first: check if your computer is present in the supported list:

https://www.debian.org/ports/powerpc/inst/install

Also make note of whether or not your system is 64-bit capable, in which case you will install the 64-bit PowerPC version of Debian.

Now that you are ready to install Debian powerpc, you still have two more questions to answer:

Which Installation Media do you want to use?
USB stick: Very convenient - but not really straightforward. Becomes easy when you get the hang of it.
CD : The easiest - if you still have some CD-R / CD-RW around, and your CD writer is still working :-)
Hard Drive (HD) : Cannot see any real advantage over using USB stick - but you can do this if you want to.
debootstrap : Very easy - almost magical - if you already have a running Debian installation on your target machine.
Which Target Partitioning Scheme to use?
Debian alone on target disk - with one or several partitions - the most straightforward.
Debian sharing the disk with other OSes (MacOSX or others) - you will need to partition your disk, and move things around. Can be (is) worth it.
Debian alone on an external "firewire" disk - Haven't tested this. Could be interesting if you want to keep your internal disk as is, or if your internal disk is dead, and you do not have a replacement or you do not want to open your machine.

The rest of this section will describe an installation using a USB stick, on a supported machine - in my case, a venerable G4 PowerBook Aluminum. Debian is alone on the disk.
(I also have an iMac G5 MacOSX / Debian stable / Debian unstable installation - where unstable was installed using debootstrap)

Download ISO image

Normally, I would install Debian stable first, then upgrade to Debian unstable. But we are not in a normal situation anymore, so we'll install unstable directly.

For G4 and earlier (32-bits disk image):

ftp://ftp.debian.org/debian/dists/sid/main/installer-powerpc/current/images/powerpc/netboot/mini.iso

For G5 and later (64-bits disk image):

ftp://ftp.debian.org/debian/dists/sid/main/installer-powerpc/current/images/powerpc64/netboot/mini.iso

The one I used is from the 04/07/2017 (7th of April 2017).

Write ISO image to USB stick

If you wanted to write the boot image on CD-ROM (CD-R or CD-RW) you would use a software like brasero.

For the USB stick, the easiest (only) way to do this is using the dd command (on linux or MacOSX).
One thing to know about the dd command is that you need to be careful when using it - do not use it as root - unless you know what you're doing.
Now the thing is, we need to use it as root to write the ISO image on the stick...

First, cd to the directory containing the disk image.
Then you need to get the device name for your USB stick. Plug it in and type:
Linux:

lsblk

MacOSX:

diskutil list

Or you can just list the mounted filesystems:

df

On my computer the USB stick is /dev/sdb. There is a partition on it, and it is mounted on /dev/sdb1.

Second, you need to unmount the mounted partition:

sudo umount /dev/sdb1

Finally, write the image:

sudo dd if=mini.iso of=/dev/sdb

Boot from USB Stick

If you were using a CD-ROM, you would just boot while holding the c button.

To boot on the USB stick, you'll need to invoke Open Firmware (equivalent of BIOS / EFI).
WARNING: This is command line wizardry!

Here goes:

Plug in the USB stick and then boot your computer - while pressing on the <Command> + <Option> + o + f buttons.
If you're not using an apple keyboard, you'll need to use <Windows> + <Alt> + o + f.

(if you're using a G5 machine - get earplugs or something - and do not do this at night in your room - the fans will run at maximum speed - and that's very noisy).

First you need to identify your USB stick (in Open Firmware terminology - and this depends on your computer and the USB port you're using):

dev / ls

Scroll down (<Space>) until you get something like:

/usb@1b
/disk@1

Now we know our USB stick is on usb@1b and is known as disk@1.

We still need to find the alias of usb@1b:

devalias

You need to look for the usb0, usb1 etc... corresponding to usb@1b:
On my computer it was usb1.

Finally, boot your computer using:

boot usb1/disk@1:2,\\yaboot

(This means we are booting on partition 2 of disk@1 which is connected on usb1.)


You're ready to start the installation if you get the yaboot prompt:

Welcome to yaboot version 1.3.17
Enter "help" to get some basic usage information
boot:

Base Installation

You need to be somehow familiar with the Debian Installer to consider it easy...
It is not difficult, really, but it might get intimidating if you're doing this for the first time...


To cut this short:

- plug in your ethernet cable (wireless networking will not work during installation).
- follow the installer steps - selecting the default options (if you're going to use the full disk - no manual partitioning).


To give you a better idea, here is an overview of the main steps - with some comments where appropriate:

Starting with the yaboot prompt, type expert or install:

boot: expert

You'll get to the "familiar" red / grey / blue Debian installer main menu:

Choose language
Access software for a blind person using a braille display
Configure the keyboard
Detect network hardware
Configure the network
Choose a mirror of the Debian archive
Download installer components
...

All goes smoothly until you start Choose a mirror of the Debian archive.
It seems the installer is still looking for stretch - and as you know, err, it has been killed.
So, after selecting your mirror, you'll get a warning telling you:

The specified (default) Debian version (stretch) is not available from the selected mirror. It is possible to continue and select a different release for your installation, but normally you should go back and select a different mirror that does support the correct version.
Go back and try a different mirror?

You should select No This will allow you later to choose sid (unstable).

Then, after completing Download installer components, you get back the Debian installer main menu, with some additional steps to execute:

Set up users and passwords
- disable root login (I do this for security - and use sudo or Root Terminal for administration)
configure the clock
Detect disks
Partition disks
- use the Guided partitioning + ext3 filesystem (I've had issues with yaboot and ext4).
Install the base system
- I have used the linux-image-powerpc kernel + targeted initrd.
Configure the package manager
- do not use non-free and contrib software. We'll later use contrib for wireless - but in a controlled way.
Select and install software
- please do configure the popularity-contest package. This will help Debian powerpc by showing the community people are still using it!
- For desktop use you'd also want to install mate-desktop-environment or LXDE; you can also install a simple Window Manager like Openbox or IceWM, but will require bigger tuning work.
Install yaboot on a hard disk
Continue without a boot loader
Finish the installation
- this will allow you to reboot into your new system!

Additional Components

Here are some additional components and applications to improve your Debian powerpc experience:

compositing (buffering to improve display).
sudo apt-get install compton
Preferences -> Default applications for LXSession
Core applications -> Composite Manager: compton
Autostart -> + Add compton
cpu frequency scaling (I like to keep my computer as silent as possible).
sudo apt-get install cpufrequtils
To get list of available cpufreq governors + statistics:
cpufreq-info
To dynamically set CPU speed at max performance:
sudo cpufreq-set -g performance
To dynamically set CPU at half-speed:
sudo cpufreq-set -g powersave
To dynamically set CPU in adaptive speed:
sudo cpufreq-set -g ondemand
To set CPU at half-speed - persistent after reboot:
sudo vi /etc/default/cpufrequtils
GOVERNOR="powersave"
To set CPU in adaptive speed - persistent after reboot:
sudo vi /etc/default/cpufrequtils
GOVERNOR="ondemand"
links2: a mega-fast web browser (graphic and command line) - firefox ESR is already installed - but it is (much) slower.
sudo apt-get install links2
wireless networking - you'll need to use the contrib repository - and download a non-free binary. Skip this if you want to keep a [DFSG] compliant installation.
First remove wicd (only if you installed LXDE, Mate installs network-manager by default): wireless did not work at all with wicd for me...
sudo apt-get autoremove wicd
Then edit apt sources.list to add contrib:
sudo nano /etc/apt/sources.list
add the word contrib at the end of each line
save the file with Ctrl-o and exit with Ctrl-x
Install the driver (b43):
sudo apt-get update
sudo apt-get install firmware-b43-installer
Then edit back apt sources.list to remove contrib:
sudo nano /etc/apt/sources.list
delete the word contrib at the end of each line
save the file with Ctrl-o and exit with Ctrl-x
sudo apt-get update
Finally install network-manager (only in LXDE, in Mate Desktop, as said, it is already installed):
sudo apt-get install network-manager network-manager-gnome


apple buttons
sound setup
gfx acceleration - without changing the ROM of ATI card
gfx acceleration - changing the ROM of ATI card to use the free ROM (non-compatible with MacOS)

When things go wrong (and they will...)

A word to the wise: We're using unstable.
It is unstable.

A new installation on my PowerBook G4 Al (radeon) works just fine on first boot...Rebooting 2 / 3 times is OK too...
However, at one point, the LCD backlight would get turned off when xserver starts.
The login screen is here, but there is no backlight!

It took me some time to find the culprit: pbbuttonsd ( and/or hdparm ).

So, If you get the problem, you'll need to uninstall them. This would deactivate some functionality on Apple Laptops, but at least, your system is usable.
(You might like to do this right away if you're using a PowerBook G4 Al 15'...)

So, first, you'd want to reboot:

Switch to a Console screen (F1 to F6):
<Ctrl> + <Option> + <F1>
To be sure, you might need to do it again while holding the <fn> button:
<fn> + <Ctrl> + <Option> + <F1>
Type <Enter> 3/4 time to get rid of stray characters.
(Remember, you're still in the dark - no backlight.)
Now, type your Login then <Enter> then Password then <Enter> and wait for a couple of seconds.
(Again type <Enter> 3/4 time to get rid of any potential stray characters.)
Type the command to reboot your computer:
sudo shutdown -r now (followed by <Enter>
Enter your Password again (for sudo)

The computer should reboot now (wait for a couple of seconds again).
If it doesn't, that means you're not made for typing in the dark... Try again, or just power off the machine by holding the power button (for a couple of seconds).

Now, when you get to the yaboot prompt, start with no graphics hardware:

boot: Linux nomodeset

You'll start into an ugly and unusable login screen.

Switch now to a Console screen (F1 to F6):

<Ctrl> + <Option> + <F1>

Welcome to Debian command line OS! (Wireless networking works).

Next remove pbbuttonsd and hdparm:

sudo apt-get purge pbbuttonsd
sudo apt-get autoremove

On next reboot, you'll get back your backlight!


In case something else happens, here is a list of links that can be of help:
Debian GNU/Linux Installation Guide (powerpc).
Debian powerpc port FAQ.
Debian powerpc mailing list.
Debian powerpc IRC channel (#debianppc) on OFTC IRC network.
Ubuntu PowerPC Known Issues.

Overview of Debian Bug Submission/Testing/Integration Process

Simple description (graphical diagram) of content from https://wiki.debian.org/HowtoUseBTS


Installation of Development/Debugging Tools

tools used for development, debugging etc...


popcon: show Debian community that powerpc is still actively used!

this can help bringing back Debian powerpc as a release architecture


Obtaining Source Code & Building From Source

There are two methods for obtaining a package's source code (and probably more) in Debian. The first is to use apt and the second is to download the source directly from it's upstream location.

1) Using apt-get source
2) Downloading Source from Upstream


Patches

Making Patches, sharing and applying them


Packages

Creating Debian packages - Conditions and rules to follow for packages to be included in Debian


Creating ISO Images

...


Debugging and Profiling

...


64-bit / 32-bit

...

OpenFirmware (OF) / U-Boot

U-Boot readme for T2080RDB (note about the switch settings: 0 is ON and 1 is OFF) Also see NXP SDK docs

To build on Debian (to be verified)

apt-get install gcc-powerpc-linux-gnu qemu-user-static

powerpc-linux-gnu-gcc (Debian 6.3.0-18) 6.3.0

git clone https://gitlab.com/oshw-powerpc-notebook/freescale.com-ppc-u-boot.git
cd freescale.com-ppc-u-boot
git clone https://github.com/qoriq-open-source/fm-ucode.git
make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- -j33 T2080RDB_SDCARD_config
make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- -j33

install - assuming your SD card reader is /dev/disk/by-id/usb-Mass_Storage_Device_1234567890AB-0:0 (to be verified)

Need to make space for u-boot. Default is first partition starting at sector 2048 which is slightly before end of space reserved for u-boot.

sfdisk /dev/disk/by-id/usb-Mass_Storage_Device_1234567890AB-0:0 << EOF
label: dos
label-id: 0x00000000
device: /dev/sda
unit: sectors
/dev/sda1 : start=        8192, size=    15325184, type=83
EOF

Install u-boot

dd if=u-boot-with-spl-pbl.bin of=/dev/disk/by-id/usb-Mass_Storage_Device_1234567890AB-0\:0 seek=8 count=2048
dd if=fm-ucode/fsl_fman_ucode_t2080_r1.1_106_4_18.bin of=/dev/disk/by-id/usb-Mass_Storage_Device_1234567890AB-0\:0 seek=2080 count=128

create filesystem on card - newest ext4 features are not supported by dated u-boot ext4 driver so use ext3

mkfs.ext3 /dev/disk/by-id/usb-Mass_Storage_Device_1234567890AB-0\:0-part1

install Debian on created filesystem

mount /dev/disk/by-id/usb-Mass_Storage_Device_1234567890AB-0\:0-part1 /mnt
debootstrap --arch=powerpc --foreign --include linux-image-powerpc64,isc-dhcp-client oldstable /mnt/
cp /usr/bin/qemu-ppc-static /mnt/usr/bin/qemu-ppc-static
chroot /mnt
debootstrap/debootstrap --second-stage
passwd
exit

Configure u-boot on SD card - this is underdocumented so YMMV

mkdir /mnt/boot/extlinux
cat >/mnt/boot/extlinux/extlinux.conf <<EOF

TIMEOUT 100
DEFAULT default
MENU TITLE Boot menu

LABEL default
       MENU LABEL Default
       LINUX /vmlinuz
       INITRD /initrd.img
       APPEND root=/dev/mmc0p1 ro console=tty0 console=ttyS0,115200n8

LABEL old
       MENU LABEL old
       LINUX /vmlinuz.old
       INITRD /initrd.img.old
       APPEND root=/dev/mmc0p1 ro console=tty0 console=ttyS0,115200n8

LABEL exit
       MENU LABEL Local boot script (boot.scr)
       LOCALBOOT 1

EOF

Building Your Own Custom Kernel

...


Altivec - PowerPC Secret Weapon

...

Drivers

...