Linux

Des pages sur le sujet… et

qq trucs en vrac

Bépo

debian install sans cd

Il faut juste avoir un grub qui marche déjà, récupérer l'initrd.gz et le vmlinuz nécéssaire au 1er boot (par exemple sur http://debian.osuosl.org/debian/dists/etch/main/installer-i386/current/images/netboot/debian-installer/i386/), et ajouter dans le menu du grub qui marche (remplacer (hd0,0)/boot/newinstall/ par le bon chemin).

title  Debian Install
kernel (hd0,0)/boot/newinstall/vmlinuz root=/dev/ram0 ramdisk_size=12000
initrd (hd0,0)/boot/newinstall/initrd.gz

cf http://www.us.debian.org/releases/stable/i386/ch05s01.html.fr#boot-initrd

Avec une clé USB, c'est simple aussi (cf http://wiki.debian-facile.org/wiki/doku.php?id=manuel:installation:installusb), pour une lenny, avec la clé dans /dev/sdf

wget http://ftp.fr.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz
wget http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-506-i386-netinst.iso
zcat boot.img.gz > /dev/sdf
mount /dev/sdf /mnt/test
cp debian-506-i386-netinst.iso /mnt/test
umount /mnt/test

Y'a plus qu'à booter sur la clé…

Dans cette exemple, la clé se retrouve avec 256Mo, ça doit être possible de partitionner la clé avant et de faire un zcat boot.img.gz > /dev/sdf1 pour pouvoir mettre une iso + grosse sur /dev/sdf2 (pas testé)

Clé USB live

cf http://live.debian.net/manual/current/html/live-manual/the-basics.fr.html

Pour créer une clé bootable avec un installer et un environnement complet

mkdir debian-live-64
cd debian-live-64/
# pour une clé usb, le bootloader est forcément isolinux, et il ne supporte que ntfs en --binary-filesystem 
lb config --clean --apt apt --binary-images iso-hybrid --binary-filesystem ntfs --debian-installer cdrom --distribution wheezy --debian-installer-gui true --bootappend-live "locales=fr_FR.UTF-8 keyboard-layouts=fr" --updates true --backports true
 
# en root
lb build
 
# #using-usb-extra-space
# On branche la clé, df ou mount pour vérifier le X de /dev/sdX, ATTENTION à pas se gourer !
# en la laissant montée
cp binary.hybrid.iso /dev/sdX
# pour créer une 2e partition
gparted ${USBSTICK}

Gestion des paquets debian

Depuis que les backports sont officiels, le package pinning sert pas trop (et pb de libc entre lenny et squeeze), je laisse ça là pour mémoire

