Gentoo - Installation

De wikilivois
Aller à : navigation, rechercher

Objet du document : Installation d’une distribution Gentoo sur un serveur.

http://www.gentoo.org/doc/fr/handbook/

Sommaire

Installation

Préparation des partitions

Booter sur le CD

Au boot taper :

#gentoo  

Choisir le clavier 'fr' - 16

Monter le réseau (ifconfig, route, resolv.conf)

Configurer l’ip (ifconfig), la passerelle (route) et le serveur DNS utilisé (resolv.conf) :

	#ifconfig eth0 xxx.xxx.xxx.xxx
	#route add default gw yyy.yyy.yyy.yyy


  /etc/resolv.conf
   
nameserver 192.168.10.1

Partitionner les disques

sda1 /boot 50M ext3
sda2 swap2xRAM swap
sda3 / Reste ext3
	
#fdisk /dev/sda
n,p,1,enter,+100M
n,p,2,enter,+512M,t,2,82
n,p,3,enter,enter
w pour enregistrer

Formater les partitions

#mkswap /dev/sda2
#mke2fs –j /dev/sda1
#mke2fs –j /dev/sda3

Monter les partitions

#swapon /dev/sda2 
#mkdir /mnt/gentoo (à faire si besoin)
#mount /dev/sda3 /mnt/gentoo
#mkdir /mnt/gentoo/boot
#mount /dev/sda1 /mnt/gentoo/boot

Récupérer et décompacter l’archive gentoo

#cd /mnt/gentoo

Mettre le serveur à l'heure

#date
#date MMJJhhmmAAAA

A partir d’un CD

#mount –t iso9660 /dev/cdroms/cdrom0 /mnt/cdrom
#cp /mnt/cdrom/???/archive.tgz /mnt/gentoo 

A partir d’un serveur web ou ftp

Récupération d’une archive gentoo

#wget adresse_du_stage_gentoo

http://www.gentoo.org/main/en/mirrors.xml

Chrooter l’install gentoo

#cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf 
#chroot /mnt/gentoo /bin/bash
#env-update && source /etc/profile

Installation du système

Mise à jour de l’arbre des packages

#mount -t proc none /mnt/gentoo/proc
#cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
#emerge –metadata

