linux

#RedHat

Trouver de la doc:

http://docs.fedoraproject.org/

Mettre à jour vers une nouvelle version

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#update de rpm
yum update rpm

#Mise à jour de la version existante:

yum -y update

#Clean du cache de yum:

yum clean all

#Upgrade:

yum install preupgrade
preupgrade

KernelCompilation

  • Sous gentoo avec genkernel
    1
    2
    3
    4
    5
    6
    7
    8
    livecd linux # zcat /proc/config.gz > /usr/share/genkernel/arch/x86_64/kernel-config
    livecd linux # genkernel all
    livecd linux # mv .config .config-old
    livecd linux # make mrproper
    CLEAN scripts/basic
    CLEAN scripts/kconfig
    CLEAN include/config
    CLEAN .config.old

    RAID5 logiciel

    Créer le volume

    1
    2
    3
    4
    root@Hades:~$ mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 --chunk=128 --name="data" /dev/sd[cde]1 
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.
    root@Hades:~$

    Avoir des infos

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    root@Hades:~$ cat /proc/mdstat
    Personalities : [raid6] [raid5] [raid4]
    md0 : active raid5 sde1[2] sdd1[1] sdc1[0]
    3906766592 blocks super 1.2 level 5, 128k chunk, algorithm 2 [3/3] [UUU]

    unused devices: <none>
    root@Hades:~$ mdadm --detail /dev/md0
    /dev/md0:
    Version : 1.2
    Creation Time : Sun Oct 6 22:08:50 2013
    Raid Level : raid5
    Array Size : 3906766592 (3725.78 GiB 4000.53 GB)
    Used Dev Size : 1953383296 (1862.89 GiB 2000.26 GB)
    Raid Devices : 3
    Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sun Oct 6 22:08:50 2013
    State : clean
    Active Devices : 3
    Working Devices : 3
    Failed Devices : 0
    Spare Devices : 0

    Layout : left-symmetric
    Chunk Size : 128K

    Name : Hades:data (local to host Hades)
    UUID : 0f709a04:d9080945:e1902a3d:7fc273c2
    Events : 0

    Number Major Minor RaidDevice State
    0 8 33 0 active sync /dev/sdc1
    1 8 49 1 active sync /dev/sdd1
    2 8 65 2 active sync /dev/sde1

    Supprimer le volume

    1
    2
    3
    4
    5
    root@Hades:~$ mdadm -S /dev/md0 
    mdadm: stopped /dev/md0
    root@Hades:~$ mdadm --zero-superblock /dev/sdc1
    root@Hades:~$ mdadm --zero-superblock /dev/sdd1
    root@Hades:~$ mdadm --zero-superblock /dev/sde1

    Doc

    http://wiki.linuxwall.info/doku.php/fr:ressources:dossiers:raid5_logiciel

systemD

1
2
3
4
systemctl enable vsftpd.service
systemctl start vsftpd.service

systemctl list-unit-files

LXC

Création d’un container

1
lxc-create -n  intranet -f /appli/lxc/containers/intranet/intranet.lxccfg  -t debian -- template-options --path=/appli/lxc/containers/intranet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
root@Hades:rootfs$ cat /appli/lxc/containers/intranet/intranet.lxccfg
lxc.tty = 4
lxc.pts = 1024
lxc.network.type = veth
lxc.network.flags = up
#lxc.network.link = virbr0
lxc.network.link = br0
lxc.network.name = veth0
lxc.network.mtu = 1500
lxc.rootfs = /appli/lxc/containers/intranet/rootfs
lxc.cgroup.devices.deny = a
# /dev/null and zero
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm
# consoles
lxc.cgroup.devices.allow = c 5:1 rwm
lxc.cgroup.devices.allow = c 5:0 rwm
lxc.cgroup.devices.allow = c 4:0 rwm
lxc.cgroup.devices.allow = c 4:1 rwm
# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm
lxc.cgroup.devices.allow = c 1:8 rwm
lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 5:2 rwm
# rtc
lxc.cgroup.devices.allow = c 254:0 rwm

Attention:

  • Un container n’est pas qu’un bootstrap
  • La création de container d’un OS utilisant #F00:upstart (ubuntu) ne fonctionne pas vraiment (possible avec quelques manip)

KVM

Convertir une image vmware vers qcow2

Malheureusement il ne semble pas possible de convertir une image vmware splittée (image.vmdk, image-s001.vmdk, image-s002.vmdk). La solution est de concaténer l’image en un seul fichier:

  1. installer les outils vmware (disponible avec vmware-server, workstation,…)
  2. concaténer l’image:
    1
    vmware-vdiskmanager -r image.vmdk -t 0 image-copy.vmdk
  3. la convertir:
    1
    qemu-img convert image-copy.vmdk -O qcow2 image.qcow2
    Le gros désavantage, c’est qu’il nécessaire d’avoir de disponible au moins deux fois la taille de
    l’image d’origine, afin de contenir les images converties

Monter une image qcow2:

