jan
05

Archlinux: J’ai cassé mon kernel !

A la suite d’une fausse manip lors d’une mise à jour, mon PC ne démarre plus avec archlinux. Après expertise, il s’avère que l’installation du paquet de mise à jour du noyau n’est pas allée à son terme. Le noyau ( Vmlinuz ) est à jour mais le initrd lui est trop ancien.

Pour s’en sortir, rien de très compliqué:

Démarrer l’installable d’Archlinux sur un CD ou une clef USB.

Réglez votre clavier correctement avec la commande km, c’est plus facile ensuite ;-)

Montez votre partition root

mkdir /recup
mount /dev/sda1 /recup

Mettez à jour le mtab de la partition root

grep -v rootfs /proc/mounts > /recup/etc/mtab

Montez ensuite les filesystem spéciaux

mount -o bind /proc /recup/proc
mount -o bind /dev /recup/dev
mount -o bind /sys /recup/sys

Un petit chroot

chroot /recup
mount -a

Vous pouvez retrouver les derniers paquets installés dans /var/cache/pacman/pkg/ et en réinstaller un avec pacman -U XXX.pkg.tar.gz, pour moi se sera linux-3.1.7-1-x86_64.pkg.tar.xz

Bingo ! Un redémarrage plus tard, tout refonctionne. J’ai trouvé après coup une doc similaire ici http://wiki.archlinux.fr/Install_chroot

Lien Permanent pour cet article : http://www.equinoxefr.org/post/2012/01/05/archlinux-jai-casse-mon-kernel/

jan
04

Compilation de RPM et erreur « *** ERROR: No build ID note found »

Si vous avez des erreurs « *** ERROR: No build ID note found » lors de la construction de paquets RPM ( J’utilise ici une Centos 6.2 x64 ) ça vient du script find-debuginfo.sh

+ /usr/bin/install -d /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install
+ /bin/cp -R ./FILES ./Makefile.PL ./apps ./bin ./doc ./etc ./installer ./lib ./man ./resources ./vmware-install.pl ./yes /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/build/rpm/BUILD/vmware-vsphere-sdk-4.0.0.161974
*** ERROR: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/XML-LibXML-1.63/lib/auto/XML/LibXML/LibXML.so
erreur: Mauvais status de sortie pour /home/build/rpm/tmp/rpm-tmp.3M3FWw (%install)
    Mauvais status de sortie pour /home/build/rpm/tmp/rpm-tmp.3M3FWw (%install)
Exécution_de(%prep): /bin/sh -e /home/build/rpm/tmp/rpm-tmp.ilG9fL

Vous pouvez passer outre en ajoutant la directive

%undefine _missing_build_ids_terminate_build

au début de votre fichier SPEC. Voici un extrait de mon fichier:

%undefine _missing_build_ids_terminate_build
Name:           vmware-vsphere-sdk
Version:        4.0.0.161974
Release:        2%{?dist}
Summary:       Vmware SDK for Perl

L’erreur précédente devient qu’un simple Warning sans incidence.

+ /usr/bin/install -d /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install
+ /bin/cp -R ./FILES ./Makefile.PL ./apps ./bin ./doc ./etc ./installer ./lib ./man ./resources ./vmware-install.pl ./yes /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install
+ /usr/lib/rpm/find-debuginfo.sh /home/build/rpm/BUILD/vmware-vsphere-sdk-4.0.0.161974
*** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/XML-LibXML-1.63/lib/auto/XML/LibXML/LibXML.so
*** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/Compress-Raw-Zlib-2.005/lib/auto/Compress/Raw/Zlib/Zlib.so
*** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/Data-Dumper-2.121/lib/auto/Data/Dumper/Dumper.so
*** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/UUID-0.03/lib/auto/UUID/UUID.so
*** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/bin/libcrypto.so.0.9.8
*** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/bin/libssl.so.0.9.8
*** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/Class-MethodMaker-2.10/lib/auto/Class/MethodMaker/MethodMaker.so
*** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/XML-LibXML-Common-0.13/lib/auto/XML/LibXML/Common/Common.so

 

Lien Permanent pour cet article : http://www.equinoxefr.org/post/2012/01/04/compilation-de-rpm-et-erreur-error-no-build-id-note-found/

déc
27

Agent d’inventaire OCS-NG et clients légers

Depuis quelques années nous utilisons des clients légers HP pour lesquels nous avons développé une image sous linux (t5tux). Cette drôle d’idée présente de nombreux avantages:

  • On ne dépend de personne pour les mises à jour des client ( RDP, Citrix et autres… ).
  • Cette image a été faite quand HP ne proposait pas linux sur ses clients légers.
  • La même image fonctionne sur plusieurs générations de clients.
  • La config est téléchargée en TFTP.
  • L’image se met à jour toute seule avec PXE.
  • On apprend plein de choses…

Bref… l’histoire continue avec un nouveau problème: inventorier ces postes avec OCS-NG.