(#emerge –sync)

Mise à jour du système

#emerge –e system

Paramétrage de la zone mondiale

#cp /usr/share/zoneinfo/Europe/Paris /etc/localtime

Compilation du noyau

http://dev.gentoo.org/~dsd/genpatches

#emerge gentoo-sources
#cd /usr/src/linux
#make menuconfig

Les éléments suivants sont obligatoires:

Code maturity -> Prompt for development 

File systems --->
  Pseudo Filesystems --->
    <*> /proc file system support
    < > /dev file system support (OBSOLETE)
    <*> Virtual memory file system support (former shm fs)
  <*> Ext3 journalling file system support

Attention, si vous avez plus de 880Mb de RAM, il faut compiler le noyau avec l'option:

Processor Type and Features ---->
High Memory Support ----> 
(*) 4GB

La page suivante donne plus de détails : http://gentoo-wiki.com/FAQ_Linux_Memory_Management#The_mysterious_880_MB_limit_on_x86

Pour superviser la température de l'ordinateur, il faut compiler le noyau avec les options préconisées par lm_sensors (cf http://secure.netroedge.com/~lm78/kernel26.html )

Pour pouvoir changer la vitesse du ventilateur, il faut disposer d'une carte mère qui le gère (cf http://www.almico.com/forummotherboards.php)

Bus options (PCI, PCMCIA, EISA, MCA, ISA) 
[*] PCI support 
Device Drivers 
I2C support 
<*> I2C support 
<M> I2C device interface 
I2C Algorithms 
<M> (configure all of them as modules) 
I2C Hardware Bus support 
<M> (configure all of them as modules) 
I2C Hardware Sensors Chip support (up to 2.6.13-rc2) 
<M> (configure all of them as modules) 
Hardware Monitoring support (since 2.6.13-rc3) 
<M> (configure all of them as modules) 

14/11/2009: pour l'utilisation d'udev, les options suivantes doivent être compilées (ou non (!))

INOTIFY_USER
SIGNALFD
!SYSFS_DEPRECATED
!SYSFS_DEPRECATED_V2


#make clean bzImage modules modules_install
#cp /usr/src/linux/arch/i386/boot/bzImage /boot/kernel-2.6.14-gentoo-r5
#cp .config /boot/config-2.6.14-gentoo-r5

Configurer les modules

Vous devriez indiquer la liste des modules que vous souhaitez charger automatiquement dans /etc/modules.autoload.d/kernel-2.6 (ou kernel-2.4).

Vous pouvez également ajouter des options aux modules si vous le souhaitez.

Pour dresser la liste des modules disponibles, exécutez la commande find tel qu'indiqué ci-dessous.

N'oubliez pas de substituer <kernel version> par la version du noyau que vous venez juste de compiler :

  • Consulter la liste des modules disponibles
# find /lib/modules/<version du noyau>/ -type f -iname '*.o' -or -iname '*.ko'

Par exemple, pour charger automatiquement le module 3c59x.o, spécifiez-le dans le fichier kernel-2.6 (ou kernel-2.4) selon le noyau que vous utilisez.

  • Modifier le fichier /etc/modules.autoload.d/kernel-2.6

(Exemple pour un noyau 2.6.x)

# vi /etc/modules.autoload.d/kernel-2.6
  • Exemple de fichier /etc/modules.autoload.d/kernel-2.6
3c59x

Packages de base

Package D
Vim vim
Syslog-ng syslog-ng *
Vcron vixie-cron *
at at
Slocate slocate

Editer /etc/updatedb.conf
NETPATHS=""
export NETPATHSc=
#updatedb &

Iptables
Iproute2
iptables
iproute

Remarque :
Il se peut qu’iptables ne fonctionne plus correctement lors d’une mise à jour du noyau.
Il faut alors recompiler iptables.

openssh openssh *
openntp openntpd *

usermod -d /var/empty ntp NTPD_OPTS="-s" dans /etc/conf.d/ntpd

postfix postfix *
telnet net-misc/netkit-telnetd
host bind-tools
mailx mailx
whois whois
pciutils
ethtool
smartmontools
dhcpcd
sysstat
iftop
  /etc/vhosts/webapp-config

Configuration

Paramètres de bases

Le mot de passe root:

#passwd


  /etc/conf.d/hostname
# Set to the hostname of this machine
HOSTNAME="localhost"

  /etc/conf.d/domainname
 When setting up resolv.conf, what should take precedence?
#  0 = let dhcp/whatever override DNSDOMAIN
#  1 = override dhcp/whatever with DNSDOMAIN
OVERRIDE=1

# To have a proper FQDN, you need to setup /etc/hosts and /etc/resolv.conf
# (domain entry in /etc/resolv.conf and FQDN in /etc/hosts).
#
# DNSDOMAIN merely sets the domain entry in /etc/resolv.conf, see
# the resolv.conf(5) manpage for more info.
DNSDOMAIN="livois.com"

rc-update add domainname default

Préciser le nom de la machine et l’adresse ip correspondante dans /etc/hosts.

  /etc/conf.d/keymaps
KEYMAP="fr"

  /etc/conf.d/clock
# Set CLOCK to "UTC" if your system clock is set to UTC (also known as
# Greenwich Mean Time).  If your clock is set to the local time, then
# set CLOCK to "local".
CLOCK="local"

/etc/conf.d/net

Toute l'information réseau est rassemblée dans /etc/conf.d/net.

DHCP est utilisé par défaut et ne demande aucune intervention de votre part.

Si vous devez configurer votre réseau soit pour spécifier des options particulières pour DHCP, soit parce que vous n'utilisez pas DHCP, ouvrez le fichier /etc/conf.d/net :

  • Fichier /etc/conf.d/net par défaut
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d.  To create a more complete configuration,
# please review /etc/conf.d/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).

Pour entrer une adresse fixe, un masque de réseau et une adresse de passerelle, vous devez définir config_eth0 et routes_eth0 :

  • Définir une adresse statique pour eth0
config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default gw 192.168.0.1" )

Pour utiliser DHCP et lui passer des options, définissez les variables config_eth0 et dhcp_eth0 :

  • Obtenir une adresse IP automatiquement avec DHCP
config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"

Le fichier /etc/conf.d/net.example contient une série d'exemples commentés pour vous aider à configurer votre réseau.

  • Activer les connexions réseau automatiquement au démarrage

Pour que vos interfaces réseau soient activées automatiquement lors du démarrage, vous devez les ajouter au niveau d'exécution « default ».

# rc-update add net.eth0 default

Si vous avez plusieurs interfaces réseau, vous devez créer les scripts appropriés (net.eth1, net.eth2 etc.). Pour ce faire, utilisez ln :

Créer des scripts d'initialisation supplémentaires:

# cd /etc/init.d
# ln -s net.eth0 net.eth1
# rc-update add net.eth1 default


  /etc/make.conf
#Vérifier que la variable USE est du type (quelque soit l’ordre !) : 
USE="-X -gtk -gtk2 -opengl -gnome -kde -java -pdflib -qt -qtmt -alsa -tcltk -xv gd ssl ldap pam mysql apache2 session vhosts maildir samba snmp openntpd imap clamav ftp"

fstab

C’est le fichier /etc/fstab qui contient les informations sur les partitions au démarrage du serveur.

  /etc/fstab
# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
/dev/sda1               /boot           ext3            noauto,noatime  1 2
/dev/sda3               /               ext3            noatime         0 1
/dev/sda2               none            swap            sw              0 0
/dev/cdroms/cdrom0      /mnt/cdrom      iso9660         noauto,ro       0 0
#/dev/fd0               /mnt/floppy     auto            noauto          0 0

# NOTE: The next line is critical for boot!
proc                    /proc           proc            defaults        0 0

# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
# POSIX shared memory (shm_open, shm_unlink).
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
#  use almost no memory if not populated with files)
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec     0 0

Remarque : l’option noauto, indique que la partition n’est pas « montée » au démarrage.
C’est le cas de la partition boot, pour ne pas faire de « bêtises ».
D’un autre côté, quand on veut recompiler le noyau (§4.1.4), il ne faut pas oublier de taper #mount /boot au préalable.

Le sixième champ est utilisé par fsck afin de déterminer l'ordre dans lequel les systèmes de fichiers doivent être vérifiés si le système n'a pas été mis hors tension de façon appropriée.
Pour le système de fichiers racine, la valeur devrait être 1.
Pour les autres systèmes de fichiers, la valeur devrait être 2 (ou 0 s'il n'est pas nécessaire de vérifier le système de fichiers).

Grub et le redémarrage

Grub

#grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit


hd(0,0) veut dire premier disque et première partition que l’on soit ou non en IDE setup (hd0) indique que grub est installé dans le MBR.

Editer menu.lst (et non menu.1st!):

  /boot/grub/menu.lst
default 0
timeout 2
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux
root (hd0,0) 
kernel (hd0,0)/bzImage root=/dev/sda3

Remarque : Si grub ne lance pas le système automatiquement, taper les commandes suivantes à l’invite de démarrage grub :

#kernel /boot/bzImage
#boot


Le système va démarrer. Ensuite, il faut :

  • Revoir menu.lst comme défini plus haut
  • Taper #emerge grub

Et relancer le système :

#reboot
#grep -v rootfs /proc/mounts > /etc/mtab

Finalisation avant Reboot

#etc-update  (taper –1 pour en sortir)
#exit
#cd /
#umount /mnt/gentoo/boot
#umount /mnt/gentoo/proc
#umount /mnt/gentoo
#reboot

Sécurisation Linux

Installation du filtrage (à mettre dans install gentoo?)

Les fichiers de filtrage se trouvent dans /etc/fw (cf doc de conception firewall)

Pour lancer le filtrage au démarrage :

#cp firewall /etc/init.d/
#rc-update add firewall default

Installer les mises à jours de sécurité.

Pour une mise à jour complète du système, taper:

#emerge --sync
#emerge world


Pour avoir la liste des packages qu'il faudrait mettre à jour:

#glsa-check -l

Fermer tous les ports inutiles

Remarque : pour vérifier les ports ouverts, utiliser la commande #netstat –tnaup et vérifier le résultat :

Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat
tcp        0      0 :::22                   :::*                    LISTEN

Sécuriser ssh

Nous paramétrons ssh simplement avec authentification par mot de passe (et non clé).

L'utilisateur « root » ne peut pas se connecter.

  /etc/ssh/sshd_config
Protocol 2

PermitRootLogin no
RSAAuthentication no
PubkeyAuthentication no

On relance ensuite ssh

#/etc/init.d/sshd restart

Gestion des logs et supervision

Gestion des logs

Cf aussi

/var/log/
	ntp.log
	net-snmpd.log
	ldap.log
	emerge.log
	clam-update.log
	genkernel.log
	lastlog
	wtmp
	xferlog
	
syslog-ng
/var/log/$HOST/$YEAR/$MONTH/$DAY
messages
mail.log
cron.log
auth.log
firewall.log
snort.log

Applications
/var/log/apache2/
	VLOG-%YEAR-%MONTH-%vhostname.log
	access.log
	error.log
/var/log/snort
	
/var/log/squid
	access.log
/var/log/mysql
	mysql.err  
	mysql.log  
	mysqld.err

Supervision

Net-snmp

Package Gentoo: net-snmp

Monys

#mkdir /usr/local/scripts/snmp –p

Scripts dans /usr/local/scripts/snmp:

  • cpustats
  • spamstats
  • whostats (pour les stats spam emerge File-Tail nécessaire)

Editer snmpd.conf

  /etc/snmp/snmpd.conf
# Plugins
exec .1.3.6.1.4.1.2021.50       cpustats      /usr/local/scripts/snmp/cpustats
exec .1.3.6.1.4.1.2021.51       memstats      /usr/local/scripts/snmp/memstats
exec .1.3.6.1.4.1.2021.52       diskstats     /usr/local/scripts/snmp/diskstats

Tester:

#snmpwalk –v 2c –c public localhost .

Vérification de snmp

#snmpwalk -v 1 -c *community*   ****host*** .1.3.6.1.4.1.2021.50
/etc/monys/hosts/
	home.conf

/usr/local/monys/
	scripts/

/var/www/www.livois.com/monys
	index.html
	scripts/
	images/
	db/

Phpsysinfo

Package Gentoo: phpsysinfo

Affichage des informations des capteurs avec lm_sensors:

  |phpsysinfo|/config.php
// define the motherboard monitoring program here
$sensor_program = "lmsensors";

Package Gentoo: lm_sensors

Le noyau doit avoir été compilé avec les bonnes options (cf §Installation du système).

#/usr/sbin/sensors-detect
#/etc/init.d/lm_sensors start

Cacti

Package Gentoo: cacti

1. Create the new cacti database
   shell> mysqladmin -p --user=root create cacti
2. Import the default cacti database:
   shell> mysql -p cacti < /var/www/www.livois.com/./supervision/cacti/cacti.sql
3. Create a MySQL username and password for cacti.
   shell> mysql -p --user=root mysql
   mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'somepassword';
   mysql> flush privileges;
4. Edit /var/www/www.livois.com/./supervision/cacti/include/config.php and modify the MySQL user,
   password and database for your cacti configuration.


  config.php
        $database_default = "cacti";
        $database_hostname = "localhost";
        $database_username = "cactiuser";
        $database_password = "cacti";

5. Point your web browser to:  http://your-server/cacti/
   Make sure to fill in all of the path variables carefully and
    correctly on the following screen.


  crontab
*/5 * * * * apache /usr/bin/php /var/www/www.livois.com/./supervision/cacti/poller.php > /dev/null 2>&1

Note that you should use poller.php as the cronjob instead of cmd.php (as it was with earlier versions) to enable you to switch between cmd.php and cactid.

Also make sure that the user poller.php runs as ( apache ) has permission to create new files in Cacti's 'rra/' directory which is /var/www/www.livois.com/./supervision/cacti/rrd

Finalisation d’un master

Créer le fichier master.tgz

#emerge clean 
#rm –rf /var/tmp/portage/
#emerge rsync

Lancer un CD de boot

Monter les partitions

#mkdir /mnt/gentoo
#mount /dev/sda3 /mnt/gentoo
#mkdir /mnt/gentoo/boot
#mount /dev/sda1 /mnt/gentoo/boot
#rm –rf /mount/gentoo/var/tmp/portage/

Créer l’archive

#cd /mnt/gentoo
#tar –f gentoo_xxx_yyy-zzzzzz.tgz –c –z –v ./

avec xxxx le type (base, VC, FW) yyyy le processeur (pentium,celeron) zzzzzz la date

Rendre le CD bootable (FIXME)

Remarque : ce CD ne contient pas des fonctionnalités suffisantes pour être autonome.

Récupérer le fichier tomsrtbt-2.x.x.ElTorito.288.img sur le site http://www.toms.net/rb/

Installer mkisofs

#emerge /usr/portage/sys-apps/mkisofs/mkisofs-1.13-r2.ebuild
#bunzip2 tomsrtbt-2.x.x.ElTorito.288.img.bz2
#mkdir -p master/boot
#cp tomsrtbt-2.x.x.ElTorito.288.img master/boot
#mkisofs -b boot/tomsrtbt-2.x.x.ElTorito.288.img –c boot/boot.catalog –o master.iso

Graver

Il suffit de graver le master.iso et le tour est joué.

Remarque : Une fois le CD booté, la commande pour avoir le clavier français est

  1. loadmap < /usr/lib/key/fr.map

Disquette de boot simple

#tar zxvf tomsrtbt-2.0.x.tgz
#cd tomsrtbt-2.0.x
#./install.s (il faut être root)

Configuration avancée

RAID

Partitionner le 2e disque de façon identique

#fdisk /dev/sdb

Ecrire le fichier /etc/raidtab

  /etc/raidtab
raiddev /dev/md0
        raid-level      1
        nr-raid-disks   2
        nr-spare-disks  0
        chunk-size      4 
        persistent-superblock   1
        device          /dev/sda1
        raid-disk       0
        device          /dev/sdb1
        raid-disk       1

raiddev /dev/md1
        raid-level      1
        nr-raid-disks   2
        nr-spare-disks  0
        chunk-size      4 
        persistent-superblock   1
        device          /dev/sda3
        raid-disk       0
        device          /dev/sdb3
        raid-disk       1

Booter avec un disque de boot

#gentoo dokeymap

Monter le disque sur le répertoire /mnt/sysimage

#mkdir /mnt/sysimage
#mount /dev/sda3 /mnt/sysimage

#cp /mnt/sysimage/etc/raidtab /etc/raidtab


Créer les « md devices »

#mknod /dev/md0 b 9 0 (correspond à /boot)
#mknod /dev/md1 b 9 1 (correspond à /)

#umount /mnt/sysimage

#mkraid -–really-force /dev/md0
#mkraid –-really-force /dev/md1 (environ 35 minutes)

Cette opération prend du temps. Attendre que les partitions raids soient créées. La commande cat /proc/mdstat permet de le vérifier.

#mount /dev/md1 /mnt/sysimage
#mount /dev/md0 /mnt/sysimage/boot

#chroot /mnt/sysimage /bin/bash

Editer /etc/fstab et /etc/lilo.conf

/etc/fstab

Remplacer sda1 par md0 et sda3 par md1. Vérifier que le fichier correspond bien à :

  /etc/fstab
/dev/md0 /boot ext3 noauto,noatime
/dev/md1 / ext3 noatime
/dev/sda2   /swap
/dev/sda1  /swap

Le démarrage Grub ne marche pas bien avec le raid logiciel, il faut donc utiliser lilo.

/etc/lilo.conf

  /etc/lilo.conf
# Start LILO global section
menu-scheme=Wb
boot = /dev/md0
prompt
map = /boot/System.map
install=/boot/boot.b
lba32
#if you always want to see the prompt with a 15 second timeout:
#timeout=150
delay = 50
vga = normal    # Normal VGA console
# End LILO global section

# Linux bootable partition config begins
        image = /boot/bzImage
        root = /dev/md1
        label = Gentoo
        read-only # read-only for checking

#lilo –b /dev/sda
#lilo –b /dev/sdb

Recréer les « md devices »

#mknod /dev/md0 b 9 0
#mknod /dev/md1 b 9 1

#/sbin/lilo –v

Remarque : Un message d’erreur « modprobe: can’t locate module block-major-3 » peut apparaître.

Changer les partitions des 2 disques

#fdisk /dev/sda
#fdisk /dev/sdb

t,1,fd t,3,fd w sur les 2 disques.

« Resizer » les partitions

#exit
#umount /dev/md0
#umount /dev/md1
#mount /dev/sda3 /mnt/sysimage -o ro
#chroot /mnt/sysimage /bin/bash
#e2fsck –f /dev/md1   Abort (y) ? -> taper N
#resize2fs /dev/md1
#e2fsck –f /dev/md0   Abort (y) ?-> taper N
#resize2fs /dev/md0

Reboot

Avant le redémarrage du serveur, vérifier que tous les points suivants ont été abordés:

  • les fonctionnalités raid et scsi sont compilées dans le noyau
  • lilo a été installé et lilo.conf a été édité pour le mode RAID
  • /etc/fstab a été édité en conséquences
  • /sbin/lilo a été lancé pour mettre à jour le secteur de boot
  • toutes les partions raid ont été synchronisées entre elles (vérifier avec /proc/mdstat)
  • les partitions raid ont été changées en 0xfd
  • les systèmes de fichiers ont été remis à jour avec e2fsck et resize2fs.

On peut alors redémarrer :

#reboot

Tests

Pour voir si le raid est effectif, taper:

#cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md1 : active raid1 scsi/host0/bus0/target1/lun0/part3[1] scsi/host0/bus0/target0/lun0/part3[0]
      17141248 blocks [2/2] [UU]

md0 : active raid1 scsi/host0/bus0/target1/lun0/part1[1] scsi/host0/bus0/target0/lun0/part1[0]
      104320 blocks [2/2] [UU]

unused devices: <none>

Les parties importantes sont [2/2] [UU]

Remarque : Le seul vrai moyen est d’enlever un disque à froid et de relancer le serveur.

Reconstruction suite à une perte de disque

  • Eteindre le système
  • Remplacer le disque en panne
  • Relancer le système
  • Partitionner le 2e disque de la même façon que le 1er (ne pas oublier le label raid fd)
    1. raidhotadd /dev/mdX /dev/sdY pour resynchroniser les disques, où /dev/sdY est la partition à rajouter au raid.

Copyright

© 2006-2008 Christophe de Livois

Tête de GNU Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. Pour plus d'informations consulter le site de l'APRIL.