Une image qcow2 se rapproche d’un disque dur (table de partitions et multiples partitions). Ce n’est pas donc pas directement montable. La solution consiste à passer par (nbd):

  1. Charger le module nbd

    1
    modprobe nbd
  2. Rendre l’image joignable joignable via /dev/nbd0:

    1
    qemu-nbd --connect=/dev/nbd0 mon_image.qcow2

    Un fdisk sue /dev/nbd0 devrait alors montrer les différentes partitions, celles ci étant accessibles via /dev/nbd0p1, /dev/nbd0p2, ….

  3. Si les entrées /dev/nbd0p* n’apparaissent pas:

    1
    2
    3
    4
    5
    [root@Lufy:~]# kpartx -a -v /dev/nbd0
    add map nbd0p1 (253:5): 0 11550672 linear /dev/nbd0 63
    add map nbd0p2 (253:6): 0 2 linear /dev/nbd0 11550735
    add map nbd0p5 (253:7): 0 2249037 linear /dev/nbd0 11550798
    add map nbd0p6 (253:8): 0 7164927 linear /dev/nbd0 13799898

    Ce qui permet de récupérer les majeurs et mineurs pour créer les entrées via mknod:

    1
    2
    3
    4
    mknod /dev/nbd0p1 b 253 5
    mknod /dev/nbd0p2 b 253 6
    mknod /dev/nbd0p2 b 253 7
    mknod /dev/nbd0p2 b 253 8
  4. Après usage, déconnecter l’image

    1
    2
    [root:~]# qemu-nbd --disconnect /dev/nbd0
    /dev/nbd0 disconnected

    Attention: éviter tout accès concurrentiel sur l’image ainsi montée!

RPM

  1. Installer les outils
    1
    yum install rpmdevtools yum-utils
  2. Initialiser l’environnement
    1
    2
    su - rpmmake
    rpmdev-setuptree
  3. Générer un fichier spec vide
    1
    2
    $ cd rpmbuild/SPECS/
    $ rpmdev-newspec
  4. Compiler le RPM
    1
    rpmbuild -ba fichier.spec
    #SElinux

    Restaurer le contexte d’un répertoire:

    restorecon -RvF

Désactiver

1
# setenforce 0

Pour le désactiver définitivement, il faut éditer le fichier /etc/selinux/config, et remplacer la ligne commençant par « SELINUX=…… » par « SELINUX=disabled » puis rebooter.

Astuces:

Changer le mot de passe via un script

1
echo -e "new_password\nnew_password" | (passwd --stdin $USER)

Forcer la redecouverte des disques à chaud

1
scsi-rescan --forcerescan

Prompt en couleur sans bug de “wrap” (bash)

1
export PS1="\[$(tput setaf 3)\][`whoami`@`uname -n`]\$ \[$(tput sgr0)\]"

Les tput set les couleurs
Les [ et ] délimitent des zones de “zero-width” ce qui empêche le bug en cas de ligne trop longues.
Le $ met le bon de caractère de fin en fonction de root ou non root

LVM

Gestion du partitionnement avec LVM

Agrandir un FS:

ex: agrandissement du lv “lvtmp”

1
2
3
4
5
$lvextend -L 35G /dev/mapper/VgData-lvtmp

Extending logical volume lvtmp to 35,00 GB
Logical volume lvtmp successfully resized
$resize2fs /dev/mapper/VgData-lvtmp

reduire un FS

Attention: certains FS (comme XFS) ne supportent pas d’être réduit
Principe: on réduit dabord le FS, puis le LV. Enfin on augmente le FS pour prendre toute la place du LV

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[root@Nami:/home/titi/Téléchargements]$ lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lvvmware VgData -wi-a- 90,00g
[root@Nami:/home/partage/vm/base/nu]$ df -k .
Sys. de fichiers 1K-blocs Utilisé Dispo. Uti% Monté sur
/dev/mapper/VgData-lvvmware
92891128 44056884 44116036 50% /home/partage
[root@Nami:/home] umount /home/partage
[root@Nami:/home]$ fsck /dev/mapper/VgData-lvvmware
fsck de util-linux-ng 2.17.2
e2fsck 1.41.10 (10-Feb-2009)
/dev/mapper/VgData-lvvmware a été monté 119 fois sans avoir été vérifié, vérification forcée.
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
/dev/mapper/VgData-lvvmware : 297/5898240 fichiers (27.3% non contigus), 11384399/23592960 blocs
[root@Nami:/home]# resize2fs /dev/mapper/VgData-lvvmware 48G
resize2fs 1.41.10 (10-Feb-2009)
En train de retailler le système de fichiers sur /dev/mapper/VgData-lvvmware à 12582912 (4k) blocs.

[root@Nami:/home]# lvresize -L 50G /dev/mapper/VgData-lvvmware
WARNING: Reducing active and open logical volume to 50,00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvvmware? [y/n]: y
Reducing logical volume lvvmware to 50,00 GiB
Logical volume lvvmware successfully resized
[root@Nami:/home]# resize2fs /dev/mapper/VgData-lvvmware
resize2fs 1.41.10 (10-Feb-2009)
En train de retailler le système de fichiers sur /dev/mapper/VgData-lvvmware à 13107200 (4k) blocs.
Le système de fichiers /dev/mapper/VgData-lvvmware a maintenant une taille de 13107200 blocs.
[root@Nami:/home]# mount /dev/mapper/VgData-lvvmware /home/partage/
[root@Nami:/home]# df -k /home/partage/
Sys. de fichiers 1K-blocs Utilisé Dispo. Uti% Monté sur
/dev/mapper/VgData-lvvmware
51606140 44052916 4932000 90% /home/partage
[root@Nami:/home]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lvvmware VgData -wi-ao 50,00g

partitionnement “thin”

Créer un pool

1
lvcreate -L 100M -T vg001/mythinpool

Créer une partition logique dans le pool

1
lvcreate -V1G -T vg001/mythinpool -n thinvolume

Astuces

Faire un controlM, , …

Pour taper ce genre de caractère il faut faire :
CTRL-V, puis CTRL-M

Chercher une chaine de caractère dans un dossier

1
find /chemin/rep -name '*' |xargs grep -l "string"

Taille d’un dossier et de son contenu

1
du -sk* /mondossier/*| sort -n| awk '{$0; somme+=1} END {print somme}'

Changer le mot de passe via un script

Avec la commande “passwd” et son option “–stdin”, au travers d’un “pipe” :

1
echo -e "new_password\nnew_password" | (passwd --stdin $USER)