Debian PPC Starters Manual: Difference between revisions
No edit summary |
|||
(13 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
''Get inspiration and information from '' http://www.debian.org/doc/maint-guide/ | ''Get inspiration and information from '' http://www.debian.org/doc/maint-guide/ | ||
''keep this guide simple, in the form of: | ''keep this guide simple, in the form of: | ||
'' | |||
''Title / Why would you want to do that / tasks and commands to do it'' | ''Title / Why would you want to do that / tasks and commands to do it'' | ||
== Introduction == | ==Introduction== | ||
Currently, Big Endian PowerPC architectures (powerpc/ppc64) are only classified as ports within Debian (a.k.a [https://www.ports.debian.org Debian Ports]), 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]] | |||
* 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 | : 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. | 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: | 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 '''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 | |||
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. | : 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)'' | ''(I also have an iMac G5 MacOSX / Debian stable / Debian unstable installation - where unstable was installed using debootstrap)'' | ||
===Download ISO=== | |||
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): | |||
: http://ftp.debian.org/debian/dists/sid/main/installer-powerpc/current/images/powerpc/netboot/mini.iso | : http://ftp.debian.org/debian/dists/sid/main/installer-powerpc/current/images/powerpc/netboot/mini.iso | ||
For G5 and later (64-bits disk image): | For G5 and later (64-bits disk image):: http://ftp.debian.org/debian/dists/sid/main/installer-powerpc/current/images/powerpc64/netboot/mini.iso | ||
: http://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). | The one I used is from the 04/07/2017 (7th of April 2017). | ||
===Write ISO 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 <code>brasero</code>. | |||
For the '''USB stick''', the easiest (only) way to do this is using the <code>dd</code> command (on linux or [https://langui.sh/2011/04/02/using-dd-in-os-x/ MacOSX]). | |||
One thing to know about the <code>dd</code> 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, <code>cd</code> 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: | Linux: | ||
: <code>lsblk</code> | : <code>lsblk</code> | ||
MacOSX: | MacOSX:: <code>diskutil list</code> | ||
: <code>diskutil list</code> | Or you can just list the mounted filesystems: | ||
Or you can just list the mounted filesystems: | |||
: <code>df</code> | : <code>df</code> | ||
On my computer the USB stick is <code>/dev/sdb</code>. There is a partition on it, and it is mounted on <code>/dev/sdb1</code>. | On my computer the USB stick is <code>/dev/sdb</code>. There is a partition on it, and it is mounted on <code>/dev/sdb1</code>. | ||
Second, you need to '''unmount''' the mounted partition: | Second, you need to '''unmount''' the mounted partition:: <code>sudo umount /dev/sdb1</code> | ||
: <code>sudo umount /dev/sdb1</code> | |||
Finally, write the image: | Finally, write the image: : <code>sudo dd if=mini.iso of=/dev/sdb</code> | ||
: <code>sudo dd if=mini.iso of=/dev/sdb</code> | ===Boot from USB Stick=== | ||
If you were using a '''CD-ROM''', you would just boot while holding the <code>c</code> 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: | Here goes: | ||
Plug in the USB stick and then boot your computer - while pressing on the <code>< | Plug in the USB stick and then boot your computer - while pressing on the <code><command></command> + <option> + o + f</option></code> buttons. | ||
If you're not using an apple keyboard, you'll need to use <code>< | |||
If you're not using an apple keyboard, you'll need to use <code><windows> + <alt> + o + f</alt></windows></code>. | |||
(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). | (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): | 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): | ||
: <code>dev / ls</code> | : <code>dev / ls</code> | ||
Scroll down (<code>< | Scroll down (<code><space></space></code>) until you get something like: | ||
: <code>/usb@1b</code> | : <code>/usb@1b</code>:: <code>/disk@1</code> | ||
:: <code>/disk@1</code> | |||
Now we know our USB stick is on <code>usb@1b</code> and is known as <code>disk@1</code>. | Now we know our USB stick is on <code>usb@1b</code> and is known as <code>disk@1</code>. | ||
We still need to find the '''alias''' of <code>usb@1b</code>: | |||
We still need to find the '''alias''' of <code>usb@1b</code>: | |||
: <code>devalias</code> | : <code>devalias</code> | ||
You need to look for the usb0, usb1 etc... corresponding to <code>usb@1b</code>: | You need to look for the usb0, usb1 etc... corresponding to <code>usb@1b</code>: | ||
On my computer it was <code>usb1</code>. | |||
Finally, '''boot''' your computer using: | |||
: <code> | : <code>boot usb1/disk@1:2,\\yaboot</code> | ||
=== Base Installation === | (This means we are booting on partition <code>2</code> of <code>disk@1</code> which is connected on <code>usb1</code>.) | ||
You're ready to start the installation if you get the '''yaboot''' prompt: | |||
: <code>Welcome to yaboot version 1.3.17</code>: <code>Enter "help" to get some basic usage information</code>: <code>boot:</code> | |||
===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: | To cut this short: | ||
To give you a better idea, here is an overview of the '''main steps''' - with some comments where appropriate: | : - 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''':: <code>boot: expert</code> | |||
: <code> | |||
: | |||
You'll get to the "familiar" red / grey / blue '''Debian installer main menu''': | |||
: <code>Choose language</code>: <code>Access software for a blind person using a braille display</code>: <code>Configure the keyboard</code>: <code>Detect network hardware</code>: <code>Configure the network</code>: <code>Choose a mirror of the Debian archive</code>: <code>Download installer components</code>: ... | |||
: <code> | |||
: <code> | |||
All goes smoothly until you start <code>Choose a mirror of the Debian archive</code>. | |||
It seems the installer is still looking for <code>stretch</code> - and as you know, err, it has been ''killed''. | |||
So, after selecting your mirror, you'll get a '''warning''' telling you:: <code>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.</code>: <code> Go back and try a different mirror?</code> | |||
You should select <code>No</code> This will allow you later to choose <code>sid (unstable)</code>. | |||
Then, after completing <code>Download installer components</code>, you get back the '''Debian installer main menu''', with some '''additional steps''' to execute: : <code>Set up users and passwords</code>:: - disable root login (I do this for security - and use <code>sudo</code> or <code>Root Terminal</code> for administration): <code>configure the clock</code>: <code>Detect disks</code>: <code>Partition disks</code>:: - use the Guided partitioning + <code>ext3</code> filesystem (I've had issues with yaboot and <code>ext4</code>).: <code>Install the base system</code>:: - I have used the <code>linux-image-powerpc kernel</code> + <code>targeted initrd</code>. : <code>Configure the package manager</code> :: - do not use <code>non-free</code> and <code>contrib</code> software. We'll later use <code>contrib</code> for wireless - but in a controlled way.: <code>Select and install software</code>:: - please do configure the <code>popularity-contest</code> package. This will '''help Debian powerpc''' by showing the community people are still using it!:: - For desktop use you'd also want to install <code>mate-desktop-environment</code> or <code>LXDE</code>; you can also install a simple Window Manager like Openbox or IceWM, but will require bigger tuning work.: <code>Install yaboot on a hard disk</code>: <code>Continue without a boot loader</code>: <code>Finish the installation</code>:: - 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: | Here are some additional components and applications to improve your Debian powerpc experience: | ||
: | : '''compositing''' (buffering to improve display).:: <code>sudo apt-get install compton</code>:: Preferences -> Default applications for LXSession::: Core applications -> Composite Manager: <code>compton</code>::: Autostart -> + Add <code>compton</code> | ||
:: <code>sudo apt-get install | |||
: conkeror: another '''mega-fast web browser''' (graphic - keyboard controlled, based on firefox ESR). Believe me, you'll love it! | : '''cpu frequency scaling''' (I like to keep my computer as silent as possible).:: <code>sudo apt-get install cpufrequtils</code>: To get list of available cpufreq governors + statistics::: <code>cpufreq-info</code>: To dynamically set CPU speed at max performance::: <code>sudo cpufreq-set -g performance</code>: To dynamically set CPU at half-speed::: <code>sudo cpufreq-set -g powersave</code>: To dynamically set CPU in adaptive speed::: <code>sudo cpufreq-set -g ondemand</code>: To set CPU at half-speed - persistent after reboot::: <code>sudo vi /etc/default/cpufrequtils</code>:: <code>GOVERNOR="powersave"</code>: To set CPU in adaptive speed - persistent after reboot::: <code>sudo vi /etc/default/cpufrequtils</code>:: <code>GOVERNOR="ondemand"</code> | ||
:: <code>sudo apt-get install | : links2: a '''mega-fast web browser''' (graphic and command line) - firefox ESR is already installed - but it is (much) slower.:: <code>sudo apt-get install links2</code> | ||
: conkeror: another '''mega-fast web browser''' (graphic - keyboard controlled, based on firefox ESR). Believe me, you'll love it!:: <code>sudo apt-get install conkeror</code> | |||
: '''wireless networking''' - you'll need to use the <code>contrib</code> repository - and download a non-free binary. Skip this if you want to keep a [[https://www.debian.org/social_contract#guidelines 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...:: <code>sudo apt-get autoremove wicd</code> | |||
: Then edit apt sources.list to add <code>contrib</code>::: <code>sudo nano /etc/apt/sources.list</code>:: add the word <code>contrib</code> at the end of each line:: save the file with <code>Ctrl-o</code> and exit with <code>Ctrl-x</code>: Install the driver (b43)::: <code>sudo apt-get update</code>:: <code>sudo apt-get install firmware-b43-installer</code>: Then edit back apt sources.list to remove <code>contrib</code>::: <code>sudo nano /etc/apt/sources.list</code>:: delete the word <code>contrib</code> at the end of each line:: save the file with <code>Ctrl-o</code> and exit with <code>Ctrl-x</code>:: <code>sudo apt-get update</code>: Finally install network-manager (only in LXDE, in Mate Desktop, as said, it is already installed)::: <code>sudo apt-get install network-manager network-manager-gnome</code> | |||
: '''gfx acceleration''' - without changing the ROM of ATI card - you'll need to use the <code>non-free</code> repository. (07/01/2018) I'm afraid some basic functionalities - like switching to tty Consoles stopped working without using the proprietary drivers - at least on PowerBook G4 ... I'm still trying to understand why. | |||
: Edit apt sources.list to add <code>non-free</code>::: <code>sudo nano /etc/apt/sources.list</code>:: add the word <code>non-free</code> at the end of each line:: save the file with <code>Ctrl-o</code> and exit with <code>Ctrl-x</code>: Install the firmware-linux-nonfree::: <code>sudo apt-get update</code>:: <code>sudo apt-get install firmware-linux-nonfree</code>: Then edit back apt sources.list to remove <code>non-free</code>::: <code>sudo nano /etc/apt/sources.list</code>:: delete the word <code>non-free</code> at the end of each line:: save the file with <code>Ctrl-o</code> and exit with <code>Ctrl-x</code>:: <code>sudo apt-get update</code> | |||
: Now you need to set the correct yaboot kernel option::: <code>sudo nano /etc/yaboot.conf</code>:: Add a line under each <code>label=...</code> line: <code>append="radeon.agpmode=-1"</code> to get something like: | |||
::: <code>image=/boot/vmlinux</code> | |||
:::: <code> label=Linux</code> | |||
:::: <code> append="radeon.agpmode=-1"</code> | |||
:::: <code> read-only</code> | |||
:::: <code> initrd=/boot/initrd.img</code> | |||
:: save the file with <code>Ctrl-o</code> and exit with <code>Ctrl-x</code>:: Apply your modifications by executing <code>sudo ybin -v</code> | |||
: '''sound setup''' - sound seems to work out-of-the-box now, but it is muted by default, and PCM volume is set to 0...:: open a terminal window, and execute <code>alsamixer</code>:: Press <code>F6</code> and select <code>SoundByLayout</code>:: Then press <code>F5</code> and check if <code>Master</code> is muted (MM) - if it is, select it and press <code>m</code>. You can increase volume using <code>UP arrow</code>:: Then scroll right and check if <code>PCM</code> volume is set to 0. if it is, increase volume using <code>UP arrow</code>. | |||
: ''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) almost works just fine on first boot... | |||
There is someissue with LCD '''backlight''' though. | |||
The major bugs were fixed (I think): | |||
= | :: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795498#27:: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863438#5But there is still a small issue: After booting, screen is dark. Just press <code>Brightness UP</code> or <code><fn> + <f2></f2></fn></code> and you'll get your backlight back. | ||
If you're still having issues (screen freeze): | |||
You can try to reboot with no graphics hardware: | |||
: Switch to a '''Console''' screen (<code>F1</code> to <code>F6</code>)::: <code><ctrl> + <option> + <f1></f1></option></ctrl></code>: To be sure, you might need to do it again while holding the <code><fn></fn></code> button::: <code><fn> + <ctrl> + <option> + <f1></f1></option></ctrl></fn></code>: Type <code><enter></enter></code> 3/4 time to get rid of stray characters.: (Remember, you're still in the dark - no backlight.): Now, type your '''Login''' then <code><enter></enter></code> then '''Password''' then <code><enter></enter></code> and wait for a couple of seconds.: (Again type <code><enter></enter></code> 3/4 time to get rid of any potential stray characters.): Type the command to reboot your computer::: <code>sudo shutdown -r now</code> (followed by <code><enter></enter></code>: 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). | 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: | Now, when you get to the yaboot prompt, start with no graphics hardware:: <code>boot: Linux '''nomodeset'''</code> | ||
: <code>boot: Linux '''nomodeset'''</code> | |||
You'll start into an ugly and unusable login screen. | You'll start into an ugly and unusable login screen. | ||
Switch now to a '''Console''' screen (<code>F1</code> to <code>F6</code>): | Switch now to a '''Console''' screen (<code>F1</code> to <code>F6</code>):: <code><ctrl> + <option> + <f1></f1></option></ctrl></code> | ||
: <code>< | |||
Welcome to Debian command line OS! | Welcome to Debian command line OS! | ||
(Wireless networking works). | (Wireless networking works). | ||
In case something else happens, here is a list of links that can be of help: | In case something else happens, here is a list of links that can be of help: | ||
[https://www.debian.org/releases/stable/powerpc/ Debian GNU/Linux Installation Guide (powerpc).] | |||
[https://wiki.debian.org/PowerPC/FAQ Debian powerpc port FAQ.] | |||
[https://lists.debian.org/debian-powerpc/ Debian powerpc mailing list.] | |||
[irc://irc.debian.org/debianppc Debian powerpc IRC channel (#debianppc) on OFTC IRC network.] | |||
[https://wiki.ubuntu.com/PowerPCKnownIssues Ubuntu PowerPC Known Issues.] | |||
==Overview of Debian Bug Submission/Testing/Integration Process== | |||
''Simple description (graphical diagram) of content from '' https://wiki.debian.org/HowtoUseBTS | ''Simple description (graphical diagram) of content from '' https://wiki.debian.org/HowtoUseBTS | ||
== Installation of Development/Debugging Tools == | ==Installation of Development/Debugging Tools== | ||
''tools used for development, debugging etc... '' | ''tools used for development, debugging etc... '' | ||
== popcon: show Debian community that powerpc is still actively used! == | ==popcon: show Debian community that powerpc is still actively used!== | ||
''this can help bringing back Debian powerpc as a release architecture'' | ''this can help bringing back Debian powerpc as a release architecture'' | ||
== Obtaining Source Code & Building From Source== | ==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 | :: 1) Using apt-get source | ||
:: 2) Downloading Source from Upstream | :: 2) Downloading Source from Upstream | ||
==Patches== | |||
== Patches == | |||
''Making Patches, sharing and applying them'' | ''Making Patches, sharing and applying them'' | ||
== Packages == | ==Packages== | ||
''Creating Debian packages - Conditions and rules to follow for packages to be included in Debian'' | ''Creating Debian packages - Conditions and rules to follow for packages to be included in Debian'' | ||
== Creating ISO Images == | ==Creating ISO Images== | ||
''...'' | ''...'' | ||
== Debugging and Profiling == | ==Debugging and Profiling== | ||
''...'' | ''...'' | ||
== 64-bit / 32-bit == | ==64-bit / 32-bit== | ||
''...'' | ''...'' | ||
==OpenFirmware (OF) / U-Boot== | |||
[https://gitlab.com/oshw-powerpc-notebook/freescale.com-ppc-u-boot/tree/master/board/freescale/t208xrdb U-Boot readme for T2080RDB] (note about the switch settings: 0 is ON and 1 is OFF) Also see [https://www.nxp.com/docs/en/supporting-information/QORIQ-SDK-2.0-IC-REV0.pdf NXP SDK docs] | |||
To build on Debian (to be verified) | |||
apt-get install gcc-powerpc-linux-gnu qemu-user-static | apt-get install gcc-powerpc-linux-gnu qemu-user-static | ||
Line 365: | Line 269: | ||
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. | 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 | sfdisk /dev/disk/by-id/usb-Mass_Storage_Device_1234567890AB-0:0 << EOF label: dos | ||
label-id: 0x00000000 | label-id: 0x00000000 | ||
device: /dev/sda | device: /dev/sda | ||
Line 395: | Line 298: | ||
mkdir /mnt/boot/extlinux | mkdir /mnt/boot/extlinux | ||
cat >/mnt/boot/extlinux/extlinux.conf << | cat >/mnt/boot/extlinux/extlinux.conf <<eof | ||
TIMEOUT 100 | TIMEOUT 100 | ||
DEFAULT default | DEFAULT default | ||
MENU TITLE Boot menu | 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 | |||
</eof> | |||
==Building Your Own Custom Kernel== | |||
''...'' | ''...'' | ||
==Altivec - PowerPC Secret Weapon== | |||
''...'' | |||
==Drivers== | |||
''...'' | ''...'' |
Latest revision as of 20:47, 8 December 2018
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 (a.k.a Debian Ports), 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
- 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:
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
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):
For G5 and later (64-bits disk image):: http://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 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></command> + <option> + o + f</option>
buttons.
If you're not using an apple keyboard, you'll need to use <windows> + <alt> + o + f</alt></windows>
.
(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></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 -> + Addcompton
- 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
- conkeror: another mega-fast web browser (graphic - keyboard controlled, based on firefox ESR). Believe me, you'll love it!::
sudo apt-get install conkeror
- 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 wordcontrib
at the end of each line:: save the file withCtrl-o
and exit withCtrl-x
: Install the driver (b43):::sudo apt-get update
::sudo apt-get install firmware-b43-installer
: Then edit back apt sources.list to removecontrib
:::sudo nano /etc/apt/sources.list
:: delete the wordcontrib
at the end of each line:: save the file withCtrl-o
and exit withCtrl-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
- gfx acceleration - without changing the ROM of ATI card - you'll need to use the
non-free
repository. (07/01/2018) I'm afraid some basic functionalities - like switching to tty Consoles stopped working without using the proprietary drivers - at least on PowerBook G4 ... I'm still trying to understand why. - Edit apt sources.list to add
non-free
:::sudo nano /etc/apt/sources.list
:: add the wordnon-free
at the end of each line:: save the file withCtrl-o
and exit withCtrl-x
: Install the firmware-linux-nonfree:::sudo apt-get update
::sudo apt-get install firmware-linux-nonfree
: Then edit back apt sources.list to removenon-free
:::sudo nano /etc/apt/sources.list
:: delete the wordnon-free
at the end of each line:: save the file withCtrl-o
and exit withCtrl-x
::sudo apt-get update
- Now you need to set the correct yaboot kernel option:::
sudo nano /etc/yaboot.conf
:: Add a line under eachlabel=...
line:append="radeon.agpmode=-1"
to get something like:image=/boot/vmlinux
label=Linux
append="radeon.agpmode=-1"
read-only
initrd=/boot/initrd.img
- save the file with
Ctrl-o
and exit withCtrl-x
:: Apply your modifications by executingsudo ybin -v
- sound setup - sound seems to work out-of-the-box now, but it is muted by default, and PCM volume is set to 0...:: open a terminal window, and execute
alsamixer
:: PressF6
and selectSoundByLayout
:: Then pressF5
and check ifMaster
is muted (MM) - if it is, select it and pressm
. You can increase volume usingUP arrow
:: Then scroll right and check ifPCM
volume is set to 0. if it is, increase volume usingUP arrow
. - 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) almost works just fine on first boot...
There is someissue with LCD backlight though.
The major bugs were fixed (I think):
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795498#27:: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863438#5But there is still a small issue: After booting, screen is dark. Just press
Brightness UP
or<fn> + <f2></f2></fn>
and you'll get your backlight back.
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795498#27:: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863438#5But there is still a small issue: After booting, screen is dark. Just press
If you're still having issues (screen freeze):
You can try to reboot with no graphics hardware:
- Switch to a Console screen (
F1
toF6
):::<ctrl> + <option> + <f1></f1></option></ctrl>
: To be sure, you might need to do it again while holding the<fn></fn>
button:::<fn> + <ctrl> + <option> + <f1></f1></option></ctrl></fn>
: Type<enter></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></enter>
then Password then<enter></enter>
and wait for a couple of seconds.: (Again type<enter></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>
: 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></f1></option></ctrl>
Welcome to Debian command line OS! (Wireless networking works).
In case something else happens, here is a list of links that can be of help:
Debian GNU/Linux Installation Guide (powerpc).
Debian powerpc IRC channel (#debianppc) on OFTC IRC network.
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
</eof>
Building Your Own Custom Kernel
...
Altivec - PowerPC Secret Weapon
...
Drivers
...