Gentoo Stage 1 Installation
This is my effort to install Gentoo Linux on my Acer Ferrari LMi 3000.
The first thing I did was to start ssh. The live CD of Gentoo had already identified my network card which is based on the via-rhine
module.
# /etc/init.d/sshd start
The key is generated and of course I needed to change the password to something known (it is scrambled for security reasons by the Live CD)
# passwd
Following that I left the notebook where it is and invoked PuTTY from my Windows box to access it. I printed the Gentoo Handbook guide just in case and had it near by as a reference.
I decided to check the hard drive performance. I used
# hdparm -tT /dev/hda
and it reported:
/dev/hda:
Timing cached reads: 1068 MB in 2.00 seconds = 533.81 MB/sec
Timing buffered disk reads: 80 MB in 3.05 seconds = 26.22 MB/sec
Just in case I activated DMA:
# hdparm -d 1 /dev/hda
and it reported:
/dev/hda:
setting
using_dma to 1 (on)
using_dma = 1 (on)
So now with the hard drive tweaked for max performance the network works just fine (I am using ssh so it must be working ) I skip to chapter 4 to prepare my disks. I read thoroughly through the installation guide and decided to proceed with the following structure:
Partition Filesystem Size Description
/dev/hda1 ReiserFS 110 Mb Boot partition
/dev/hda2 swap 1024 Mb Swap partition
/dev/hda3 ReiserFS Rest of the Disk Root partition
This partition scheme is nearly identical to the one used by the guide only that my choice of filesystem is ReiserFS and I have increased the swap to 1024 Mb.
I used the cfdisk tool that comes with the CD.
# cfdisk
and in that program I defined
<pre><code>Name Flags Part Type FS Type [Label] Size (MB)
----------------------------------------------------
hda1 Boot Primary Linux 106.93
hda2 Primary Linux swap 1019.94
hda3 Primary Linux 58884.78
I toggled the Boot
flag from the interface after having selected hda1
. Once I finished with the partitioning I chose Write
and confirmed it so that the partition table is written on the disk. I chose Quit
and then rebooted the system just in case.
# reboot
I restarted the system and it booted again from the Live CD. Again I started sshd
after setting a password for the root account. Now it is the time to format my partitions. The first one is the boot partition and I chose to label it boot
# mkreiserfs -l boot /dev/hda1
following that the root partition which was labeled root
# mkreiserfs -l root /dev/hda3
Finally time to format the swap partition
# mkswap /dev/hda2
and activate it
# swapon /dev/hda2
The partitions are now ready so all I have to do is mount them and start the installation.
# mount /dev/hda3 /mnt/gentoo
I will need to create a boot folder in the newly mounted partition
# mkdir /mnt/gentoo/boot
and now mount the boot partition in that folder
# mount /dev/hda1 /mnt/gentoo/boot
Moving on I need to check the date/time issuing the following command:
# date
The time was a bit off so I had to set it using the following command:
# date 120123042004
(where 12 is the month 01 is the day 23 is the hour, 04 the minute and 2004 the year)
Now it is time to fetch the tarball. First I change the directory to /mnt/gentoo
# cd /mnt/gentoo
and then I use the links2
program (I like it better) to navigate through the mirrors and pick one which is closer to me (Austria)
# links2 https://www.gentoo.org/main/en/mirrors.xml
I chose the Inode network and then navigated to /releases/x86/2004.2/stages/x86
and downloaded the stage1-x86-2004.2.tar.bz2
. Following that I unpacked the stage:
# tar -xvjpf stage1-x86-2004.3.tar.bz2
Then I had to tweak the make.conf
file
# nano /mnt/gentoo/etc/make.conf
My make.conf
is as follows:
USE="-* X aalib acl acpi aim alsa apache2 apm audiofile
avi berkdb bidi bindist bitmap-fonts bzlib caps cdr
cpdflib crypt cscope ctype cups curl curlwrappers
dba dbx dga dio directfb divx4linux dvd dvdr encode
ethereal exif fam fastcgi fbcon fdftk flac flash
flatfile foomaticdb ftp gd gdbm ggi gif gmp gnome
gnutls gphoto2 gpm gtk gtk2 gtkhtml iconv icq imagemagick
imap imlib inifile innodb ipv6 jabber jack jikes jpeg
kerberos krb4 ladcca lcms ldap libwww mad maildir
mailwrapper mbox mcal memlimit mhash mikmod ming mmap mmx
motif moznocompose moznoirc moznomail mpeg mpi msn mssql
mysql -mysqli nas ncurses netcdf nhc98 nis nls offensive
oggvorbis opengl oscar pam pcmcia pcntl pcre pda pdflib
perl php pic pie plotutils png pnp posix ppds prelude
python quicktime readline samba sasl scanner sdl session
shared sharedmem simplexml slang slp snmp soap sockets
socks5 speex spell spl ssl svga sysvipc szip tcltk tcpd
tetex theora tidy tiff tokenizer truetype trusted uclibc
unicode usb vhosts videos wavelan wddx wmf xface xine
xml xml2 xmlrpc xmms xosd xprint xsl xv xvid yahoo yaz
zeo zlib x86"
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
ACCEPT_KEYWORDS="~x86"
PORTAGE_TMPDIR=/var/tmp
PORTDIR=/usr/portage
DISTDIR=${PORTDIR}/distfiles
PKGDIR=${PORTDIR}/packages
PORT_LOGDIR=/var/log/portage
PORTDIR_OVERLAY=/usr/local/portage
http_proxy="https://taurus.niden.net:8080"
RESUMECOMMAND="
/usr/bin/wget
-t 5
–passive-ftp \${URI}
-O \${DISTDIR}/\${FILE}"
GENTOO_MIRRORS="
https://gentoo.inode.at/
https://gentoo.osuosl.org
https://gentoo.oregonstate.edu"
SYNC="rsync://taurus.niden.net/portage"
MAKEOPTS="-j2"
AUTOCLEAN="yes"
FEATURES="sandbox"
You will notice that I use
http_proxy="https://taurus.niden.net:8080" \
RESUMECOMMAND="
/usr/bin/wget
-t 5
–passive-ftp \${URI}
-O \${DISTDIR}/\${FILE}"
because I have set up the httpd-replicator
on my server and keep a local rsync mirror so that I don’t abuse the internet bandwidth. You will not need these lines on your installation. Additionally I set up my sync mirror to be my local server
SYNC="rsync://taurus.niden.net/portage"
whereas you will need to use one of the below (the closer to your location the better)
Default: "rsync://rsync.gentoo.org/gentoo-portage"
North America: "rsync://rsync.namerica.gentoo.org/gentoo-portage"
South America: "rsync://rsync.samerica.gentoo.org/gentoo-portage"
Europe: "rsync://rsync.europe.gentoo.org/gentoo-portage"
Asia: "rsync://rsync.asia.gentoo.org/gentoo-portage"
Australia: "rsync://rsync.au.gentoo.org/gentoo-portage"
Also I set up some Portage paths which have to be created (PORTDIR_OVERLAY
and PORT_LOGDIR
):
# mkdir /mnt/gentoo/usr/local/portage
# mkdir /mnt/gentoo/var/log/portage
Before chrooting I need to copy the resolv.conf
file in our mounted partition
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
mount the proc partition
# mount -t proc none /mnt/gentoo/proc
and chroot to the new environment
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
Now let us update the portage for the first time
# emerge sync
and here comes the wait - bootstraping
# cd /usr/portage
# scripts/bootstrap.sh
The compilation started at 13:30 and finished at 16:14, 3 hours later error free so I moved on to emerge my whole system.
# emerge system
73 packages were to be merged and for that I started at 06:00 and finished at 8.27. Not bad for my baby notebook! There was one config file that needed updating so I went on and updated it:
# etc-update
It appeared that there were trivial changes, nothing to report.
So now off to set our timezone. For me it is Vienna, Austria. A little look at my system with:
# ls /usr/share/zoneinfo
reveals a Europe folder which in turn has the Vienna zone. Hence the command to set the link to my timezone:
# ln -sf /usr/share/zoneinfo/Europe/Vienna /etc/localtime
Okay now to the easy stuff. We need to grab a kernel. From the choices (and the handbook plus the Gentoo Kernel Guide have a wealth of information helping you choose) I opted for gentoo-dev-sources
.
# emerge gentoo-dev-sources
Before I choose what I need for my kernel (modules or built in) I went and read the Gentoo udev guide. I choose to with udev since this is the way things are moving and I might as well get a head start with it.
First I need to emerge the udev, which will emerge baselayout and hotplug
# emerge udev
and also coldplug
for boot support on plugged devices
# emerge coldplug
Now I have to compile the kernel. This requires a bit more attention so I tried to get it first time right.
# cd /usr/src/linux
# make menuconfig
After making my choices I compile the kernel
# make && make modules_install
I installed the kernel by copying the relevant file in my boot partition:
# cp arch/i386/boot/bzImage /boot/kernel-2.6.10-gentoo-r4
I also copy the System.map and the .config file just in case:
# cp System.map /boot/System.map-2.6.10-gentoo-r4
# cp .config /boot/config-2.6.10-gentoo-r4
At this point I need to sort out the fstab file for my system to load properly.
# nano -w /etc/fstab
My fstab is as follows:
/dev/hda1 /boot reiserfs noauto,noatime,notail 1 2
/dev/hda2 none swap defaults 0 0
/dev/hda3 / reiserfs noatime 0 1
none /proc proc defaults 0 0
none /dev/pts devpts defaults 0 0
none /dev/shm tmpfs defaults 0 0
none /sys sysfs defaults 0 0
/dev/hdc /mnt/cdrom auto noauto,ro 0 0
What follows is the host name, domain name and network configuration.
Hostname
# nano -w /etc/conf.d/hostname
Domain name
# nano -w /etc/conf.d/domainname
Adding the domain name to the default runlevel
# rc-update add domainname default
There is no need for me to touch the /etc/conf.d/net
file since I will be using DHCP for my LAN. I won’t add it to the default runlevel either (the network) since I don’t usually connect to the network by the LAN interface rather than the wireless one - for that a bit later.
Finally I need to set up the hosts
file:
# nano -w /etc/hosts
with the available hosts in my network.
What follows is the PCMCIA
. This is handled by emerging the pcmcia-cs
package (note that I am using the -X flag since I don’t want xorg-x11
to be installed now - the handbook is king!)
# USE="-X" emerge pcmcia-cs
Critical dependency is dhcpd
. I need to merge it so that I can obtain an IP address from my router
# emerge dhcpd
Also critical is to set the root password
# passwd
I am also emerging pciutils
. These will give me lsmod
and lspci
later on
# emerge pciutils
Now is the time for the system tools. I will install a system logger, a cron daemon, file system tools and bootloader.
System Logger - I chose syslog-ng.
# emerge syslog-ng
and added it to the default runlevel
# rc-update add syslog-ng default
Cron daemon - I chose vixie-cron
# emerge vixie-cron
and added it to the default runlevel
# rc-update add vixie-cron default
File System tools - Naturally I need reiserprogs due to my file system
# emerge reiserfsprogs
Bootloader - I chose grub.
# emerge grub
once grub was compiled I setup my grub.conf
# nano -w /boot/grub/grub.conf
Now let us set grub properly by updating the /etc/mtab
# cp /proc/mounts /etc/mtab
and grub-install
will finish the job
# grub-install –root-directory=/boot /dev/hda
Finally we are ready to reboot the system.
Exit the chrooted environment
# exit
change directory to the root of the Live CD
# cd /
unmount the mounted partitions
# umount /mnt/gentoo/boot/ /mnt/gentoo/proc/ /mnt/gentoo/
and reboot
# reboot
Make sure you eject the CD when the system reboots because you don’t want to boot from it.
Well it appears to be OK so far since the grub menu showed up and after the whole boot sequence I had my first Linux login.