Un autre lien (http://www.andesi.org/index.php?node=130) et un article intéressant sur apt-build (http://www.andesi.org/index.php?node=108).

Le apt howto http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.en.html

Rmq : un attribut intéressant, le o=Debian pour préciser l'origine debian des paquets (pour les distinguer par exemple de o=dotdeb), et une commande pour voir les attributs des différentes sources :
for f in /var/lib/apt/lists/*Release; do echo "$f :"; cat $f; echo; done;

package pinning

Ou comment mélanger les debian stable/testing/unstable de debian en limitant les risques

  • mettre les sources testing et unstable dans le sources.list
  • créer un fichier /etc/apt/preferences qui contient
Package: *
Pin: release a=testing
Pin-Priority: 990
 
Package: *
Pin: release a=unstable
Pin-Priority: 99

d'après http://www.bxlug.be/articles/194 (vu ailleurs aussi)

⇒ et sun-java5-jdk s'installe tout seul ;-) .

backports

Tout est expliqué http://backports.debian.org/

sources.list et préférences apt

Mon sources.list lenny (en squeeze on mettra plutôt les ajouts dans des /etc/apt/sources.list.d/truc.list)

deb http://mir2.ovh.net/debian/ lenny main contrib non-free
deb-src http://mir2.ovh.net/debian/ lenny main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

deb ftp://ftp.debian-multimedia.org lenny main non-free

# backports devenu officiel, cf http://backports.debian.org/
# on prend le mirror debian.netcologne.de en ftp
deb ftp://debian.netcologne.de/debian-backports/ lenny-backports main contrib non-free

et dans /etc/apt/apt.conf (pour squeeze on mettra ça plutôt dans un fichier de /etc/apt/apt.conf.d/, par ex 80no_reco_ni_sugg pour passer après les autres)

// on veut pas des recommandés ou suggérés
APT::Install-Recommends "0";
APT::Install-Suggests "0";

Et pour /etc/apt/preferences (en squeeze préférer des fichier comme /etc/apt/preferences.d/openoffice)

Package: openoffice.org openoffice.org-gnome
Pin: release a=lenny-backports
Pin-Priority: 999

Rq: on ne peut pas utiliser de wildcard ici, faut lister tous les paquets. Comme c'est fastidieux, pour les avoir tous on pourra lancer par ex

aptitude -t lenny --disable-columns -F "%p" search 'openoffice.org-'|tr '\n' ' '

Création de paquet debian

transfert de clés gpg

Pour exporter ses clés : gpg --export -o fichier
et on récupère avec gpg --import fichier

récupérer la liste des paquets pour réinstall à l'identique

# on récupère la liste aptitude -F "%p" search ~i\!~M > liste

et sur l'autre machine on installe tous ces paquets aptitude install $(<liste) (de Gilles Mocellin via debian-user-french _ad_ lists.debian.org)

  • -F "%p" ⇒ formatage de sortie, on ne veut que les noms de paquets
  • ~i ⇒ les paquets installés
  •  !~M ⇒ mais pas les paquets automatiquement installés

(on peut mettre '~i!~M' au lieu de ~i\!~M, mais attention de ne pas quoter avec " sinon bash va interprêter le !). Cf http://doc.ubuntu-fr.org/aptitude#motifs_de_recherche_utilisation_avancee pour la syntaxe de recherche.

Ça peut servir par exemple pour voir pourquoi les paquets marqués auto sont installés :
aptitude search -F "%p" ~i~M | while read p; do echo -e "\n$p"; aptitude why $p; done;
ou pour voir ceux qui ne sont là "que" par recommandation
aptitude search -F "%p" ~i~M | while read p; do aptitude why $p; done |grep Recommends (long et gourmand)

Marquer tous les libXX en auto : aptitude -F "%p" search ^lib~i\!~M > list; aptitude markauto $(<list); rm list

modif image iso

SysRq

cf http://aplawrence.com/Words2005/2005_04_13.html

The "Magic Sysrequest key" is Alt (left or right Alt key) and Sysrq (up there under Print Screen, next to F12 on most keyboards). To use it, you need to have it enabled in your kernel (CONFIG_MAGIC_SYSRQ). It usually is; if you have a file called '/proc/sys/kernel/sysrq' you have this. To ENABLE the magic functions, you need a "1" in that file. If it has 0, Alt-SysRq just returns you to the previous console you were using.

  • 'r' - Turns off keyboard raw mode and sets it to XLATE.
  • 'k' - Secure Access Key (SAK) Kills all programs on the current virtual console. NOTE: See important comments below in SAK section.
  • 'b' - Will immediately reboot the system without syncing or unmounting your disks.
  • 'o' - Will shut your system off (if configured and supported).
  • 's' - Will attempt to sync all mounted filesystems.
  • 'u' - Will attempt to remount all mounted filesystems read-only.
  • 'p' - Will dump the current registers and flags to your console.
  • 't' - Will dump a list of current tasks and their information to your console.
  • 'm' - Will dump current memory info to your console.
  • '0'-'9' - Sets the console log level, controlling which kernel messages will be printed to your console. ('0', for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.)
  • 'e' - Send a SIGTERM to all processes, except for init.
  • 'i' - Send a SIGKILL to all processes, except for init.
  • 'l' - Send a SIGKILL to all processes, INCLUDING init. (Your system will be non-functional after this.)
  • 'h' - Will display help (actually any other key than those listed above will display help. but 'h' is easy to remember :-)

If you have this enabled, it can be useful in the case where the system has escaped your control and nothing else is working. The following sequence may be better than just hitting the power button:

  • Alt+SysRq+s - sync the disk
  • Alt+SysRq+e - try to nicely kill processes (wait a little bit here)
  • Alt+SysRq+i - no more mister nice guy
  • Alt+SysRq+u - unmount disks (wait a bit here, too)
  • Alt+SysRq+b - reboot

I can remember that with "So Everything Is Unusual - Boot!"

Un billet sur le mirroring de dépots (ubuntu, mais idem pour debian), pour une install ailleurs sans adsl : http://blog.racoon97.net/index.php?2007/04/07/90-installer-ubuntu-sans-connexion-internet-a-partir-des-depots-sur-un-disque-dur-externe

Raccourcis clavier

Mac OS X

  • | → shift + alt + L
  • { → alt + (
  • [ → alt + shift + (
  • \ → alt + shift + :

Le reste sur http://www.prendreuncafe.com/blog/post/2007/05/19/Petit-pense-bete-des-raccourcis-Mac-OS-X

screen

sudo

Juste un exemple de /etc/sudoers, plus rapide qu'un long discours

# des alias de commandes
Cmnd_Alias NET=/sbin/ifconfig,/usr/sbin/iftop,/usr/bin/gnome-ppp
Cmnd_Alias HALT=/sbin/halt,/sbin/reboot
Cmnd_Alias OTHERBIN=/usr/bin/ionice,/usr/bin/renice,/usr/bin/truecrypt

# et on donne le droit au user daniel d'exécuter depuis n'importe quel host (ALL), 
# en tant que root et sans mot de passe les commandes suivantes
daniel ALL=(root) NOPASSWD:NET,NOPASSWD:HALT,NOPASSWD:OTHERBIN

# et on donne le droit aux users du groupe adm d'exécuter ces commandes en root
# (mais ils devront fournir leur mot de passe)
%adm ALL=(root) NET,HALT,OTHERBIN

iptables

exemples

  • Pour bloquer une ip, c'est iptables -A INPUT -s ip.un.peu.louche -j DROP,
  • et pour la débloquer c'est iptables -D INPUT -s ip.un.peu.louche -j DROP
  • Pour qu'une VM avec une ip privée puisse “sortir” sur internet
iptables -t nat -A POSTROUTING -s ip.privee.de.la.vm -o vmbr0 -j SNAT --to ip.publique.a.utiliser
  • Et pour qu'une connexion sur $port_ip_pub arrive sur un port d'une ip privée
iptables -t nat -A PREROUTING -p tcp -d ip.publique --dport $port_ip_pub -j DNAT --to-destination ip.privee.de.la.vm:$port_ip_privee

(on peut aussi ajouter -i $interface si on veut se limiter à cette interface)

Et pour virer ces règles, remplacer le -A par -D

tunnel ssh

Port local redirigé vers ailleurs

ssh -f -N -L $localPort:$destServer:$destPort $user@$sshServer (souvent, $sshServer et $destServer sont identiques, mais c'est pas obligé, et c'est même pratique pour rerouter un port vers une machine sur laquelle on a pas de compte ssh, le tunnel étant entre la machine locale et $sshServer)

Pour garder la connexion active, même sans traffic, ssh -o ServerAliveInterval=300 -f -N -L $localPort:$destServer:$destPort $user@$sshServer (envoie un ~ping toutes les 5min).

Port distant redirigé vers ailleurs

ssh -f -N -R $remotePort:$destServer:$destPort $user@$remoteServer

Redirection IP

S'il n'y a pas besoin de chiffrer les communication, c'est bcp plus simple de rediriger le trafic avec iptables (source utilisée)

# vérifier que ça répond 1
cat /proc/sys/net/ipv4/ip_forward
# exemple en redirigeant le trafic arrivant sur le port 80 vers $newIP
iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to-destination $newIP
iptables -t nat -A POSTROUTING -p tcp -d $newIP –dport 80 -j MASQUERADE

label disques

  • donner un label à une partition : tune2fs -L monlabel /dev/hda1
  • monter d'après le label dans fstab : LABEL=monlabel (à la place de /dev/… ou UUID=…)

uuid

Si vous utiliser les uuid (dans grub2 par ex, ou dans votre fstab), et que vous faites des backup restaurations avec partimage, vous pouvez vous retrouver avec 2 partitions ayant le même UUID (sdaN backupée et restaurée sur sdbM), et là c'est pas terrible ;-)

Mais ça peut s'arranger (http://doc.ubuntu-fr.org/uuid_et_label#modifier_manuellement_l_uuid_d_un_systeme_de_fichiers)

# pour voir les uuid (et les labels)
blkid
# ls -l /dev/disk/by-uuid/ donne les mêmes infos
# on a sda3 et sda5 avec le même UUID, on en veut un nouveau pour sda5
# on en génère un avec uuidgen
newu=$(uuidgen)
echo $newu #pour voir ;)
# puis on l'affecte à sda5 avec tune2fs
tune2fs -U $newu /dev/sda5

(penser à modifier /boot/grub/grub.cfg et /etc/fstab en conséquence)

nb montages avant check disque

  • check tous les 90 mounts ou 3 mois (le 1er qui arrive) tune2fs -c 90 -i 3m /dev/hda1.

Backup simple d'une partition

simplement avec dd if=/dev/sdX | gzip > /mnt/backup/bkp_sdX_avec_dd.gz, que l'on récupère (sur la même machine) avec zcat /mnt/backup/bkp_sdX_avec_dd.gz | dd of=/dev/sdX

Ça marche d'une machine à l'autre sur des partitions de même taille, si le /dev/sdX cible est plus grand que l'origine, ça fait de la place perdue, et s'il est plus petit je sais pas trop, mais je déconseillerais ;-)

Pour faire des images de partitions restaurables sur d'autres partitions de taille différentes, utiliser plutôt partimage.

Manipulation MBR

MBR : Master Boot Record, c'est ce qui permet d'appeller le lanceur de l'OS, grub, lilo ou celui de windows).

Normalement, c'est le bootloader du 1er disque (le 1er déclaré dans le bios) qui est lu, et s'il est vide celui de la partition active de ce disque. Pour ceux qui ont plusieurs OS et veulent conserver à chacun son bootloader, ça peut être pratique de le mettre dans le MBR de la partition de boot (/boot plutôt que / si c'est différent) de l'OS concerné, histoire d'être sûr qu'il se fera pas écraser par le bootloader d'un autre OS installé ensuite. Reste ensuite, éventuellement, à mettre un bootloader sur le disque complet qui ne fait que du chaînage vers les différents bootloader des différents OS sur leur partitions respectives).

Par ex un linux sur sda1 avec son grub sur sda1, un autre linux sur sdb3 avec son grub2 sur sdb3, et un grub (ça marche même si les partitions changent de taille, mais pas si son menu.lst disparait) ou un lilo (n'a pas besoin de menu.lst mais ne marchera plus si les partitions sont plus à la même place) sur sda qui ne fait que du chainloader +1 vers sda1 ou sdb3.

Pour sauvegarder le MBR (446 octets de bootloader + 64 octets de table des partitions + 2 octets de signature, cf http://www.cyberciti.biz/faq/howto-copy-mbr/)

# sauvegarde du MBR de sda (COMPLET car 512 octets, prendre 446 pour bootloader only)
dd if=/dev/sda of=/mnt/bkpdisk/mbr-sda.bak bs=512 count=1
# récup du MBR complet de sda
dd if=/mnt/bkpdisk/mbr-sda.bak of=/dev/sda bs=512 count=1
# recup du bootloader only (sans table des partitions) que l`on met sur un autre disque (sdb)
dd if=/mnt/bkpdisk/mbr-sda.bak of=/dev/sdb bs=446 count=1

Et pour effacer un MBR (le bootloader mais pas les partitions), on met juste des 0 dedans avec

dd if=/dev/zero of=/dev/sdX bs=446 count=1

Créer une partition chiffrée

Pour créer un volume lvm (ici toto dans vg3) et une partition chiffrée avec luks dedans (cf http://www.debian-administration.org/articles/469)

# le volume
lvcreate -n toto --size 200G vg3
 
# On le chiffre (ça efface tout s’il y avait qqchose dedans)
cryptsetup luksFormat /dev/vg3/toto
 
# On l’ouvre en lui donnant un nom (ici toto aussi, mais ça peut être ce que l’on veut)
cryptsetup luksOpen /dev/vg3/toto toto
# On a alors un /dev/mapper/vg3-toto qui est le volume lvm
# et un /dev/mapper/toto qui est le volume luks (et pourrait avoir un autre nom)
 
# On peut créer un filesystem dedans
mkfs.ext4 /dev/mapper/toto
 
# et le monter normalement
mount /dev/mapper/toto /toto

Redimensionner un volume luks

Cf http://www.gigahype.com/resize-luks-encryped-lvm-partition/

# On démonte
umount /dev/mapper/toto
 
# On check
fsck.ext4 -f /dev/mapper/toto
 
# On ferme le volume luks
cryptsetup luksClose toto
 
# On agrandit le volume lvm
lvextend -L +20G /dev/vg3/toto
# idem lvextend -L +20G /dev/mapper/vg3-toto
 
# On rouvre luks
cryptsetup luksOpen /dev/vg3/toto toto
 
# resize luks
cryptsetup --verbose resize toto
 
# On peut vérifier le fs si on est méfiant
fsck.ext4 -f /dev/mapper/toto
 
# et le monter
mount /dev/mapper/toto /toto

Montage de partitions chiffrées

Pour monter une partition chiffrée avec luks (le système de chiffrement proposé par debian à l'install), bien utile pour de la maintenance quand on boot sur usb (pour modifier les tailles de partitions, les backuper, etc.).

Attention, ici c'est un volume luks, sur une partition physique, qui contient des lv (ce que fait l'installeur debian), plus haut on parlait de lv qui contiennent du luks, les deux sont possible (mais pour avoir du luks dans un lv, il faut avoir un système qui tourne et a lancé lvm avant).

# on crée le device mapper qui va bien (nommé ici "crypt") pour sda2 (par ex)
crypsetup luksOpen /dev/sda2 crypt
# ça crée un /dev/mapper/crypt
# si c`est du lvm dedans 
vgscan
# doit suffire à retrouver les volumes, suffit de vérifier avec 
lvdisplay
# mais faut encore les rendre actifs (créer les /dev/vg/lv qui vont bien)
vgchange -ay
# et ensuite on peut les monter normalement

Raid soft

Un peu de doc et des liens sur isalo et linuxpedia

  • créer un raid1 sur md0 avec les partitions sda1 et sdb1

mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sda1 /dev/sdb1

  • Voir l'état des raid

mdadm –detail –scan –verbose, cat cat /proc/mdstat donne aussi des infos utiles (UU ⇒ 2 disques en Usage, OK)

  • récupérer un raid existant non détecté (ex avec le précédent)

mdadm –assemble /dev/md0 /dev/sda1 /dev/sdb1 (si y'a du lvm dedans, faudra probablement lancer des pvscan et vgscan + activation des lv avec vgchange -ay)

  • Après une modif du raid, faut enregistrer la conf pour que ça redémarre correctement au prochain boot

cp -a /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.$(date '+%F').bak && mdadm –detail –scan –verbose > /etc/mdadm/mdadm.conf

  • Enlever une partition

mdadm –manage /dev/md0 –remove /dev/sdb1

  • Ajouter une partition

mdadm –manage /dev/md0 –add /dev/sdb1

sensors

Avec un Carte mère Asus P5QL pro, sensors ne détecte que la température des 4 cœurs du CPU, avec un petit w83627ehf force_id=0x8860 ça va nettement mieux, merci à cet |article qui reprenait cette info.

 
linux/start.txt · Dernière modification: 23/07/2014 20:50 par daniel