OCS dispose d’un agent d’inventaire pour linux mais celui-ci est assez lourd. De plus, il dispose d’un grand nombre de fonctionnalités inutiles dans notre cas. Nous souhaitons un minimum d’infos: numéro de série, model, ip, mac…

La communication entre l’agent et le serveur se fait avec un fichier XML compressé ou non avec ZLIB et transmis dans une reqûete de type POST. Pourquoi ne pas générer un XML minimaliste et l’envoyer nous même ?

Un simple script bash, épaulé de quelques utilitaires: dmidecode, busybox, wget fera l’affaire.

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
#! /bin/sh
 
model=`/usr/local/sbin/dmidecode -s system-product-name`
type=`/usr/local/sbin/dmidecode -s baseboard-product-name`
bytes=`free -k | grep Mem | awk '{ print $2 }'`
memory=$(($bytes/1024))
bytes=`fdisk -l | grep Disk | grep da | cut -f2 -d, | awk '{ print $1 }'`
disk=$(($bytes/1024/1024))
serial=`/usr/local/sbin/dmidecode -s system-serial-number`
hwaddr=`ifconfig eth0 | grep HWaddr | sed "s/.*HWaddr \(.*\)/\1/"`
ip=`ifconfig eth0 | grep "inet addr" | sed "s/.*addr:\(.*\) B.*/\1/"`
tag=`hostname | cut -f1 -d-`
hostname=`hostname`
 
echo "Model: $model"
echo "Ram: $memory"
echo "Disk: $disk"
echo "Serial: $serial"
echo "Mac: $hwaddr"
echo "ip: $ip"
echo "tag: $tag"
echo "hostname: $hostname"
 
cat << EOF > /tmp/inventory.xml
<?xml version="1.0" encoding="UTF-8"?>
<REQUEST>
  <CONTENT>
    <ACCOUNTINFO>
      <KEYNAME>TAG</KEYNAME>
      <KEYVALUE>$tag</KEYVALUE>
    </ACCOUNTINFO>
    <BIOS>
      <ASSETTAG>$serial</ASSETTAG>
      <BMANUFACTURER>Hewlett-Packard</BMANUFACTURER>
      <MMANUFACTURER>Hewlett-Packard</MMANUFACTURER>
      <MSN>$serial</MSN>
      <SMANUFACTURER>Hewlett-Packard</SMANUFACTURER>
      <SMODEL>$model - $type</SMODEL>
      <SSN>$serial</SSN>
    </BIOS>
    <HARDWARE>
      <CHECKSUM>131071</CHECKSUM>
      <MEMORY>$memory</MEMORY>
      <NAME>$hostname</NAME>
      <OSCOMMENTS>T5TUX</OSCOMMENTS>
      <OSNAME>t5tux</OSNAME>
      <VMSYSTEM>Physical</VMSYSTEM>
    </HARDWARE>
    <NETWORKS>
      <DESCRIPTION>eth0</DESCRIPTION>
      <IPADDRESS>$ip</IPADDRESS>
      <MACADDR>$hwaddr</MACADDR>
      <TYPE>Ethernet</TYPE>
    </NETWORKS>
    <STORAGES>
      <DESCRIPTION>FLASH</DESCRIPTION>
      <DISKSIZE>$disk</DISKSIZE>
      <TYPE>disk</TYPE>
    </STORAGES>
  </CONTENT>
  <DEVICEID>$hostname-9999-01-01-01-01-01</DEVICEID>
  <QUERY>INVENTORY</QUERY>
</REQUEST>
 
EOF
 
wget --post-file=/tmp/inventory.xml http://ocs-ng.xxxx.fr/ocsinventory

Quelques astuces:

  • wget avec un « –post-file monfichier » ou curl avec un « –binary-data @monfichier » permettent de poster des données.
  • le CHECKSUM à 131071 indique que toutes les données sont modifiées. J’ai trouvé cette info sur un forum mais pas dans la doc officielle.
  • Le client léger est en lecture seule du coup le DEVICEID ne peut être stocké. La date servant à sa génération est falsifiée: « 9999-01-01-01-01-01″

Très simple et pas forcément très élégant mais ça marche très bien !

Lien Permanent pour cet article : http://www.equinoxefr.org/post/2011/12/27/agent-dinventaire-ocs-ng-et-clients-legers/

nov
30

Archlinux, udev et les mots clefs.

Dans les dernières versions d’UDEV, le mot clef SYSFS n’est plus supporté. Si vous utilisez des règles udev personnalisées, vous aurez ce message d’erreur dans la console et les logs:

udevd[257]: unknown key 'SYSFS{idVendor}'
in /etc/udev/rules.d/51-garmin.rules

Allez dans /etc/udev/rules.d et lancez un petit coup de sed:

sed -i -e s/SYSFS/ATTR/g *.rules

 

Lien Permanent pour cet article : http://www.equinoxefr.org/post/2011/11/30/archlinux-udev-et-les-mots-clefs/

Articles plus anciens «

» Articles plus récents