When the machine boots up, press c to boot from the Gentoo Install LiveCD. In case when there is a protection to the OpenFirmware, boot into it (Command+Option+O+F) and type
boot cd:,\\:tbxi
at the prompt. Another solution is to press the Option key in order to display a graphical list of the possible boot options.
Plugged into a DHCP-based lan, the network is automagically configured to the appropriate parameters.
The hard disk is a 160 GB (and there is 1.2 GB RAM). It will be partitioned roughly as follows.
| Device | Type/Mount | Size |
|---|---|---|
| hda1 | Partition map | 32 kB |
| hda2 | Bootblock | 800 kB |
| hda3 | / | 30 GB |
| hda4 | swap | 1.2 MB |
| hda5 | /home | 30 GB |
| hda6 | /data | … |
These partitions are created using the mac-fdisk tool.
# mac-fdisk /dev/hda /dev/hda
Some cleanup in the existing partitions may be necessary. Then the main Linux partitions can be created.
Command (? for help): i size of 'device' is 312581808 blocks: new size of 'device' is 312581808 blocks Command (? for help): b First block: 2p Command (? for help): c First block: 3p Length (in block, kB (k), MB (M) or GB (G)): 30G Name of partition: root Command (? for help): c First block: 4p Length (in block, kB (k), MB (M) or GB (G)): 1280M Name of partition: swap Command (? for help): c First block: 5p Length (in block, kB (k), MB (M) or GB (G)): 30G Name of partition: home
We don't need the MacOS X partition. It was created using C instead of c.
Command (? for help): C First block: 6p Length (in block, kB (k), MB (M) or GB (G)): 5G Name of partition: OSX Type of partition: Apple_HFS
The final data partition will use all the remaining space, this is done by specifying a size of 6p.
Command (? for help): c First block: 6p Length (in block, kB (k), MB (M) or GB (G)): 6p Name of partition: data
The final layout can be saved.
Command (? for help): p
/dev/hda
# type name length base ( size ) system
/dev/hda1 Apple_partition_map Apple 63 @ 1 ( 31.5k) Partition map
/dev/hda2 Apple_Bootstrap bootstrap 1600 @ 64 (800.0k) NewWorld bootblock
/dev/hda3 Apple_UNIX_SVR2 root 62914560 @ 1664 ( 30.0G) Linux native
/dev/hda4 Apple_UNIX_SVR2 swap 2621440 @ 20973184 ( 1.2G) Linux swap
/dev/hda5 Apple_UNIX_SVR2 home 62914560 @ 22021760 ( 30.0G) Linux native
/dev/hda6 Apple_UNIX_SVR2 data 184129584 @ 53479040 ( 87.8G) Linux native
Block size=512, Number of Blocks=312581808
DeviceType=0x0, DeviceId=0x0
Command (? for help): w
IMPORTANT: You are about to write a changed partition map to disk.
For any partition you changed the start or size of, writing out
the map causes all data on that partition to be LOST FOREVER.
Make sure you have a backup of any data on such partitions you
want to keep before answering 'yes' to the question below!
Write partition map? [n/y]: y
The partition map has been saved successfully!
Syncing disks.
Partition map written to disk. If any partitions on this disk
were still in use by the system (see messages above), you will need
to reboot in order to utilize the new partition map.
Command (? for help): q
The newly created partitions are then formatted and mounted in /mnt/gentoo at the appropriate mount points.
# mkswap /dev/hda4
...
# swapon /dev/hda4
# mkfs.ext3 -L root /dev/hda3
...
# mkfs.ext3 -L home /dev/hda5
...
# mkfs.ext3 -L data /dev/hda6
...
# mount -t ext3 /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/{home,data}
# mount -t ext3 /dev/hda5 /mnt/gentoo/home
# mount -t ext3 /dev/hda6 /mnt/gentoo/data
We go through http://www.gentoo.org/doc/en/handbook/2006.0/handbook-ppc.xml?part=1&chap=5 (now obsoleted by http://www.gentoo.org/doc/en/handbook/handbook-ppc.xml). A G4 stage 3 from 2009-09-09 will be installed.
It may be good to roughly set the date to one posterior to that of the snapshot.
# date 091520482009
# cd /mnt/gentoo # tar xjpf /PATH/TO/stage3-g4-2006.0.tar.bz2 # tar xjf /PATH/TO/portage-20060123.tar.bz2 -C /mnt/gentoo/usr # mkdir /mnt/gentoo/usr/portage/distfiles # cp /PATH/TO/distfiles/* /mnt/gentoo/usr/portage/distfiles/
Once the base files are in place, one can think about chrooting (http://www.gentoo.org/doc/en/handbook/2006.0/handbook-ppc.xml?part=1&chap=6).
# mount -t proc none /mnt/gentoo/proc # mount -o bind /dev /mnt/gentoo/dev # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf # chroot /mnt/gentoo /bin/bash
We want to build a pure UTF-8 system. According to http://www.gentoo.org/doc/en/utf-8.xml#doc_chap2, it is necessary to play with the locales. First we want to have English (US) and French locales both in UTF-8 and latin, the others are not useful at the time. This is set in /etc/locale.gen.
en_US ISO-8859-1 en_US.UTF-8 UTF-8 #ja_JP.EUC-JP EUC-JP #ja_JP.UTF-8 UTF-8 #ja_JP EUC-JP #en_HK ISO-8859-1 #en_PH ISO-8859-1 #de_DE ISO-8859-1 #de_DE@euro ISO-8859-15 #es_MX ISO-8859-1 #fa_IR UTF-8 fr_FR ISO-8859-1 fr_FR@euro ISO-8859-15 fr_FR@euro.UTF-8 UTF-8 #it_IT ISO-8859-1
Then, we specify that the en_US.UTF-8 locale should be used by default.
# cat > /etc/env.d/02locale LC_ALL="en_US.UTF-8" ^D # env-update # source /etc/profile
Now is the time to specify the contents of the USE flag. Having a look at the contents of /usr/portage/profiles/use.desc (from the chroot), one can add the following to the /etc/make.conf file. The flags needed for the modular X11 package and the Portage overlay are also set here.
CFLAGS="-O2 -mcpu=G4 -mtune=G4 -maltivec -mabi=altivec -fno-strict-aliasing -pipe"
CHOST="powerpc-unknown-linux-gnu"
CXXFLAGS="${CFLAGS}"
ACCEPT_LICENSE="IBM-J1.6"
GENTOO_MIRRORS="ftp://ftp.free.fr/mirrors/ftp.gentoo.org/
http://mirror.ovh.net/gentoo-distfiles/
http://ftp.club-internet.fr/pub/mirrors/gentoo
http://gentoo.modulix.net/gentoo/"
#SYNC="rsync://mirror.internode.on.net/gentoo-portage"
#GENTOO_MIRRORS="http://mirror.internode.on.net/pub/gentoo
#ftp://mirror.pacific.net.au/linux/Gentoo
#http://mirror.pacific.net.au/linux/Gentoo
#ftp://ftp.swin.edu.au/gentoo
#http://ftp.swin.edu.au/gentoo"
PORTDIR_OVERLAY="/usr/local/portage"
USE="X Xaw3d a52 aac aiglx alsa altivec -apache2 apm avahi bash-completion
bzip2 bluetooth caps cdparanoia cdr crypt cups curl dbus -doc dri dvd dvdread
-emacs encode -esd -evo fbcon ffmpeg gcj -gnome -gnome-keyring gnutls gpgme gpm
gtk hal iconv imagemagick imap idle ipv6 jabber -jack java jpeg -kde -qt3 -qt4
kpathsea ldap libnotify midi mozilla mozdevelop mp3 mpeg musicbrainz nptl
nptlonly nsplugin offensive ogg oggvorbis opengl -pcmcia pdf png pop posix
python quicktime readline recode samba sdl slang smime smtp sqlite srv ssl svg
symlink syslog -tetex texlive threads tidy trayicon truetype unicode usb v4l
vorbis win32codecs wxwindows xml2 xosd xprint xsl xulrunner xvid xforms
zeroconf zlib"
INPUT_DEVICES="keyboard mouse evdev"
VIDEO_CARDS="radeon vesa"
source /usr/local/portage/layman/make.conf
#PORTAGE_TMPDIR="/data/portage-tmp"
and
# mkdir /usr/local/portage
Then synchronize the portage tree and do the necessary updates.
# emerge --sync # emerge -u system # etc-update
At this stage, a conflict between sys-apps/shadow and sys-apps/pam-login blocked the update. Uninstalling pam-login solved everything.
Compiling the glibc may fail too, with an unhelpfull error about -mlong-double-128 IBM extended format support. One should make sure that one is using at least gcc-4.1:
# gcc-config -c powerpc-unknown-linux-gnu-3.4.4 # gcc-config -l [1] powerpc-unknown-linux-gnu-3.4.4 [2] powerpc-unknown-linux-gnu-3.4.4-hardened [3] powerpc-unknown-linux-gnu-3.4.4-hardenednopie [4] powerpc-unknown-linux-gnu-3.4.4-hardenednopiessp [5] powerpc-unknown-linux-gnu-3.4.4-hardenednossp [6] powerpc-unknown-linux-gnu-4.1.1 # gcc-config powerpc-unknown-linux-gnu-4.1.1 * Switching native-compiler to powerpc-unknown-linux-gnu-4.1.1 ... [ ok ] # source /etc/profile # gcc-config -c powerpc-unknown-linux-gnu-4.1.1 # emerge -u system
Let's configure a nice kernel and set the appropriate parameters.
First, the timezone.
# cd /etc # rm localtime # ln -s /usr/share/zoneinfo/Europe/Paris localtime
And in /etc/conf.d/clock.
TIMEZONE="Europe/Paris" ... CLOCK_SYSTOHC="yes"
Then pull the kernel sources (linux-2.6.30-gentoo-r4 at the time of the last update).
# USE="-doc symlink" emerge gentoo-sources
Which we compile with the appropriate options (linux-2.6.31-gentoo-r10, 2.6.30-gentoo-r4, 2.6.20-gentoo-r5).
# cd /usr/src/linux # make oldconfig # make vmlinux modules modules_install # cp vmlinux /boot/linux-2.6.30-gentoo-r4
One has the habit to store all the kernels and optional init ramdrives in /boot, then using symlinks to point to the relevant kernel, there is only one for now so all links point to it.
# cd /boot # ln -s linux-2.6.30-gentoo-r4 kernel # ln -s linux-2.6.30-gentoo-r4 kernel.base # ln -s linux-2.6.30-gentoo-r4 kernel.old # ln -s linux-2.6.30-gentoo-r4 kernel.test
The /etc/fstab file should be updated to reflect the mount points of the filsystems we created earlier. The example entries are commented out and the needed ones are added. The relevant parts of the file then looks like the following.
... /dev/hda3 / ext3 noatime 0 1 /dev/hda4 none swap sw 0 0 /dev/hda5 /home ext3 noatime 0 0 /dev/hda6 /data ext3 noatime 0 0 ...
Several files need modification to set the “personality” of the machine.
/etc/conf.d/hostname
# /etc/conf.d/hostname # Set to the hostname of this machine HOSTNAME="gloduk"
The domain names are set in /etc/conf.d/net, we do not want the domain to be overriden by DHCP settings, and there is no NIS domain (for now).
dns_domain_lo="narf.ssji.net" #nis_domain_lo="narf.ssji.net"
The /etc/hosts file also has to be modified accordingly.
... 127.0.0.1 gloduk.narf.ssji.net gloduk localhost.local localhost ::1 gloduk.narf.ssji.net gloduk ip6-localhost ip6-loopback
The network interfaces configuration is set in /etc/conf.d/net. Actually, this part can be skipped. It is said in the file that ”[a] blank configuration will automatically use DHCP for any net.* scripts in /etc/init.d” which is the behavior we want for now. One must, however, remember to create the necessary entries in /etc/init.d for the interfaces to be handily brought up, this is already done for eth0.
The network won't be automatically started at boot as ifplugd will be used to do that. Let's first install it, a DHCP client and the wireless-tools which will soon be needed.
# USE="-doc" emerge ifplugd dhcpcd wireless-tools
First changing the root password might be an interesting idea
# passwd
We use the preexisting operator user as a non-privileged by default administrative user.
# usermod -d /operator -m -g wheel operator # chown -R operator:wheel /operator # passwd operator
The first user of the system (me !) is added.
# useradd -d /home/shtrom -m -g users -G wheel,audio,cdrom,usb,netdev,plugdev,games shtrom # passwd shtrom
It's now time to install the first packages.
System stuff…
# emerge hotplug pbbuttonsd powernowd hdparm (...) # rc-update add hotplug default # rc-update add pbbuttonsd default # rc-update add powernowd default
Some absolutely needed tools.
# emerge vim sudo screen bash-completion links lynx
Useful portage tools…
# emerge eix layman
The configuration file for the Powerbook Buttons (and more) daemon resides in /etc/pbbuttonsd.cnf. Some modifications have to be made in order to have an nice sleep-and-stuff behavior.
onAC_CoverAction = blankscreen (...) NETLoad_device = "wlan0"
We want to allow all users from group wheel to be able to use sudo retaining their usual environment. Using visudo, we uncomment the appropriate line.
Defaults:%wheel !env_reset (...) %wheel ALL=(ALL) ALL
We want enhanced completion for Bash on by default for all users.
# sudo eselect bashcomp enable --global base gentoo ssh subversion gpg2 git configure findutils bzip2 gzip rsync tar sysvrc
The eix database has to be built for later use.
# eix-sync
Some global parameters can be set in /etc/rc.conf.
UNICODE="yes" EDITOR="/usr/bin/vim"
(The lines related to X11 (DISPLAYMANAGER and XSESSION) will be uncommented later.)
eselect is also of use.
# eselect editor set vim # eselect pager set less
It might be interesting to have the SSH daemon start at bootup.
# rc-update add sshd default
The bootloader we will be using is Yaboot.
# emerge yaboot mac-fdisk
It will be configured using the /etc/yaboot.conf file, which can be automatically created using yabootconfig before edition. This has to be done outside of the chroot.
# ^D # yabootconfig --chroot /mnt/gentoo/ yaboot is the Linux Loader for PowerPC. yabootconfig sets up your system to boot directly from your hard disk, without the need for a boot CD, floppy or a network boot. Install yaboot bootstrap on /dev/hda2 to boot Linux from /dev/hda3? [Yes] Creating a simple /mnt/gentoo/etc/yaboot.conf... yabootconfig: Cannot find a kernel, please locate one Enter path to a kernel image: /mnt/gentoo/boot/kernel Enter path to an initrd image (hit Enter for none): Running mkofboot to make the disk bootable... Done
The file can then be edited to fit our desires.
## yaboot.conf generated by yabootconfig 1.0.8
##
## run: "man yaboot.conf" for details. Do not make changes until you have!!
##
## For a dual-boot menu, add one or more of:
## bsd=/dev/hdaX, macos=/dev/hdaY, macosx=/dev/hdaZ
boot=/dev/hda2
device=/pci@f4000000/ata-6@d/disk@0:
partition=3
root=/dev/hda3
timeout=30
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
password=PASSWORD
enableofboot
#enablecdboot
#defaultos=macosx
image=/boot/kernel
label=Linux
read-only
restricted
image=/boot/kernel.old
label=Linux-old
read-only
restricted
image=/boot/kernel.test
label=Linux-test
read-only
image=/boot/kernel.base
label=Linux-base
read-only
macosx=/dev/hda6
The password can be either cleartext or MD5. The MD5 version can be generated using md5sum.
echo CLEARPASS | md5sum
Still out of the chroot, ybin is run to reflect the modifications.
# ybin -v -C /mnt/gentoo/etc/yaboot.conf
At this stage, it becomes possible to reboot and work in the system without chroot. Let's try it
# umount /mnt/gentoo/data /mnt/gentoo/dev /mnt/gentoo/home /mnt/gentoo/proc # reboot
The usual Syslog-ng will be used.
$ sudo emerge syslog-ng $ sudo rc-update add syslog-ng default
This is a laptop which will not be up all the time. Using vixie-cron and anacron seems to be the best choice
$ sudo emerge vixie-cron anacron $ sudo rc-update add vixie-cron default
The slocate package is useful to find files…
$ sudo emerge slocate
The OpenNTPd client from OpenBSD will be used.
$ sudo emerge openntpd $ sudo rc-update add ntpd default
A command line options has to be defined in /etc/conf.d/ntpd to immediately adjust the time on startup.
NTPD_OPTS="-s"
A simple MTA to relay local mail to a know distant MTA, with SSL authentication.
$ sudo emerge ssmtp
If is configured in /etc/ssmtp/ssmtp.conf. We use a duly signed certificate to authenticate with the remote MTA, it lays in /etc/ssl/certs/gloduk.narf.ssji.net.pem. Moreover, all mail for users with UID lesser than 1000 will be sent to user shtrom.
root=shtrom (...) mailhub=smtp.DOMAIN.net AuthUser=USERNAME AuthPass=PASSWORD (...) rewriteDomain=DOMAIN.net (...) FromLineOverride=YES (...) UseTLS=YES UseSTARTTLS=YES (...) UseTLSCert=YES (...) TLSCert=/etc/ssl/certs/gloduk.narf.ssji.net.pem
As there are plaintext passwords in the configuration file, we don't want it to be world readable. A quick hack is to setgid the ssmtp binary to, say, group mail, and only allow that group to read file ssmtp.conf.
$ sudo chgrp mail /usr/sbin/ssmtp $ sudo chmod g+s /usr/sbin/ssmtp $ sudo chgrp mail /etc/ssmtp/ssmtp.conf $ sudo chmod 640 /etc/ssmtp/ssmtp.conf
Out of jest, it has been decided that it would be interesting to eventually try out a Dvorak mapping. This, of course, includes physically remapping the keyboard.
Next time, it may however be wiser to check transparent stickers options.
We start off with this document, but slightly change the approach. Namely, we leave the “bearing” in place, and only remove the “shell”, before putting them back elsewhere.
The shell is clipped to the bearing at the top. The two pieces are separated by sliding some sort of pointey device against the inside of the shell, then using it as a leverv Once unclipped, the bottom slides freely out (upwards).
![]() | ![]() |
Putting the keys back is almost the exact opposite as removing them. It can be useful to lift the bearing to ease sliding the key down before clipping it.
![]() | ![]() | ![]() |
The console layout can be changed in /etc/conf.d/keymaps
KEYMAP="dvorak"
To use a Dvorak keyboard, one just need to use the dvorak XKB variant either in xorg.conf as
Option "XkbVariant" "dvorak"
or, using the more recent hotplug-based input system, in /etc/hal/fdi/policy/10-keymap.fdi:
<merge key="input.xkb.variant" type="string">dvorak-intl</merge>
The Airport Extreme wireless card support is now quite stable. Only the firmware is needed for the card to work. It can be extracted from the OSX driver using bcm43xx-fwcutter. This tool is masked by the ~ppc keyword. It is unmasked in the same fashion as before in the /etc/portage/packages.keywords.
Once this is done, the package can be emerged.
$ sudo emerge b43-fwcutter
The firmware has to be extracted from another driver. An OpenWRT driver does the trick.
$ tar xjf broadcom-wl-4.150.10.5.tar.bz2 $ mkdir /lib/firmware $ sudo b43-fwcutter -w /lib/firmware broadcom-wl-4.150.10.5/driver/wl_apsta_mimo.o
It could also be taken from a (no-longer present) MacOS X partition.
$ sudo b43-fwcutter -w /usr/lib/hotplug/firmware /mnt/osx/System/Library/Extensions/AppleAirPort2.kext/Contents/MacOS/AppleAirPort2
As usual, the startup script is created…
$ cd /etc/init.d $ sudo ln -s net.lo net.wlan0
The easiest to manage the wireless card is to use wpa_supplicant.
$ sudo emerge wpa_supplicant
It is then enabled for wlan0 in /etc/conf.d/net.
modules="wpa_supplicant" wpa_supplicant_wlan0="-Dwext"
To be able to use channels 12 and 13 in France (and, we believe, 14 in Japan), it is necessary to change the regulatory domain of the wireless stack (mac80211). We need a kernel helper, crda, which will pull the domain description list as a depency. The latest version of wpa_supplicant is supposed to know how to do that, but is not in Portage at the time of this writing. To set the domain in the meantime, we use iw.
$ sudo emerge crda iw
The crda helper comes with a udev rule to enable it automatically, but the file does not seem to be placed properly. We correct that
$ cd /etc/udev/rules.d $ sudo ln -s /lib/udev/rules.d/85-regulatory.rules
It is then possible to set the domain using iw. This can be done, if nothing better, in /etc/conf.d/local.start, even if the network configuration is done before.
$ sudo iw reg set FR
There seem to be an issue with the latest version of the firmware 410.2160. After 5 to 10 minutes, the kernel starts spitting out b43-phy0 ERROR: PHY transmission error messages and no data can be transmitted anymore (the network scan returns no network). The firmware has to be downgraded to the previous version, 351.126, to fix the problem The kernel complains when loading it
Aug 9 15:21:20 gloduk b43-phy0: Loading firmware version 351.126 (2006-07-29 05:54:02) Aug 9 15:21:20 gloduk b43-phy0 warning: You are using an old firmware image. Support for old firmware will be removed in July 2008. Aug 9 15:21:20 gloduk b43-phy0 warning: You must go to http://linuxwireless.org/en/users/Drivers/b43#devicefirmware and download the latest firmware (version 4).
but it works like a charm.
The following has been deprecated in favor of wpa_supplicant
In order to scan for available networks, the interface must be brought up before the association, this and other parameters concerning the wireless link have to be defined in /etc/wireless.
preassociate() {
ifconfig $1 up
}
preferred_aps=( "fbxnarf" "NETGEAR" )
key_fbxnarf="1234-5678-9012-3456-7890-1234-56 enc open"
key_NETGEAR="1234:5678:90 enc open"
As the (at least) the DWL-122 driver has to be added separately, the package module-rebuild is useful to keep track of these while updating the kernel.
$ sudo emerge module-rebuild
The modules can then easily be rebuilt after changing kernel.
$ sudo module-rebuild rebuild
This 802.11b USB dongle can be used with linux-wlan-ng. The package is noted as unstable (~ppc). We should add it (and the related packages) to the /etc/portage/package.keywords for it to be installable (and, later, updated).
net-wireless/linux-wlan-ng ~ppc net-wireless/linux-wlan-ng-firmware ~ppc net-wireless/linux-wlan-ng-modules ~ppc net-wireless/linux-wlan-ng-utils ~ppc
It can then be emerged. Thanks to the usb flag in the USE variable, the USB modules will be built.
$ sudo emerge linux-wlan-ng
Once emerged, inserting the dongle sucessfully loads the module. Still some configuration has to be done.
linux-wlan-ng is not yet integrable in the Gentoo base layout. Some tricky work around have to be made. First, the default Gentoo wireless configuration file must be in place, this is done by just copying the example file
$ sudo cp /etc/conf.d/wireless.example /etc/conf.d/wireless
For some obscure reason, the wlan.agent hotplug script is not copied by the ebuild. It should be copied from the source tarball into the /etc/hotplug directory.
$ cd $ tar xjvf /usr/portage/distfiles/linux-wlan-ng-0.2.3.tar.bz2 *wlan.agent $ sudo mv linux-wlan-ng-0.2.3/etc/wlan.agent /etc/hotplug $ sudo chmod a+x /etc/hotplug/wlan.agent $ rm -rf linux-wlan-ng-0.2.3*
Inserting the dongle now should produce the following output in the kernel messages.
hfa384x_usbctlx_complete_sync: CTLX[5] error: state(Request failed) hfa384x_drvr_readpda: Read from index 0 failed, continuing PDA Read from 0x003f0000 in EXTDS space. PDA Read from 0x007f0000 in EXTDS space. Writing 4096 bytes to ram @0x7e2ffe Writing 4096 bytes to ram @0x7e3ffe Writing 4096 bytes to ram @0x7e4ffe Writing 4096 bytes to ram @0x7e5ffe Writing 4096 bytes to ram @0x7e6ffe Writing 4096 bytes to ram @0x7e7ffe Writing 4096 bytes to ram @0x7e8ffe Writing 4096 bytes to ram @0x7e9ffe Writing 4096 bytes to ram @0x7eaffe Writing 4096 bytes to ram @0x7ebffe Writing 4096 bytes to ram @0x7ecffe Writing 4096 bytes to ram @0x7edffe Writing 3010 bytes to ram @0x7eeffe Writing 416 bytes to ram @0x7efc20 Writing 16 bytes to ram @0x7efdd0 Writing 4044 bytes to ram @0x7f0800 Writing 3288 bytes to ram @0x7fe000 ident: nic h/w: id=0x8026 1.0.0 ident: pri f/w: id=0x15 1.1.3 ident: sta f/w: id=0x1f 1.8.3 MFI:SUP:role=0x00:id=0x01:var=0x01:b/t=1/1 CFI:SUP:role=0x00:id=0x02:var=0x02:b/t=1/1 PRI:SUP:role=0x00:id=0x03:var=0x01:b/t=1/4 STA:SUP:role=0x00:id=0x04:var=0x01:b/t=1/15 PRI-CFI:ACT:role=0x01:id=0x02:var=0x02:b/t=1/1 STA-CFI:ACT:role=0x01:id=0x02:var=0x02:b/t=1/1 STA-MFI:ACT:role=0x01:id=0x01:var=0x01:b/t=1/1 Prism2 card SN: 000000000000
The interface will be referred to as wlan0. One can set an alias in /etc/modules.d/wlan0.
alias wlan0 prism2_usb
The /etc/modules.conf file is then updated.
$ sudo update-modules
The standard wireless tools cannot be used with linux-wlan-ng at the time. This is specified in the /etc/conf.d/net file as
modules_wlan0="!iwconfig"
Of course, the startup script for the new interface has to be created.
$ cd /etc/init.d $ sudo ln -s net.lo net.wlan0
In order for WEP to work with linux-wlan-ng, the SSID (fbxnarf in this case) of the desired network must be defined in the /etc/conf.d/wlan.conf file.
SSID_wlan0="fbxnarf"
A matching file /etc/conf.d/wlancfg-fbxnarf must exist, it is a modified copy of the /etc/conf.d/wlancfg-DEFAULT file. Roughly speaking, the options shown below have to be set to true.
lnxreq_hostWEPEncrypt=true # true|false lnxreq_hostWEPDecrypt=true # true|false dot11PrivacyInvoked=true # true|false (...) dot11WEPDefaultKey0="12:34:56:78:90:12:34:56:78:90:12:34:56"
Unplugging and replugging the dongle should be enough for it to be brought up and get an IP address from the nearby DHCP.
Some additions to /etc/portage/package.keywords.
dev-python/python-mpd ~ppc games-misc/fortune-mod-discworld ~x86 media-sound/mpdscribble ~ppc media-sound/sonata ~ppc www-plugins/mozplugger ~ppc x11-misc/stalonetray x86
Special uses flags go in /etc/portage/package.use.
app-text/poppler cairo gnome-base/gvfs gnome mail-client/mutt sidebar media-video/vlc qt4 #net-dns/avahi mdnsresponder-compat net-libs/libsoup gnome net-wireless/wpa_supplicant qt4 sys-auth/pambase consolekit
$ USE="-avahi" sudo emerge -N xorg-x11 xev gnome-light gnome-screensaver gdm fvwm stalonetray ssh-askpass-fullscreen zenity mozilla-firefox mozplugger mutt lbdb urlview irssi gajim alsa-tools alsa-utils mpd sonata mpdscribble vlc easytag grip gvim gqview gimp dia xpdf imagemagick pmount rox graveman gtkpbbuttons powerprefs texlive-latexrecommended texlive-latexextra texlive-langfrench latexsuite xfig transfig gentoo-syntax cvs tightvnc subversion bsd-games xkill quilt git lftp traceroute tcpdump netcat nmap host zip unzip strace minicom xterm xclock urlview mesa-progs iptables $ sudo emerge -uN world
By default, pmount refuses to have anything to do with hard disks. Including removable USB ones which, it considers, “is not removable.” This can be worked around by adding the specific devices nodes in /etc/pmount.allow:
# /etc/pmount.allow # pmount will allow users to additionally mount all devices that are # listed here. /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4 /dev/sdc1 /dev/sdc2 /dev/sdc3 /dev/sdc4 /dev/sdd1 /dev/sdd2 /dev/sdd3 /dev/sdd4
Then install the fortunes. The AOLS fortunes are considered offensive, thus the specific USE flag.
$ USE=offensive sudo emerge fortune-mod fortune-mod-bofh-excuses fortune-mod-calvin fortune-mod-chucknorris fortune-mod-discworld fortune-mod-dubya fortune-mod-dune fortune-mod-firefly fortune-mod-gentoo-dev fortune-mod-gentoo-forums fortune-mod-hitchhiker fortune-mod-homer fortune-mod-humorixfortunes fortune-mod-kernelcookies fortune-mod-osfortune fortune-mod-pqf fortune-mod-simpsons-chalkboard fortune-mod-slackware
A quick file, /etc/profile.d/fortune.sh can be created to display a witty saying using fortune upon login.
case $- in
*i*)
tty -s && /usr/bin/fortune -a && echo
;;
esac
The default layout for the xorg.conf file was generated by X itself. This is no longer necessary thanks to auto detection of devices by hal.
$ sudo X -configure $ sudo cp xorg.conf.new /etc/X11/xorg.conf
The parameters have to be adjusted. This version of xorg.conf has AIGLX and Clone mode on the external display enabled, as well as evdev support for input devices.
As AllowEmptyInput is enabled in xorg.conf, devices with drivers kbd and mouse are ignored. Only evdev devices, as discovered by hald are added and usable. Thus, it is necessary to start both hald and dbus.
In /etc/conf.d/xdm and (resp.) /etc/rc.conf, one enables the X display manager and (resp.) default session type. We also deactivate the feature that starts the display manager (way too) early.
XSTATICVT="no" (...) DISPLAYMANAGER="gdm"
XSESSION="Gnome"
It can then be started at boot
$ sudo rc-config add xdm default
While we're at it, we also install nice themes (;
$ sudo emerge gdm-themes-livecd gentoo-artwork-livecd
A modified copy of the /etc/X11/dm/Sessions/custom.desktop file has to be named fvwm2.desktop in the same directory in order to allow selecting FVWM2 for session in GDM.
[Desktop Entry] Encoding=UTF-8 Name=FVWM2 Comment=This starts a FVWM2 session Exec=fvwm Icon= Type=Application
The keyboard is recognized at runtime as an evedev device thanks to
hald. We configure it in /etc/hal/fdi/policy/10-keymap.fdi.
Xorg.conf
Just setting the right options in the configuration file for Xorg allows having a fully working keyboard with international support using dead keys, additionally mappin the level 3 shift to the (rather useless) KP_Enter:
[...]
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "ibook"
Option "XkbLayout" "us(intl)"
EndSection
[...]
Manual
The QWERTY mapping of the iBook is quite close to a regular (read “PC”) one. Using the intl variant allows to use all sorts of accents. The only problem is that this variant needs an AltGr keys which is totally missing from the keyboard…
Using xmodmap in the appropriate config file (say .xprofile for example) solves the problem in a QnD way, replacing the useless small Return key at the right of the space bar.
The enter_switch option should do that, but it doens't seem to work. Instead, one adds a file /etc/X11/xinit/xinitrc.d/99xmodmap.sh to directly remap the KPENTER to the Level 3 shift, to be executed at user login.
#!/bin/sh xmodmap -e "keycode 104=ISO_Level3_Shift"
That's all: €, Å, ō,…
Macintoshes only have one mouse button… Too bad. Fortunately, there is a mechanism available in Linux to map some key-strokes to the middle and right button. Unfortunately, there is an issue when used with evdev. We have to apply the patches from bugzilla to the kernel.
A new line has to be added in /etc/sysctl.conf.
dev.mac_hid.mouse_button_emulation = 1
By default, the middle and right button will be (resp.) Fn+Ctrl and Fn+Alt.
Save and restore the mixer settings.
$ sudo rc-update add alsasound default
If the session is not Gnome, GtkPbButtons should be started at login. An
executable startup script called 99gtkpbbuttons.sh is added in /etc/X11/xinit/xinitrc.d
#!/bin/sh
if [ "${GDMSESSION}" != "gnome" -a \
"${DESKTOP_SESSION}" != "gnome" ]; then
gtkpbbuttons -d -t Crystal -a /dev/null
fi
Tools to smoothly integrate MacOS X are bookmarked here