Content: You must read Stage 1 as wellYou will have more information on Gentooo Forums.
This guide contains all the commands you should use to complete a stage3 installation of Gentoo. You need a connection to the Internet to download the stage3 and Portage snapshots.
Important: New users should read the Handbook as it gives a better overview about the installation process. The Quick Install guide is designed for experienced users who just need a checklist to follow. |
Timing output follows all commands that take more than a couple of seconds to finish. Commands were timed on an AMD 2000 1.66 Ghz PC with 512 MB of RAM and two SATA disks connected to a hardware controller.
* (The following specs and the timing information should help you determine a rough estimate of the time you need to complete your install) # grep bogo /proc/cpuinfo bogomips : 3337.81 # hdparm -tT /dev/sda /dev/sda: Timing cached reads: 1100 MB in 2.00 seconds = 549.97 MB/sec Timing buffered disk reads: 224 MB in 3.01 seconds = 74.36 MB/sec # grep MemTotal /proc/meminfo MemTotal: 509248 kB |
Installation Media
Download a CD from one of our mirrors. You can find the minimal CD ISO in releases/x86/current-iso/. The minimal installation CD is only useful for Internet-based installations. This guide will use the minimal CD.
Burn the CD and boot it.
Booting the CD
Press F2 at the boot screen to find out what boot options exist. You can either start gentoo or gentoo-nofb, the latter disables the framebuffer. If you booted the LiveCD, don't forget to add the nox option to prevent the X graphical environment from starting. Several options allow to enable or disable some features. If all goes well, your hardware will be detected and all modules will be loaded. If the kernel fails to boot properly or if your computer hangs during the boot procedure, you may have to experiment with different configurations. The safest way is probably to use the nodetect option and then load required modules explicitly.
Gentoo Linux Installation LiveCD http://www.gentoo.org Enter to Boot; F1 for kernels F2 for options. boot: gentoo-nofb (or in case of problems) boot: gentoo-nofb nodetect -> i suggests don't use it, since you're noobs, it"ll confusing you and make a headache., jajajjajajajajjajaaaaaaaaaaaa if u prefer to use this I suggests u need install this first |
Optional: loading modules
If you used the nodetect option, once booted, load the required modules. You need to enable networking and have access to your disks. The lspci command can help you identify your hardware.
livecd root # lspci (Use lspci's output to identify required modules) (The following is an example, adapt it to your hardware) livecd root # modprobe 3w-9xxx livecd root # modprobe r8169 |
Network Configuration
If your network does not work already, you can use net-setup to configure your network. You might need to load support for your network card using modprobe prior to the configuration. If you have ADSL, use pppoe-setup and pppoe-start. For PPTP support, first edit /etc/ppp/chap-secrets and /etc/ppp/options.pptp and then use pptp <server ip>.
For wireless access, use iwconfig to set the wireless parameters and then use either net-setup again or run ifconfig, dhcpcd and/or route manually.
If you are behind a proxy, do not forget to initialize your system using export http_proxy, ftp_proxy and RSYNC_PROXY.
;div class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: `uto; mso-margin-top-alt: auto;"> Code Listing 2.3: Configure networking the guided way |
livecd root # net-setup eth0 |
Alternatively, you can start networking manually. The following example assigns the IP address 192.168.1.10 to your PC and defines 192.168.1.1 as your router and name server.
livecd root # ifconfig eth0 192.168.1.10/24 livecd root # route add default gw 192.168.1.1 livecd root # echo nameserver 192.168.1.1 > /etc/resolv.conf |
The installation CD allows you to start an sshd server, add additional users, run irssi (a command-line chat client) and surf the web using links.
Optional: connect to your new box over ssh
The most interesting feature is of cnurse sshd. You can start it and then connect from another machine and cut and paste commands from this guide.
livecd root # time /etc/init.d/sshd start * Generating hostkey ... (sshd generates the key and displays more output) * starting sshd ... [ok] real 0m13.688s user 0m9.420s sys 0m0.090s |
Now, set the root password on the liveCD so that you can connect to it from another PC. Please note that allowing root to connect over ssh is not recommended under normal circumstances. If you can't trust your local network, use a long and complex password, you should use it only once as it will disappear after your first reboot.
livecd root # passwd New UNIX password: type_a_password Retype new UNIX password: type_a_password passwd: password updated successfully |
Now, you can start a terminal on another PC and connect to your new box, follow the rest of this guide in another window, and cut and paste commands.
(Use the IP address of your new box) $ ssh root@192.168.1.10 The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established. RSA key fingerprint is 96:e7:2d:12:ac:9c:b0:94:90:9f:40:89:b0:45:26:8f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.10' (RSA) to the list of known hosts. Password: type_the_password |
Preparing the Disks
Use fdisk or cfdisk to create your partition layout. You need at least a swap partition (type 82) and one Linux partition (type 83). The following scenario creates a /boot, a swap and a main partition as used in our handbook. Replace sda with your disk. Most systems ignore the bootable flag, but a few need it. Set this flag on your boot partition with fdisk's a command.
livecd ~ # fdisk /dev/sda (The rest of this guide uses the following partitioning scheme) livecd ~ # fdisk -l /dev/sda Disk /dev/sda: 599.9 GB, 599978409984 bytes 255 heads, 63 sectors/track, 72943 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 12 96358+ 83 Linux /dev/sda2 13 110 787185 82 Linux swap / Solaris /dev/sda3 111 72943 585031072+ 83 Linux |
Use mke2fs, mke2fs -j, mkreiserfs, mkfs.xfs and mkfs.jfs to create file systems on your Linux partitions. Initialize your swap partition using mkswap and swapon.
(ext2 is all you need on the /boot partition) livecd ~ # mke2fs /dev/sda1 (Let's use ext3 on the main partition) livecd ~ # mke2fs -j /dev/sda3 (Create and activate swap) livecd ~ # mkswap /dev/sda2 && swapon /dev/sda2 |
Mount the freshly created file systems on /mnt/gentoo. Create directories for the other mount points (like /mnt/gentoo/boot) if you need them and mount them too.
livecd ~ # mount /dev/sda3 /mnt/gentoo livecd ~ # mkdir /mnt/gentoo/boot livecd ~ # mount /dev/sda1 /mnt/gentoo/boot livecd ~ # cd /mnt/gentoo |
Setting Up The Stage
First make sure your date and time is set correctly using date MMDDhhmmYYYY. Use UTC time.
(Check the clock) livecd gentoo # date Mon Mar 6 00:14:13 UTC 2006 (Set the current date and time if required) livecd gentoo # date 030600162006 (Format is MMDDhhmmYYYY) Mon Mar 6 00:16:00 UTC 2006 |
Next, download a stage from one of our mirrors:
livecd gentoo # links http://www.gentoo.org/main/en/mirrors.xml (Pick a mirror, move to the releases/x86/current-stage3/ directory, highlight the stage3 of your choice, probably the i686 stage3, and press D to download it) (Or download it directly with wget without choosing a nearby mirror) livecd gentoo # wget http://mirror.mcs.anl.gov/pub/gentoo/releases/amd64/current-stage3/stage3-amd64-20120126.tar.bz2 |
Go to /mnt/gentoo and unpack the stage using tar xjpf <stage3 tarball>.
livecd gentoo # time tar xjpf stage3* real 1m14.157s user 1m2.920s sys 0m7.530s |
Install the latest Portage snapshot. Proceed as for the stage3 archive: choose a nearby mirror from our list, download the latest snapshot and unpack it.
livecd gentoo # cd /mnt/gentoo/usr livecd usr # links http://www.gentoo.org/main/en/mirrors.xml (Pick a mirror, move to the snapshots/ directory, highlight portage-latest.tar.bz2 and press D to download it) (Or download it directly with wget without choosing a nearby mirror) livecd gentoo # cd /mnt/gentoo/usr livecd usr # wget http://mirror.mcs.anl.gov/pub/gentoo/snapshots/portage-latest.tar.bz2 |
Code Listing 2.15: Unpack the Portage snapshot |
livecd usr # time tar xjf portage-lat* real 0m40.523s user 0m28.280s sys 0m8.240s |
Chrooting
Mount the /proc & /dev file systems, copy over the /etc/resolv.conf file, then chroot into your Gentoo environment.
livecd usr # cd / livecd / # mount -t proc proc /mnt/gentoo/proc livecd / # mount --rbind /dev /mnt/gentoo/dev livecd / # cp -L /etc/resolv.conf /mnt/gentoo/etc/ livecd / # chroot /mnt/gentoo /bin/bash livecd / # env-update && source /etc/profile >>> Regenerating /etc/ld.so.cache... |
Set your time zone
Set your time zone information by using the correct listing in /usr/share/zoneinfo.
livecd / # ls /usr/share/zoneinfo (Using Brussels as an example) livecd / # cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime livecd / # date Wed Mar 8 00:46:05 CET 2006 |
Set your host name and domain name
Set your host name in /etc/conf.d/hostname and /etc/hosts. In the following example, we use mybox as host name and at.myplace as domain name. You can either edit the config files with nano or use the following commands:
livecd / # cd /etc livecd etc # echo "127.0.0.1 mybox.at.myplace mybox localhost" > hosts livecd etc # sed -i -e 's/HOSTNAME.*/HOSTNAME="mybox"/' conf.d/hostname (Use defined host name and check) livecd etc # hostname mybox livecd etc # hostname -f mybox.at.myplace |
Kernel Configuration
Install a kernel source (usually gentoo-sources), configure it, compile it and copy the arch/i386/boot/bzImage file to /boot.
livecd etc # time emerge gentoo-sources real 2m51.435s user 0m58.220s sys 0m29.890s livecd etc # cd /usr/src/linux livecd linux # make menuconfig (Configure your kernel) livecd linux # time make -j2 (Elapsed time depends highly on the options you selected) real 3m51.962s user 3m27.060s sys 0m24.310s livecd linux # make modules_install livecd linux # cp arch/i386/boot/bzImage /boot/kernel |
Configure the system
Edit your /etc/fstab and replace BOOT, ROOT and SWAP with the actual partition names. Don't forget to check that the file systems match your installation.
livecd linux # cd /etc livecd etc # nano -w fstab /dev/sda1 /boot ext2 noauto,noatime 1 2 /dev/sda3 / ext3 noatime 0 1 /dev/sda2 none swap sw 0 0 |
Configure your network in /etc/conf.d/net. Add the net.eth0 init script to the default run level. If you have multiple NICs, symlink them to the net.eth0 init script and add them to the default run level as well. Don't forget to set your hostname too. Either edit /etc/conf.d/net and /etc/conf.d/hostname with nano or use the following commands:
livecd etc # cd init.d livebd init.d # ln -s net.lo net.eth0 livecd init.d # cd ../conf.d livecd conf.d # echo 'config_eth0="192.168.1.10 netmask 255.255.255.0 brd 192.168.1.255"' >> net livecd conf.d # echo 'routes_eth0="default via 192.168.1.1"' >> net livecd conf.d # echo 'hostname="myhostname"' > hostname livecd conf.d # rc-update add net.eth0 default (If you compiled your network card driver as a module, add it to /etc/conf.d/modules livecd conf.d # echo 'modules="r8169"' >> /etc/conf.d/modules (If you want to reconnect via ssh after you have rebooted your new box) livecd conf.d # rc-update add sshd default |
Note: Emerge pcmciautils if you need support for PCMCIA cards. |
Set the root password using passwd.
livecd conf.d # passwd New UNIX password: type_the_password Retype new UNIX password: type_the_password_again passwd: password updated successfully |
Edit /etc/timezone to define the time zone you used previously.
Europe/Brussels |
Check the system configuration in /etc/rc.conf and /etc/conf.d/keymaps and edit any of those files if required.
livecd conf.d # nano -w /etc/rc.conf livecd conf.d # nano -w /etc/conf.d/keymaps |
Installing System Tools
Install a system logger like syslog-ng and a cron daemon like vixie-cron, and add them to the default run level.
Note: Cron daemons depend on an MTA. mail-mta/ssmtp will be pulled in as a dependency. If you want to use a more advanced MTA, you might want to install it now. If you are in a hurry, let ssmtp be installed and remove it later when you install the MTA of your choice. |
Code Listing 2.25: Install a syslogger and a cron daemon |
livecd conf.d # time emerge syslog-ng vixie-cron real 1m54.099s user 1m2.630s sys 0m34.620s livecd conf.d # rc-update add syslog-ng default livecd conf.d # rc-update add vixie-cron default |
Install the necessary file system tools (xfsprogs, reiserfsprogs or jfsutils) and networking tools (dhcpcd or ppp) if you need any.
livecd conf.d # emerge xfsprogs (If you use the XFS file system) livecd conf.d # emerge jfsutils (If you use the JFS file system) livecd conf.d # emerge reiserfsprogs (If you use the Reiser file system) livecd conf.d # emerge dhcpcd (If you need a DHCP client) livecd conf.d # emerge ppp (If you need PPPoE ADSL connectivity) |
Emerge grub and configure it. Do not forget to update the necessary boot parameters if you are using an initramfs.
Code Listing 2.28: Example grub.conf |
default 0 timeout 10 title Gentoo root (hd0,0) kernel /boot/kernel root=/dev/sda3 |
Code Listing 2.29: Install grub |
livecd conf.d # grub Probing devices to guess BIOS drives. This may take a long time. grub> root (hd0,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/ grub/menu.lst"... succeeded Done. grub> quit |
Exit the chrooted environment, unmount all file systems and reboot:
livecd conf.d # exit livecd / # umount -l /mnt/gentoo/dev{/shm,/pts,} livecd / # umount -l /mnt/gentoo{/proc,/boot,} livecd / # reboot (Don't forget to remove the CD) |
Note: The total elapsed time between the display of the boot prompt on the minimal CD and the display of the login prompt after the reboot was 00:42:31 on our test box. Yes, less than one hour! Note that this time also includes the stage3, Portage snapshot and several packages download time and the time spent configuring the kernel. |
Log in as root, then add one or more users for daily use with useradd.
(Clean up your known_hosts file because your new box has generated a new definitive hostkey) $ nano -w ~/.ssh/known_hosts (Look for the IP of your new PC and delete the line, then save the file and exit nano) (Use the IP address of your new box) $ ssh root@192.168.1.10 The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established. RSA key fingerprint is 96:e7:2d:12:ac:9c:b0:94:90:9f:40:89:b0:45:26:8f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.10' (RSA) to the list of known hosts. Password: type_the_password |
Code Listing 2.32: Add a new user |
mybox ~ # useradd -g users -G lp,wheel,audio,cdrom,portage,cron -m john mybox ~ # passwd john New UNIX password: Set John's password Retype new UNIX password: Type John's password again passwd: password updated successfully |
Last configuration touches
Start by selecting nearby mirrors either by defining the SYNC and GENTOO_MIRRORS variables in /etc/make.conf or by using mirrorselect. You can also define the number of concurrent compilation processes at this point.
mybox ~ # emerge mirrorselect mybox ~ # mirrorselect -i -o >> /etc/make.conf mybox ~ # mirrorselect -i -r -o >> /etc/make.conf (Usually, (the number of processors + 1) is a good value) mybox ~ # echo 'MAKEOPTS="-j2"' >> /etc/make.conf |
Now is a good time to enable or disable some USE flags. Run emerge -vpe world to list all currently installed packages and their enabled and disabled USE flags. Either edit /etc/make.conf or use the following command to define the USE variable:
mybox ~ # emerge -vpe world (Portage displays the packages and their USE flags, as an example, let's disable fortran, and enable ipv6 and unicode) mybox ~ # echo 'USE="nptl nptlonly ipv6 -fortran unicode"' >> /etc/make.conf |
Recent versions of glibc use /etc/locale.gen to define locale settings.
mybox ~ # cd /etc mybox etc # nano -w locale.gen mybox etc # locale-gen |
Last but not least, you may want to alter the CFLAGS variable in your /etc/make.conf to optimise the code to your specific needs. Please note that using a long list of flags is rarely needed and can even lead to a broken system. It is recommended to specify the processor type in the march option and stick to -O2 -pipe.
You may also want to switch to ~x86. You should only do this if you can deal with the odd broken ebuild or package. If you'd rather keep your system stable, don't add the ACCEPT_KEYWORDS variable.
mybox etc # nano -w make.conf (Set -march to your CPU type in CFLAGS) CFLAGS="-O2 -march=athlon-xp -pipe" (Only add the following if you know what you're doing) ACCEPT_KEYWORDS="~x86" |
You might want to recompile your whole system twice to make full use of your latest configuration changes. It would take quite a long time to complete and yield minimal speed benefits. You can let your system optimise itself gradually over time when new versions of packages are released. However, recompiling is a still good idea from the standpoint of maintaining system consistency. Please see the Gentoo GCC Upgrading Guide for a discussion on the benefits of ensuring a consistently built system and world.
Recompiling only the packages that have already been updated since the release or that are affected by your new USE flags will take enough time. You might also have to remove packages that block your upgrade. Look for "[blocks B ]" in the output of emerge -vpuD --newuse world and use emerge -C to remove them.
(Please note that the switch to ~x86 causes many packages to be upgraded) mybox etc # emerge -vpuD --newuse world (Take a good look at the package list and their USE flags, remove blocking packages if any, and start the lengthy process) mybox etc # time emerge -vuD --newuse world (79 packages have been (re)compiled) real 180m13.276s user 121m22.905s sys 36m31.472s (Remerge libtool to avoid further potential problems) mybox etc # emerge --oneshot libtool (Update config files, make sure you do not let dispatch-conf update config files you have edited) mybox etc # dispatch-conf (If perl has been updated, you should run the perl-cleaner script) mybox etc # time perl-cleaner all real 1m6.495s user 0m42.699s sys 0m10.641s (In case of a major upgrade of python, you should run the python-updater script) mybox etc # python-updater |
Depending on what your new Gentoo machine is supposed to do, you will probably want to install server applications or a desktop system. Just as an example, emerge gnome and emerge kde have been timed on the ~x86 system installed as describe above. Both have been installed from the same starting point.
You should check our documentation index to find out how to install and configure the applications of your choice.
Important: The following is only an example. It is in no way meant as a recommended setup. |
Code Listing 2.38: Emerge GNOME |
mybox etc # emerge -vp gnome (Look at the list of packages and their USE flags, then edit make.conf if required. mybox etc # nano -w /etc/make.conf (The following USE flags have been defined) USE="nptl nptlonly -ipv6 -fortran unicode svg hal dbus \ -kde -qt4 -arts -eds -esd gnome gstreamer gtk firefox" mybox etc # time emerge gnome (326 packages have been emerged) real 520m44.532s user 339m21.144s sys 146m22.337s |
Code Listing 2.39: Emerge KDE |
mybox etc # emerge -vp kde-meta (Look at the list of packages and their USE flags, then edit make.conf if required. mybox etc # nano -w /etc/make.conf The following USE flags have been defined) USE="nptl nptlonly -ipv6 -fortran unicode svg hal dbus \ kde qt4 -arts -eds -esd -gnome -gstreamer -gtk -firefox" mybox etc # time emerge kde-meta (391 packages have been emerged) real 1171m25.318s user 851m26.393s sys 281m45.629s |