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 startThe 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)
# passwdFollowing 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/hdaand 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/secJust in case I activated DMA:
# hdparm -d 1 /dev/hdaand 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 partitionThis 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
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.78I 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.
# rebootI 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/hda1following that the root partition which was labeled root
# mkreiserfs -l root /dev/hda3Finally time to format the swap partition
# mkswap /dev/hda2and activate it
# swapon /dev/hda2The partitions are now ready so all I have to do is mount them and start the installation.
# mount /dev/hda3 /mnt/gentooI will need to create a boot folder in the newly mounted partition
# mkdir /mnt/gentoo/bootand now mount the boot partition in that folder
# mount /dev/hda1 /mnt/gentoo/bootMoving on I need to check the date/time issuing the following command:
# dateThe 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/gentooand 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.xmlI 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.bz2Then I had to tweak the make.conf file
# nano /mnt/gentoo/etc/make.confMy 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/portageBefore chrooting I need to copy the resolv.conf file in our mounted partition
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.confmount the proc partition
# mount -t proc none /mnt/gentoo/procand chroot to the new environment
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profileNow let us update the portage for the first time
# emerge syncand here comes the wait - bootstraping
# cd /usr/portage
# scripts/bootstrap.shThe 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 system73 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-updateIt 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/zoneinforeveals 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/localtimeOkay 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-sourcesBefore 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 udevand also coldplug for boot support on plugged devices
# emerge coldplugNow 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 menuconfigAfter making my choices I compile the kernel
# make && make modules_installI installed the kernel by copying the relevant file in my boot partition:
# cp arch/i386/boot/bzImage /boot/kernel-2.6.10-gentoo-r4I 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-r4At this point I need to sort out the fstab file for my system to load properly.
# nano -w /etc/fstabMy 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 0What follows is the host name, domain name and network configuration.
Hostname
# nano -w /etc/conf.d/hostnameDomain name
# nano -w /etc/conf.d/domainnameAdding the domain name to the default runlevel
# rc-update add domainname defaultThere 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/hostswith 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-csCritical dependency is dhcpd. I need to merge it so that I can obtain an IP address from my router
# emerge dhcpdAlso critical is to set the root password
# passwdI am also emerging pciutils. These will give me lsmod and lspci later on
# emerge pciutilsNow 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-ngand added it to the default runlevel
# rc-update add syslog-ng defaultCron daemon - I chose vixie-cron
# emerge vixie-cronand added it to the default runlevel
# rc-update add vixie-cron defaultFile System tools - Naturally I need reiserprogs due to my file system
# emerge reiserfsprogsBootloader - I chose grub.
# emerge grubonce grub was compiled I setup my grub.conf
# nano -w /boot/grub/grub.confNow let us set grub properly by updating the /etc/mtab
# cp /proc/mounts /etc/mtaband grub-install will finish the job
# grub-install -root-directory=/boot /dev/hdaFinally we are ready to reboot the system.
Exit the chrooted environment
# exitchange directory to the root of the Live CD
# cd /unmount the mounted partitions
# umount /mnt/gentoo/boot/ /mnt/gentoo/proc/ /mnt/gentoo/and reboot
# rebootMake 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.