After ditching Mandriva because my machine was becoming slower and slower (instead of faster and faster), after experiencing serious latency problems while trying to watch videos on Suse, after straining my eyes on Ubuntu (I do not remember if it was because of the fonts or because I was desperately looking for a useable application), I finally turn to Gentoo.
It is a very different breed of distribution: everything is compiled from source, so that you install only the applications you need and you can fine-tune the compile flags for them (distributions on CDs are often compiled with -Os so as to minimize disk space -- this might not be what you want). It also gets rid of the patent-related problems.
That sounds very appealing, but be warned: should you decide to install this distribution, you must have several days in front of you, you must not be afraid of the command line, you must not be bewildered when you are told that the system is "finally installed" even though there is no media player, no web browser, no KDE, no Gnome, no word processor, no X -- yet.
If you want to install Gentoo, you might be better off with the more complete official documentation.
http://www.gentoo.org/doc/en/handbook/index.xml
Burn the CD, boot it.
Press ALT-F1 when prompted and select the keyboard (uk, for me).
Check that the network works (in my case, DHCP -- with you are using Wifi, replace ifconfig by iwconfig).
ifconfig ping -c 1 www.yahoo.com
Partition the disk.
fdisk
The main commands are
m Menu p List the partitions d Delete a partition n Create a new partition t Set the partition type ("Linux" is the default, "Linux swap" is 82) w Write the partition table to disk
My partitions are:
/dev/hda1 ext3 32MB /boot /dev/hda2 swap 1.5GB /dev/hda3 ext3 15GB / /dev/hda4 ext3 14GB /home
Format the partitions (i.e., put an empty file system on all of them)
mk2fs -j /dev/hda1 # mk2fs creates an ext2 file system mk2fs -j /dev/hda3 # The -j options adds a journal -- the mk2fs -j /dev/hda4 # resulting file system is called ext3. mkswap /dev/hda2
Create the mounting points
mkdir /mnt/gentoo mkdir /mnt/gentoo/boot mkdir /mnt/gentoo/home
Mount those partitions
swapon /dev/hda2 mount /dev/hda3 /mnt/gentoo mount /dev/hda1 /mnt/gentoo/boot mount /dev/hda4 /mnt/gentoo/home
Install the "stage":
cd /mnt/gentoo tar jxvfp /mnt/cdrom/stages/*
Retrieve the latest portage snapshot:
links2 http://www.gentoo.org/main/en/mirrors.xml
and unpack it (LONG)
tar jxvf portage*.tar.bz2 -C /mnt/gentoo/usr
Edit the flags in /mnt/gentoo/etc/make.conf
less /mnt/gentoo/etc/make.conf.example vi /mnt/gentoo/etc/make.conf
In particular, the CFLAGS (-march creates binaries for this processor, without preserving backward compatibility, as -mcpu does; -O2 optimizes the code for speed -- the default, -Os, optimizes for size)
-march=pentium4 -O2
and parallel compilation
MAKEOPTS="-j2"
Also add the URLs of the mirrors
mirrorselect -i -o >> /mnt/gentoo/etc/make.conf mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf tail /mnt/gentoo/etc/make.conf
Up to now, we were using the system from the CD, and we have copied a minimal system onto the hard drive; we are now ready to use that system and configure it further. (If you need to access the system on the CD, you can use another console by typing ALT-F2.)
cp -L /etc/resolv.conf /mnt.gentoo/etc/ mount -t proc none /mnt/gentoo/proc chroot /mnt/gentoo /bin/bash env-update source /etc/profile
Update your system:
emerge --sync
Set you USE flags
ls -l -FGg /etc/make.profile less /usr/portage/profils/use.desc vi /etc/make.conf
I currently have
USE="-gtk -gnome kde qt hal -artsd -acpi dvd alsa cdr examples doc ieee1394"
Set up the time zone
cp /usr/share/zoneinfo/GB /etc/localtime
emerge vim
Retrieve the kernel source
USE="-doc" emerge gentoo-sources cd /usr/src ls -l
And compile it
emerge genkernel zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6 genkernel all ls -l /boot/kernel* ls -l /boot/initramfs* emerge coldplug rc-update add coldplug boot
You might prefer to compile it yourself (I would advise against it if it is the first time you install Gentoo and if you have not compiled a kernel for a few years: you would tend to remove everything that is apparently not needed and could end up without a network card -- and even without a keyboard...).
cd /usr/src/linux make menuconfig make make modules_install cp arch/i386/boot/bzImage /boot/kernel-2.6.14-gentoo-r5 cp .config /boot/config find /lib/modules -name "*o"
Edit the file system table.
vi /etc/fstab
I have
# <fs> <mountpoint> <type> <opts> <dump/pass> /dev/hda1 /boot ext3 noauto,noatime 1 2 /dev/hda3 / ext3 noatime 0 1 /dev/hda2 none swap sw 0 0 /dev/hda4 /home ext3 noatime 0 0 /dev/cdroms/cdrom0 /mnt/cdrom iso9660 noauto,ro 0 0 proc /proc proc defaults 0 0 shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
Set-up the hostname and domain name
vi /etc/conf.d/hostname # gentoo vi /etc/conf.d/ # DNSDOMAIN=home rc-update add domainname default rc-update add net.eth0 default vi /etc/hosts
Set up the super-user password.
passwd
Check from where it can login.
less /etc/securetty
vi /etc/rc.conf # EDITOR=/usr/bin/vim
vi /etc/conf.d/keymaps # "uk" instead of "us"
A logging utility.
emerge syslog-ng rc-update add syslog-ng default
A crontab utility, to allow you to run commands at specified times.
emerge vixie-cron rc-update add vixie-cron default
The "locate" command, that keeps an easy-to-search list of all the files on the disk. It will be updated every night (the first time, you can populate that list of files by issuing the "updatedb" command).
emerge slocate
The DHCP client, in order to be connected to the internet.
emerge dhcpcd # Do not forget the "c" ("client") before the "d"
emerge grub vi /boot/grub/grub.conf
I have:
timeout 30 default 0 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title GNU/Linux 2.6.14-gentoo-r5 root (hd0,0) kernel /boot/kernel-genkernel-x86-2.6.14-gentoo-r5 vga=791 splash=silent root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev initrd /boot/initramfs-genkernel-x86-2.6.14-gentoo-r5
Install the bootloader:
grep -v rootfs /prov/mounts > /etc/mtabs # Missing in the chroot environment grubinstall /dev/hda
exit # You cannot reboot in the chroot # Alternatively, you could use another console (ALT-F2) reboot
If it does not reboot properly (e.g., because you said "gb" instead of "uk" for the keyboard and end up with no keayboard, or because you chose to compile the kernel yourself and inadvertently remove the support for the keyboard, the network or both), boot from the CD, mount the file systems, chroot to the hard drive and work from there.
swapon /dev/hda2 mount /dev/hda3 /mnt/gentoo mount /dev/hda1 /mnt/gentoo/boot mount /dev/hda4 /mnt/gentoo/home mount -t proc none /mnt/gentoo/proc chroot /mnt/gentoo /bin/bash env-update source /etc/profile
useradd -m -G users,wheel,audio zoonek passwd zoonek useradd -m -G users,audio beta
Other distributions suggest to put users in a group of their own ("zoonek"'s default group will be "zoonek"), which is probably better -- if you have many users, you are likely to put them into groups that appear fine at one time but prove troublesome later; furthermore, permissions on files are safer that way.
groupadd zoonek useradd -m -G zoonek,users,wheel,audio zoonek # If the user has already been created: groupadd zoonek gpasswd -a zoonek zoonek
To put it simply, everything is missing: you have a shell, almost everything you could expect to come with a shell, and that is all. No Video or MP3 player, no Office suite, no web browser, no graphical environment -- not even a text-based web browser: links2 was on the CD but it is not here.
emerge --search links2 emerge --search links USE="-x" emerge elinks
My first movement was to check that everything was up-to-date and update what was to be updated.
emerge --sync emerge --update --deep world # If you are lucky, it might take # less than 24 hours. (I did not wait.) # Do not expect to be lucky.
emerge --pretend kde | less emerge kde # Less than 48 hours (I did wait)
We finally have a working R environment. Well, not, it is there, but it is not running, nor even working. We need to set up the xorg.conf file.
Xorg -configure # Automatic X -config /root/xorg.conf.new xorgcfg # Semi-automatic xorgcfg -textmode (X & ); sleep 60; killall Xorg vi /etc/X11/xorg.conf # My screen resolution is 1280*1024 # My mouse is in /dev/input/mouse1 startx echo "exec startkde" > ~/.xinitrc startx vi /etc/rc.vonf # DISPLAYMANAGER=kdm rc-update add xdm default
When/if it is running, check that the resolution is the right -- if you get unreadable fonts, this is the most probable cause: check that the resolution is indeed the one you specified, check in the monitor manual what the actual resolution is.
xdpyinfo
# Automatically mounting new devices when they are plugged emerge --no-replace dbug hal rc-update add dbus default rc-update add hald default gpasswd -a zoonek plugdev gpasswd -a beta plugdev emerge ivman rc-update add ivman default
I am not sure it works. If it does not, mount and unmount the devices by hand.
mount /mnt/cdrom /dev/cdrom ... umount /mnt/cdrom
If you do not know the device name (e.g., USB keys), try
file -s /dev/sd*
or things like
udevinfo -a -p /sys/block/sda | grep vendor
P2P applications usually take up a lot of ressources (think "Azureus" -- which is not that bad, actually: it will only take up 40% of your CPU -- for a non-CPU-bound task), mainly because of their GUI. MLDonkey is just a server, with almost nothing on top of it, so its load on the system is minimal. (In case you wonder, yes, "ML" refers to functional programming -- it is a CaML program).
emerge net-p2p/mldonkey rc-update add mldonkey default /etc/init.d mldonkey start
You can then telnet to port 4000 or point your web browser to http://localhost:4080/ (only accessible from the local machine). It knows about most P2P networks, in particular BitTorrent.
The files are saved in /home/p2p/mldonkey/incoming/*/.
There is no telnet command...
emerge telnet-bsd
It was initially designed for a machintosh but I had somehow managed to remove the HFS partition and replace it by two ext3 ones. Unfortunately, I only did half the job: these are Linux partitions, but the partition table is still a Macintosh one...
gentoo ~ # dmesg ieee1394: The root node is not cycle master capable; selecting a new root node and resetting... ieee1394: Node added: ID:BUS[0-00:1023] GUID[00d04b590e076011] ieee1394: Node changed: 0-00:1023 -> 0-01:1023 scsi0 : SCSI emulation for IEEE-1394 SBP-2 Devices ieee1394: sbp2: Logged into SBP-2 device ieee1394: Node 0-00:1023: Max speed [S400] - Max payload [2048] Vendor: Maxtor 6 Model: L300R0 Rev: BAH4 Type: Direct-Access-RBC ANSI SCSI revision: 04 SCSI device sda: 586114704 512-byte hdwr sectors (300091 MB) sda: asking for cache data failed sda: assuming drive cache: write through SCSI device sda: 586114704 512-byte hdwr sectors (300091 MB) sda: asking for cache data failed sda: assuming drive cache: write through sda: unknown partition table Attached scsi disk sda at scsi0, channel 0, id 0, lun 0 SQUASHFS error: Can't find a SQUASHFS superblock on sda gentoo ~ # file -s /dev/sda /dev/sda: Apple Partition data block size: 512, first type: Apple_partition_map, name: Apple, number of blocks: 7, second type: Apple_Driver43, name: Macintosh_SL, number of blocks: 94, third type: Apple_FWDriver, name: Macintosh_SL, number of blocks: 151, fourth type: Apple_UNIX_SVR2, name: Linux ext3, number of blocks: 207024128 gentoo ~ # fdisk -l /dev/sda Disk /dev/sda: 300.0 GB, 300090728448 bytes 255 heads, 63 sectors/track, 36483 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sda doesn't contain a valid partition table
And, of course, the kernel does not recognize those file systems...
gentoo ~ # gzip -dc /proc/config.gz | grep HFS # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set CONFIG_SQUASHFS=y # CONFIG_SQUASHFS_EMBEDDED is not set CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_SQUASHFS_VMALLOC is not set gentoo ~ # cat /proc/filesystems nodev sysfs nodev rootfs nodev bdev nodev proc nodev sockfs nodev pipefs nodev futexfs nodev tmpfs nodev inotifyfs nodev eventpollfs nodev devpts reiserfs ext3 ext2 squashfs nodev ramfs vfat iso9660 udf xfs nodev usbfs
Since I want the data on this disk (I use it first as a backup, second to store large files), I will have to recompile the kernel...
genkernel --bootsplash --no-clean --menuconfig all
I change the following options.
# CONFIG_MAC_PARTITION is not set # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set
Recompile alsa-driver, if needed (see the "Alsa" section).
emerge alsa-driver
Put the new kernel in the /boot/grub/grub.conf file and update the boot sector.
grubinstall /dev/hda
No, it is not finished.
When I reboot with the new kernel, the Macintosh partition table is recognized, but the network has disappeared.
The reason is the following: the network interface is usually eth0, but if the hard drive is plugged when the machine boots, the kernel sees an IEE1394 device that could possibly be used as a network interface -- it gets the name eth0 and the (real) network card becomes eth1.
The first solution is to plug the hard drive once the system has booted.
Another solution is to look for an eth1 network interface.
cd /etc/init.d/ ls -l net.* ln -s net.lo net.eth1
A cleaner solution would be to use udev -- but that is another story.
Accessing sound devices on Linux is exceedingly complicated: you have to choose between the old OSS way and the new (but harder to configure) Alsa one -- and on top of that, there can also ba a "sound server", such as artsd, esd, gstreamer, jackd.
I think that the main difference is that Alsa contains a "mixer" and thus allows you to play several sounds at the same time. In particular, an application will be able to "beep" even if another one is playing music; or an application will be able to play music even if another one forgot to close the sound device (because it somehow crashed or opened the sound device for a beep and did not bother to close it).
[I plan to investigate sound in Linux (not "playing MP3 files" but really music or sound creation) in much more details -- but that will be another (series of) article(s) -- stay tuned.]
For more details on using and installing Alsa, see:
http://www.gentoo.org/doc/en/alsa-guide.xml
Check that it is not in the kernel (you can install Alsa either with the kernel or separately, but the two are mutually exclusive):
gentoo linux # gzip -dc /proc/config.gz | egrep 'SOUND|SND' CONFIG_SOUND=y # CONFIG_SND is not set # Alsa # CONFIG_SOUND_PRIME is not set # OSS
Install alsa-driver (should be reinstalled whenever you recompile the kernel: it is actually a kernel module):
emerge alsa-driver emerge alsa-utils alsaconf rc-update add alsasound boot alsamixer cat /proc/asound/cards cat /proc/asound/version
To check that it actually works, first run "alsamixer", un-mute (by pressing (or not) the M key) all the channels, and type
cat /dev/urandom > /dev/dsp
This should produce white noise (remember that /dev/random produces cryptographic-quality random numbers, at a very slow speed, while /dev/urandom produces pseudo-random numbers, suitable for most applications, as fast as you want).
We can also play Midi sounds with Alsa:
emerge timidity++ # Choose one of the following soundfonts emerge timidity-eawpatches timidity-update -g -s eawpatches # or emerge timidity-shompatches timidity-update -g -s shompatches rc-update add timidity default /etc/init.d/timidity start /etc/init.d/alsasound restart # Important! aplaymidi -l aplaymidi -port 0:65 foo.midi
Well, actually, it does not work.
zoonek@gentoo /tmp $ aplaymidi -l ALSA lib seq_hw.c:455:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory Cannot open sequencer - No such file or directory
You can play a Midi file simply by
timidity foo.mid
I edit the /etc/make.conf to add the following USE flags.
USE="aac dts live xanim xvid theora win32codecs real matroska mythtv"
First build it WITH CPU detection, to see if your processor has more capabilities that could be added.
USE="cupdetection" emerge mplayer
When I run mplayer, it tells me:
CPU: Intel Pentium 4/Xeon/Celeron Foster (Family: 8, Stepping: 4) Detected cache-line size is 64 bytes MMX supported but disabled MMX2 supported but disabled SSE supported but disabled SSE2 supported but disabled CPUflags: MMX: 0 MMX2: 0 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0 Compiled with runtime CPU detection - WARNING - this is not optimal! To get best performance, recompile MPlayer with --disable-runtime-cpudetection.
So I add some more flags:
USE="rtc mmx mmxext sse sse2" emerge mplayer
On the internet, you can find audio APE files (aka MAC: Monkey Audio Codec): this is apparently a "free" lossless audio codec. However, if you try to get the licence, you realize that the Linux version is a port of the Windows one, done without the agreement of the initial author -- he claims that his software is "free", that no one is allowed to modify the code, that he will grant anyone who asks him the right to port it to other platforms, but actually fails to answer any such request.
In short, APE is a licence-less audio codec.
http://gimpel.gi.funpic.de/Howtos/convert_ape/ http://en.wikipedia.org/wiki/Monkey's_Audio
As there is no legal licence, it is not readily available on Gentoo: I install it from source.
http://forums.gentoo.org/viewtopic-t-389850-highlight-ape+mac.html wget http://kent.dl.sourceforge.net/sourceforge/mac-port/mac-3.99-u4-b4.tar.gz cd mac*/ ./configure make
I can now convert the APE files that still lie around on my hard drive to FLAC (another lossless audio format -- really free, this one).
mkdir RM for i in *.ape do echo "$i" mac "$i" "$i".wav -d flac --best "$i".wav rm -f "$i".wav mv "$i" RM/ done
Sometimes, it is a whole CD that has been encoded in that way: the *.ape file has to be split from the informations contained in the *.cue file.
ACCEPT_KEYWORDS=~x86 emerge cuetools emerge shntool cuebreakpoints foo.cue | shnsplit -o flac foo.ape # Or: cuebreakpoints foo.cue | shnsplit -o cust ext=mp3 \{ lame -V3 - %f \} foo.ape
emerge wavpack
WMA (very low quality) MP3 OGG APE (aka MAC, Monkey's Audio Codec) FLAC (Free Looseless Audio Codec) MPC (Musepack)
Video files are more complicated. They contain several "streams", e.g., video (there can be several video streams, corresponding to several cameras following the event being recorded), sound (there can be several languages) and subtitles -- with some more information such as menus, chapters, etc.
There are several container formats (Matroska (mkv), AVI, MP4, DivX, Ogm), and each of these streams can be encoded in a variety of codecs (e.g., Ogg, Mp3, AAC for the audio; MPEG-4 Advanced Simple Profile Video (DivX, Xvid), Theora, H264 (aka MPEG-4 Advanced Video Coding (AVC)) for the video).
The problem, for me, is that the most recent codecs require a fast processor -- faster than mine.
Starting playback... [h264 @ 0x86511a0]QP -20 out of range Error while decoding frame! mplayer: h264.c:2306: mc_dir_part: Assertion `pic->data[0]' failed.97% MPlayer interrupted by signal 6 in module: decode_video - MPlayer crashed. This shouldn't happen. It can be a bug in the MPlayer code _or_ in your drivers _or_ in your gcc version. If you think it's MPlayer's fault, please read DOCS/HTML/en/bugreports.html and follow the instructions there. We can't and won't help unless you provide this information when reporting a possible bug.
It works more or less fine with vlc, but I am really reaching the limits of the processor (it uses 100% of the CPU and fast action scenes produce an error message as above).
One solution might be to convert the file to another video format. Here is what I tried, following the instructions from
http://forums.gentoo.org/viewtopic-t-412511-highlight-ffmpeg+h264.html ACCEPT_KEYWORDS=~x86 emerge media-video/gpac # For MP4Box (Masked by ~86) emerge media-libs/faad2 # For faad, to convert AAC to WAV emerge media-video/ffmpeg MP4Box -raw 1 a.mp4 # Creates a_track1.h264 MP4Box -raw 2 a.mp4 # Creates a_track2.aac faad a_track2.aac # Creates a_track2.wav # Creates a sound-less a_noaudio.avi file ffmpeg -i a_track1.h264 -vcodec xvid -vtag xvid -b 1000 -an a_noaudio.avi # Creates the final a.avi file, with sound ffmpeg -i a_noaudio.avi -vcodec copy -vtag xvid -i a_track2.wav -acodec mp3 a.avi
But it still does not work: the file is huge, the quality of the image is awful (the initial file was abnormally small and the image crystal-clear) and the sound is not in sync with the video...
I give up: I will shelve those files until I buy a new computer...
http://forum.doom9.org/showthread.php?s=&threadid=91894 http://www.mplayerhq.hu/DOCS/HTML-single/en/MPlayer.html#mencoder
You can install it as usual (there is also a "blas" USE flag, but it does not work).
USE="tcltk" emerge --pretend --verbose R
This will probably not be the latest version: to get it, try the ~x86 one
USE=tcltk ACCEPT_KEYWORDS=~x86 emerge R
or compile it from source, as usual.
emerge tk emerge app-admin/sudo # Used by JGR man sudo man sudoers visudo # Uncomment the "%wheel ALL=(ALL) ALL" line ./configure --enable-R-shlib make make install wget -r -l 1 -np -nc -x -k -K -E -U Mozilla http://cran.r-project.org/src/contrib/ for i in cran.r-project.org/src/contrib/*.tar.gz do R CMD INSTALL $i done wget http://stats.math.uni-augsburg.de/JGR/1.3-2.2/linux/JGR-1.3.tar.gz tar zxvf JGR*.tar.gz cd JGR*/ perl -p -i -e 's#^JAVAHOME=.*#JAVAHOME=/opt/blackdown-jdk-1.4.2.03#' Makefile.linux make echo 'install.packages(c("Cairo","GDD","JGR","JavaGD","Rserve","iWidgets","iplots","rJava","xGD"),,"http://www.rosuda.org/R")'|R
As root:
gpasswd -a zoonek cron
As me:
crontab -e
The crontab now contains
zoonek@gentoo ~ $ crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.XXXXvEPxwU installed on Mon Jan 2 23:41:17 2006) # (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $) 55 6 * * * /home/zoonek/bin/alarmclock_BFM.sh
Where alarmclock_BFM.sh is
#!/bin/sh PATH=/usr/bin:$PATH mplayer -cache 64 mms://viptvr.yacast.fr/tvr_bfm mplayer -cache 64 mms://viptvr.yacast.fr/tvr_bfm mplayer -cache 64 mms://viptvr.yacast.fr/tvr_bfm mplayer -cache 64 mms://viptvr.yacast.fr/tvr_bfm mplayer -cache 64 mms://viptvr.yacast.fr/tvr_bfm
(It can be stopped by typing "killall mplayer" five times.)
To avoid popups, type "about:config" in the address bar and set "browser.tabs.opentabfor.windowopen" to true. The popups, if any, will appear in a new tab in stead of a new window.
emerge gqview emerge gimp emerge blender emerge zsh emerge scribus emerge cdrtools cdrdao dvd+rw-tools # mkisofs, cdrecord emerge nmap netcat USE="gtk" emerge ethereal emerge openoffice # 15 hours? More? emerge unace lha emerge tetex emerge imagemagick emerge ecasound # For other sound-producing tools, check: # /var/cache/edb/dep/usr/portage/media-sound/ # I might soon try: # amsynth ardour audacity beast cheesetracker fluidsynth # hydrogen jamin jmax lilypond muse pd qjackctl qsynth rezound rosegarden # soundtracker spiralmodular supercollider zynaddsubfx # With or without Java??? # (Java is needed, among others, for the database component, HSQLDB (a DBMS # completely written in Java). USE="java" emerge openoffice # 15 hours? More? ACCEPT_KEYWORDS=~x86 emerge --pretend --verbose f-spot # Requires Mono (C#) emerge --one-shot amsynth ardour audacity beast cheesetracker fluidsynth hydrogen jamin jmax lilypond muse pd qjackctl qsynth rezound rosegarden soundtracker spiralmodular supercollider zynaddsubfx
By default, there are no japanese fonts.
# In the /etc/make.conf file: USE="cjk nls unicode immqt" emerge media-fonts/kochi-substitute # Japanese emerge media-fonts/arphicfonts # Chinese emerge media-fonts/baekmuk-fonts # Korean locale -a | grep -i utf echo LANG="en_GN.UTF-8" >> /etc/env.d/02locale env-update source /etc/profile locale emerge anthy scim-uim skim cat >> ~/.xprofile # or /etc/xprofile export XMODIFIERS=@im=SCIM export GTK_IM_MODULE=scim export QT_IM_MODULE=scim
For more information:
http://forums.gentoo.org/viewtopic-p-1852138.html
I always have font-related problems -- I do not find them readable. From that point of view, Gentoo is not as bad as some distributions, but there is room for improvement: some fonts, though prefectly legible, are ugly and/or at the wrong resolution.
I follow the instructions from
http://gentoo-wiki.com/HOWTO_Xorg_and_Fonts euse --enable bitmap-fonts truetype-fonts type1-fonts emerge --newuse --noreplace freetype corefonts freefonts artwiz-fonts \ sharefonts terminus-font ttf-bitstream-vera unifont dejavu xorg-x11 USE=-bindist emerge --newuse freetype # Already there, actually
Edit /etc/fonts/local/conf to enable sub-pixel rendering (if you are using an LCD screen).
http://en.wikipedia.org/wiki/Subpixel_rendering http://www.grc.com/cleartype.htm # With sub-pixel rendering: http://gentoo-wiki.com/images/8/8f/Xorg-fonts-lcd.png # Without: http://gentoo-wiki.com/images/a/a5/Xorg-fonts-windows.png
Edit /etc/X11/xorg.conf
Section "Monitor" ... DisplaySize 340 270 # 1280*1024, 96 dpi
In the same file, add the fonts (this assumes we are not using a font server):
Section "Files" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/TTF/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/share/fonts/corefonts" FontPath "/usr/share/fonts/freefont" FontPath "/usr/share/fonts/sharefonts" FontPath "/usr/share/fonts/artwiz" FontPath "/usr/share/fonts/terminus" FontPath "/usr/share/fonts/ttf-bitstream-vera" FontPath "/usr/share/fonts/unifont" # Everything in /usr/share/fonts/ # find /usr/share/fonts/ -type d | perl -p -e 's/(.*)/FontPath "$1"/' FontPath "/usr/share/fonts/local" FontPath "/usr/share/fonts/util" FontPath "/usr/share/fonts/misc" FontPath "/usr/share/fonts/cyrillic" FontPath "/usr/share/fonts/ukr" FontPath "/usr/share/fonts/kochi-substitute" FontPath "/usr/share/fonts/arphicfonts" FontPath "/usr/share/fonts/baekmuk-fonts" FontPath "/usr/share/fonts/CID" FontPath "/usr/share/fonts/ttf-bitstream-vera" FontPath "/usr/share/fonts/corefonts" FontPath "/usr/share/fonts/freefont" FontPath "/usr/share/fonts/artwiz" FontPath "/usr/share/fonts/sharefonts" FontPath "/usr/share/fonts/terminus" FontPath "/usr/share/fonts/unifont" FontPath "/usr/share/fonts/dejavu" FontPath "/usr/share/fonts/75dpi" FontPath "/usr/share/fonts/100dpi"
My /var/lib/portage/world file (it is created automatically, with all the software you install via "emerge"; if you want to install a piece of software without seeing it here, install it with the --one-shot option).
app-admin/syslog-ng app-arch/gzip app-arch/lha app-arch/unace app-arch/unrar app-arch/unzip app-cdr/cdrtools app-editors/nano app-editors/vim app-editors/xemacs app-i18n/anthy app-i18n/scim-uim app-i18n/skim app-office/openoffice app-portage/g-cpan app-portage/gentoolkit app-shells/zsh app-text/tetex app-text/xpdf dev-perl/libxml-perl kde-base/kde media-fonts/arphicfonts media-fonts/baekmuk-fonts media-fonts/kochi-substitute media-gfx/blender media-gfx/gimp media-gfx/gqview media-gfx/imagemagick media-libs/faad2 media-sound/alsa-driver media-sound/alsa-utils media-sound/ecasound media-sound/supercollider media-sound/timidity-eawpatches media-sound/timidity-shompatches media-video/gpac media-video/mplayer media-video/vlc net-analyzer/ethereal net-analyzer/netcat net-analyzer/nmap net-ftp/ncftp net-misc/dhcpcd net-misc/telnet-bsd net-p2p/mldonkey sys-apps/coldplug sys-apps/ivman sys-apps/pciutils sys-apps/slocate sys-boot/grub sys-devel/gettext sys-kernel/genkernel sys-kernel/gentoo-sources sys-kernel/linux-headers sys-libs/glibc sys-process/vixie-cron www-client/elinks www-client/mozilla-firefox
My /etc/portage/package.keywords file (you have to create it yourself)
media-video/gpac ~x86 media-gfx/f-spot ~x86
For the second one, it is actually much trickier: this only tells to accept the unstable versino of F-spot, but F-spot depends on a wealth of other packages that do not have a stable version (e.g., Mono...).
media-video/gpac ~x86 dev-dotnet/glade-sharp ~x86 dev-dotnet/gconf-sharp ~x86 dev-dotnet/art-sharp ~x86 dev-dotnet/gnomevfs-sharp ~x86 dev-dotnet/gnome-sharp ~x86 dev-dotnet/libgdiplus ~x86 dev-dotnet/gtkhtml-sharp ~x86 dev-dotnet/gtk-sharp ~x86 dev-lang/mono ~x86 media-gfx/f-spot ~x86
My /etc/portage/packages.use:
net-analyzer/ethereal gtk
Information about non-installed programs:
emerge --info # Global USE flags emerge --pretend foo # Dependencies of "foo" emerge --pretend --verbose foo # USE flags for package "foo
Looking for a package:
emerge --search foo emerge --searchdesc foo equery files foo # Contents of (installed) package foo equery belongs foo # (Installed) packages containing file "foo"
Removing programs and cleaning the system:
emerge --unmerge foo # Removes "foo" but leaves its dependencies emerge --depclean # Also removes the dependencies (removes # everything that is not needed by what is # listed in the world file) emerge -p --depclean # Lists what would be removed (orphaned packages) revdep-rebuild # To be run after emerge --depclean
Updating the system:
emerge --update --deep --newuse world # Recompile what should be recompiled etc-update # Updates the configuration files in /etc/ emerge --help config # Details of etc-update's action
To install Perl modules:
emerge g-cpan man g-cpan g-cpan -i XML::Parser::PerlSAX g-cpan -i File::Cat g-cpan -i MIME::Types g-cpan --install WWW::Mechanize
Programs can be compiles with or without some capabilities, or optional dependancies: they are described in the USE variable -- it can come from the /etc/make.conf file, from the /etc/portage/package.use file (on a package-by-package basis) or from the environment. Here is the one I use.
USE="-gtk -gnome -acpi qt kde hal -artsd dvd alsa cdr examples doc ieee1394
aac dts live xanim xvid theora win32codecs real flac matroska mythtv rtc mmx mmxext sse sse2 cjk immqt-bc unicode"
The programs that are run when the machine boots (or when it shut down) are in /etc/init.d/. More precisely, this directory contains all those programs, wether they are scheduled to be run or not. Those that are actualy run are in /etc/runlevels/default/* (this directory differs from one distribution to the next): these are symbolic links to /etc/init.d/.
These are all shell scripts that accept an argument: start, restart, stop, status.
The rc-update command tells you what is actually run and allows you to add or delete programs.
rc-update add net.eth0 default rc-update show
This command tells you what daemons have been started in the current runlevel (those scheduled with rc-update) and wether they are still running or not.
/etc/conf.d/local.start # Personal stuf to be run at startup /etc/conf.f/local.stop # ... to be stopped before shutdown /etc/conf.d/hostname /etc/conf.d/domainname /etc/conf.d/keymaps # Which keyboard (us, uk, fr, etc.) do you have? /etc/conf.d/gpm # Configuration of GPM, a utility to use the # mouse in the console
Classically, the devices (that means anything that can get plugged into the computer: mouse, hard drive, terminals, USB keys, etc.) are assigned unpredictable names in /dev/.
Some are predictable: the (IDE) hard drives will be called /dev/hda, /dev/hdb, /dev/hdc and /dev/hdd; their partitions will be called /dev/hda1, /dev/hda2, etc. -- the rules are actually more complicated than it may seem, but it is predictable.
Some device names are not predictable: if you plug in a USB key, then unplug it, the replug it, it will not have the same name.
Udev solves that problem and allows you to specify the name a device gets when it is plugged. In particular, you can then assign it a fixed mount point in /dev/fstab.
To define the names you want, create a /etc/udev/rules.d/10-local.rules along the lines of /etc/udev/rules.d/50-udev.rules.
Your own rules could look like this:
BUS="usb", SYSFS{serial}="HXOLL0012202323480", NAME="lp_epson", SYMLINK="printers/epson_stylus" # Or, if we wish to retain the initial kernel name: BUS="usb", SYSFS{serial}="HXOLL0012202323480", NAME="%k", SYMLINK="lp_epson printers/epson_stylus" # We use the kernel name so as to distinguish between sda and sda1 # (with several partitions, we could also use the size) BUS="scsi", SYSFS{model}="L300R0", KERNEL="sd*1", NAME="%k", SYMLINK="Hard_Drive_300G" # If we want all the partitions: BUS="scsi", SYSFS{model}="L300R0", KERNEL="sd*", NAME="%k", SYMLINK="Hard_Drive_300G%n"
To get that information:
udevinfo -q path -n /dev/sda udevinfo -a -p /sys`udevinfo -q path -n /dev/sda` udevinfo -a -p /sys/block/sda udevinfo -a -p /sys/bus/scsi/devices/3:0:0:0
For more details:
http://gentoo-wiki.com/HOWTO_Customizing_UDEV
chroot # Also check jail (BSD), VServer, UML nmap # Network probing: check what ports are open on a # remote machine. netstat -n # Displays open ports netstat -nr # Route table netstat -ni # Network interface lsof # List of open files lsof -n | grep tcp vmstat 5 iostat # Where is it??? netcat -l -p 1234 > filename # Listen to a port cat filename | netcat hostname 1234 -q 10 # Send a file to a remote port, # wait 10 seconds before quitting traceroute dig # Talk to the DNS ethereal # Network capture # Be sure to install it with the "gtk" USE flag, # otherwise you only get the text-based version. screen # A kind of VNC for console amanda, mondo rescue, sbackup # Backup utilities unisson, rsync nagios, mrtg, bb # Monitoring tools, if there are several machines # on your network -- useless for me pwgen # Password generator xte "mousemouve 1024 768" # To automate the interaction with a # graphical program from the command line # Install with: emerge xautomation
Web browser: Firefox (see also Konqueror -- use wget to download whole sites from the command line) EMail: KMail RSS reader: Akregator Office suite: OpenOffice.Org Word processor: LaTeX Image viewer: gqview (see also gwenview, gthumb, qiv, zvg) Image editor (bitmap): The Gimp Drawing (vector graphics): Inkscape 3D: Blender (see also povray) Media player: mplayer (yes, I know, there is no GUI -- if you really need a GUI, check Amarok as a music player and... well, I do not have anything with a GUI to play videos) (see also bmpx) Games: Frozen Bubble (check also Nexuiz, etc.) Text editor: Vim, Emacs, XEmacs, see also Kate Programming languages: C, C++, Perl, Python, Ruby, CaML, Php Statistics: R Numerical computations: Scilab Formal computations: Maxima Audio editor: Audacity (see also Ardour, more professionnal) etc.
For more, see
http://gentoo-wiki.com/TIP_Recommended_Packages
posted at: 19:17 | path: /Linux | permanent link to this entry