Gentoo - Installation
Objet du document : Installation d’une distribution Gentoo sur un serveur.
http://www.gentoo.org/doc/fr/handbook/
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
<licode file=/etc/resolv.conf>
nameserver 192.168.10.1
</licode>
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 | |
Iptables Iproute2 |
iptables iproute |
Remarque : | |
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 |
<licode file=/etc/vhosts/webapp-config> </licode>
Configuration
Paramètres de bases
Le mot de passe root:
#passwd
<licode file=/etc/conf.d/hostname>
- Set to the hostname of this machine
HOSTNAME="localhost" </licode>
<licode file=/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" </licode>
rc-update add domainname default
Préciser le nom de la machine et l’adresse ip correspondante dans /etc/hosts.
<licode file=/etc/conf.d/keymaps> KEYMAP="fr" </licode>
<licode file=/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" </licode>
/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
<licode file=/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" </licode>
fstab
C’est le fichier /etc/fstab qui contient les informations sur les partitions au démarrage du serveur. <licode file=/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 </licode>
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!): <licode file=/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 </licode>
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.
<licode file=/etc/ssh/sshd_config> Protocol 2
PermitRootLogin no RSAAuthentication no PubkeyAuthentication no </licode>
On relance ensuite ssh
#/etc/init.d/sshd restart
Gestion des logs et supervision
Gestion des logs
Cf aussi
- pour les logs systèmes: Gestion_des_logs
- pour le web: Apache2_-_Configuration#Gestion_des_logs et Administration_des_Services_Web#Gestion_des_logs
- pour le mail: Administration#Gestion_des_logs
/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 <licode file=/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 </licode>
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: <licode file=|phpsysinfo|/config.php> // define the motherboard monitoring program here $sensor_program = "lmsensors"; </licode>
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.
<licode file=config.php>
$database_default = "cacti"; $database_hostname = "localhost"; $database_username = "cactiuser"; $database_password = "cacti";
</licode>
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.
<licode file=crontab>
- /5 * * * * apache /usr/bin/php /var/www/www.livois.com/./supervision/cacti/poller.php > /dev/null 2>&1
</licode>
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
- 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 <licode file=/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
</licode>
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 à : <licode file=/etc/fstab> /dev/md0 /boot ext3 noauto,noatime /dev/md1 / ext3 noatime /dev/sda2 /swap /dev/sda1 /swap </licode>
Le démarrage Grub ne marche pas bien avec le raid logiciel, il faut donc utiliser lilo.
/etc/lilo.conf
<licode file=/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
</licode>
#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)
- raidhotadd /dev/mdX /dev/sdY pour resynchroniser les disques, où /dev/sdY est la partition à rajouter au raid.
Copyright
© 2006-2008 Christophe de Livois
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. |