En ce 08/08/2008, voici une nouvelle version de ma version préliminaire de munin-node pour Mac OS X.
Il y a maintenant six plugins:
cpu, df, load, processes, uptime, users
Bien entendu vous êtes libres d'écrire des plugins supplémentaires :)
Pour l'utiliser, téléchargez ce fichier et allez dans /usr/local et décompressez le fichier (créez /usr/local s'il n'existe pas déjà)
$ sudo mkdir /usr/local
$ cd /usr/local
$ sudo tar --preserve -zxvf munin-1.2.5-pbn-macosx-experimental-0.0.7.tar.gz
Un répertoire /usr/local/munin-1.2.5-pbn-experimental a été créé
Lisez ensuite la suite des instructions dans le fichier readme.txt
Affichage des articles dont le libellé est Tiger. Afficher tous les articles
Affichage des articles dont le libellé est Tiger. Afficher tous les articles
vendredi 8 août 2008
samedi 12 juillet 2008
version préliminaire 0.0.5 de munin node pour Mac OS X
Voici une nouvelle version de ma version préliminaire de munin-node pour Mac OS X.
Cette version corrige quelques petits bugs par rapport à la précedente. En particulier le fichier
/var/run/munin/munin-node.pid n'est plus créé par Net::Server
Il y a toujours cinq plugins:
cpu, load, processes, uptime, users
Bien entendu vous êtes libres d'écrire des plugins supplémentaires :)
Pour l'utiliser, téléchargez ce fichier et allez dans /usr/local et décompressez le fichier (créez /usr/local s'il n'existe pas déjà)
$ sudo mkdir /usr/local
$ cd /usr/local
$ sudo tar --preserve -zxvf munin-1.2.5-pbn-macosx-experimental-0.0.5.tar.gz
Un répertoire /usr/local/munin-1.2.5-pbn-experimental a été créé
Lisez ensuite la suite des instructions dans le fichier readme.txt
Cette version corrige quelques petits bugs par rapport à la précedente. En particulier le fichier
/var/run/munin/munin-node.pid n'est plus créé par Net::Server
Il y a toujours cinq plugins:
cpu, load, processes, uptime, users
Bien entendu vous êtes libres d'écrire des plugins supplémentaires :)
Pour l'utiliser, téléchargez ce fichier et allez dans /usr/local et décompressez le fichier (créez /usr/local s'il n'existe pas déjà)
$ sudo mkdir /usr/local
$ cd /usr/local
$ sudo tar --preserve -zxvf munin-1.2.5-pbn-macosx-experimental-0.0.5.tar.gz
Un répertoire /usr/local/munin-1.2.5-pbn-experimental a été créé
Lisez ensuite la suite des instructions dans le fichier readme.txt
mercredi 9 juillet 2008
version préliminaire 0.0.4 de munin-node pour Mac OS X
Voici une nouvelle version de ma version préliminaire de munin-node pour Mac OS X.
Cette version corrige quelques bugs par rapport à la précedente.
Il y a maintenant cinq plugins:
cpu, load, processes, uptime, users
Bien entendu vous êtes libres d'écrire des plugins supplémentaires :)
Pour l'utiliser, téléchargez ce fichier et allez dans /usr/local et décompressez le fichier (créez /usr/local s'il n'existe pas déjà)
$ sudo mkdir /usr/local
$ cd /usr/local
$ sudo tar --preserve -zxvf munin-1.2.5-pbn-macosx-experimental-0.0.4.tar.gz
Un répertoire /usr/local/munin-1.2.5-pbn-experimental a été créé
Lisez ensuite la suite des instructions dans le fichier readme.txt
Cette version corrige quelques bugs par rapport à la précedente.
Il y a maintenant cinq plugins:
cpu, load, processes, uptime, users
Bien entendu vous êtes libres d'écrire des plugins supplémentaires :)
Pour l'utiliser, téléchargez ce fichier et allez dans /usr/local et décompressez le fichier (créez /usr/local s'il n'existe pas déjà)
$ sudo mkdir /usr/local
$ cd /usr/local
$ sudo tar --preserve -zxvf munin-1.2.5-pbn-macosx-experimental-0.0.4.tar.gz
Un répertoire /usr/local/munin-1.2.5-pbn-experimental a été créé
Lisez ensuite la suite des instructions dans le fichier readme.txt
samedi 5 juillet 2008
version préliminaire 0.0.3 de munin-node pour Mac OS X
Voici (enfin) une version préliminaire de munin-node pour Mac OS X
Comment l'installer ?
D'abord je télécharge le fichier
munin-1.2.5-pbn-macosx-experimental-0.0.3.tar.gz

Attention vous allez travailler en ligne de commande avec sudo. Soyez attentif...
Je vais dans dans /usr/local et je décompresse le fichier (je crée /usr/local s'il n'existe pas déjà)
$ sudo mkdir /usr/local
$ cd /usr/local
$ sudo tar --preserve -zxvf munin-1.2.5-pbn-macosx-experimental-0.0.3.tar.gz
Un répertoire /usr/local/munin-1.2.5-pbn-experimental a été créé
Je regarde la liste des groupes existants et de leur gid:
$ dscl . list /Groups gid | sort -n -k 2 | less
Je crée le groupe munin. ATTENTION: Je veille à lui donner un gid qui n'est pas encore utilisé:
$ sudo dscl . -create /Groups/munin gid 144
$ sudo dscl . -create /Groups/munin passwd 42ab7u
Je copie dans /Library/LaunchDaemons le fichier qui se trouve dans le répertoire
/usr/local/munin-1.2.5-pbn-experimental/copy_the_file_in_this_directory_to_Library_LaunchDaemons:
en faisant:
$ sudo cp -P /usr/local/munin-1.2.5-pbn-experimental/copy_the_file_in_this_directory_to_Library_LaunchDaemons/localhost.munin-node.plist
/Library/LaunchDaemons
Je n'oublie d'aller modifier le fichier /usr/local/munin-1.2.5-pbn-experimental/etc/munin/munin-node.conf
en y indiquant l'adresse IP de mon serveur munin en mettant allow ^10\.20\.10\.1 dans mon cas
Ensuite je redémarre la machine (ou, pour les utilisateurs avancés, je lance manuellement le démon en faisant launchctl start local.munin-node.plist)
... et voilà, munin-node est installé et tourne !
Comment l'installer ?
D'abord je télécharge le fichier
munin-1.2.5-pbn-macosx-experimental-0.0.3.tar.gz

Attention vous allez travailler en ligne de commande avec sudo. Soyez attentif...
Je vais dans dans /usr/local et je décompresse le fichier (je crée /usr/local s'il n'existe pas déjà)
$ sudo mkdir /usr/local
$ cd /usr/local
$ sudo tar --preserve -zxvf munin-1.2.5-pbn-macosx-experimental-0.0.3.tar.gz
Un répertoire /usr/local/munin-1.2.5-pbn-experimental a été créé
Je regarde la liste des groupes existants et de leur gid:
$ dscl . list /Groups gid | sort -n -k 2 | less
Je crée le groupe munin. ATTENTION: Je veille à lui donner un gid qui n'est pas encore utilisé:
$ sudo dscl . -create /Groups/munin gid 144
$ sudo dscl . -create /Groups/munin passwd 42ab7u
Je copie dans /Library/LaunchDaemons le fichier qui se trouve dans le répertoire
/usr/local/munin-1.2.5-pbn-experimental/copy_the_file_in_this_directory_to_Library_LaunchDaemons:
en faisant:
$ sudo cp -P /usr/local/munin-1.2.5-pbn-experimental/copy_the_file_in_this_directory_to_Library_LaunchDaemons/localhost.munin-node.plist
/Library/LaunchDaemons
Je n'oublie d'aller modifier le fichier /usr/local/munin-1.2.5-pbn-experimental/etc/munin/munin-node.conf
en y indiquant l'adresse IP de mon serveur munin en mettant allow ^10\.20\.10\.1 dans mon cas
Ensuite je redémarre la machine (ou, pour les utilisateurs avancés, je lance manuellement le démon en faisant launchctl start local.munin-node.plist)
... et voilà, munin-node est installé et tourne !
lundi 14 avril 2008
Créer un groupe sous Mac OS X
Après avoir vu dans un post précédent comment créer un utilisateur sous Mac OS X, voyons aujourd'hui comment créer un groupe.
Ceci ne fonctionne qu'à partir de Mac OS X Tiger, car les versions antérieures utilisaient NetInfo et pas dscl.
On utilise à nouveau la commande dscl:
sudo dscl . -create /Groups/mongroupe gid xxxx
sudo dscl . -create /Groups/mongroupe passwd 42ez7a
A la place de xxxx indiquez un gid valide.
(où xxxx est le GID, faites bien attention d'en choisir un qui n'existe pas déjà, pour voir la liste des groupes existants et leurs gid dans l'ordre croissant: dscl . list /Groups gid | sort -n -k 2)
Pour ajouter l'utilisateur toto au groupe mongroupe:
sudo dscl . -merge /Groups/mongroupe users toto
Je l'ai testé sur Mac OS X Tiger et Mac OS X Léopard
Ceci ne fonctionne qu'à partir de Mac OS X Tiger, car les versions antérieures utilisaient NetInfo et pas dscl.
On utilise à nouveau la commande dscl:
sudo dscl . -create /Groups/mongroupe gid xxxx
sudo dscl . -create /Groups/mongroupe passwd 42ez7a
A la place de xxxx indiquez un gid valide.
(où xxxx est le GID, faites bien attention d'en choisir un qui n'existe pas déjà, pour voir la liste des groupes existants et leurs gid dans l'ordre croissant: dscl . list /Groups gid | sort -n -k 2)
Pour ajouter l'utilisateur toto au groupe mongroupe:
sudo dscl . -merge /Groups/mongroupe users toto
Je l'ai testé sur Mac OS X Tiger et Mac OS X Léopard
samedi 12 avril 2008
Créer un utilisateur sous Mac OS X
Voici comment créer un utilisateur en ligne de commande sous Mac OS X.
Ceci ne fonctionne qu'à partir de Mac OS X Tiger, car les versions antérieures utilisaient NetInfo et pas dscl.
Dans notre exemple l'utilisateur est toto.
On utilise la commande dscl:
sudo dscl . -create /Users/toto
sudo dscl . -create /Users/toto UserShell /bin/bash
sudo dscl . -create /Users/toto RealName "Toto Machin"
sudo dscl . -create /Users/toto UniqueID xxx
sudo dscl . -create /Users/toto PrimaryGroupID 20
sudo dscl . -create /Users/toto NFSHomeDirectory /Users/toto
sudo mkdir /Users/toto
sudo chgrp staff /Users/toto
sudo chown toto /Users/toto
(où xxx est le UID, faites bien attention d'en choisir un qui n'existe pas déjà, pour cela faites sudo dscl . list /users UniqueID pour voir ceux qui sont déjà utilisés. Dans mon cas l'UniqueID est 503. Le PrimaryGroupID 20 correspond à staff, en tous cas sous Tiger et Léopard)
Je l'ai testé sur Mac OS X Tiger et Mac OS X Léopard
Ceci ne fonctionne qu'à partir de Mac OS X Tiger, car les versions antérieures utilisaient NetInfo et pas dscl.
Dans notre exemple l'utilisateur est toto.
On utilise la commande dscl:
sudo dscl . -create /Users/toto
sudo dscl . -create /Users/toto UserShell /bin/bash
sudo dscl . -create /Users/toto RealName "Toto Machin"
sudo dscl . -create /Users/toto UniqueID xxx
sudo dscl . -create /Users/toto PrimaryGroupID 20
sudo dscl . -create /Users/toto NFSHomeDirectory /Users/toto
sudo mkdir /Users/toto
sudo chgrp staff /Users/toto
sudo chown toto /Users/toto
(où xxx est le UID, faites bien attention d'en choisir un qui n'existe pas déjà, pour cela faites sudo dscl . list /users UniqueID pour voir ceux qui sont déjà utilisés. Dans mon cas l'UniqueID est 503. Le PrimaryGroupID 20 correspond à staff, en tous cas sous Tiger et Léopard)
Je l'ai testé sur Mac OS X Tiger et Mac OS X Léopard
vendredi 15 février 2008
Faire apparaître des imprimantes CUPS dans le Default Printer Browser de Mac OS X Tiger
Dans un post précédent je vous parlais des "subtilités" qui peuvent survenir lorsque vous désirez installer une imprimante CUPS dans Mac OS X. Il faut en effet indiquer non pas "Claire" comme nom de file d'attente mais bien "/printers/Claire"
Suite à mon interaction avec developer.apple.com, j'ai appris qu'il y avait une solution beaucoup plus intuitive et élégante à ce problème.
Mon serveur CUPS est une machine Debian GNU/Linux 4.0 appelée cobra. Elle partage l'imprimante CUPS appellée Canon GP300.
Notez que tout ce qui suit n'est valable qu'avec Mac OS X 10.4 "Tiger" comme client.
Je vais dans Préférences Systèmes > Imprimantes et Fax et je clique sur le +.

J'arrive dans le Default Printer Browser et je vois quelque chose comme ceci:

Ce que je vois là est la liste des imprimantes disponible sur le réseau. Je vois des imprimantes AppleTalk et Bonjour... mais je ne vois pas l'imprimante qui m'intéresse: Canon GP300 sur le serveur cobra.
Voyons la partie "Browsing" du fichier /etc/cups/cupsd.conf sur cobra. Comme j'ai laissé la configuration par défaut du "Browsing", j'ai ceci:
Le "Browsing" est activé. Donc le serveur CUPS de cobra "publie" les informations sur les imprimantes. Cependant ce n'est pas suffisant pour que Mac OS X "voie" mon imprimante Canon GP300. Je dois indiquer dans le fichier /etc/cups/cupsd.conf sur cobra:
Où 10.20.255.255 est l'adresse de broadcast de votre connexion Ethernet.
Si vous ne connaissez pas l'adresse de broadcast de votre machine, tapez /sbin/ifconfig eth0.
N'oubliez pas de redémarrer le démon CUPS. Sous Debian GNU/Linux c'est la commande invoke-rc.d cupsys restart.
Je vois maintenant ceci:

Ca y est mon imprimante ImprimanteCanon est là ! Il ne me reste plus qu'à cliquer dessus et à l'installer:
Suite à mon interaction avec developer.apple.com, j'ai appris qu'il y avait une solution beaucoup plus intuitive et élégante à ce problème.
Mon serveur CUPS est une machine Debian GNU/Linux 4.0 appelée cobra. Elle partage l'imprimante CUPS appellée Canon GP300.
Notez que tout ce qui suit n'est valable qu'avec Mac OS X 10.4 "Tiger" comme client.
Je vais dans Préférences Systèmes > Imprimantes et Fax et je clique sur le +.

J'arrive dans le Default Printer Browser et je vois quelque chose comme ceci:

Ce que je vois là est la liste des imprimantes disponible sur le réseau. Je vois des imprimantes AppleTalk et Bonjour... mais je ne vois pas l'imprimante qui m'intéresse: Canon GP300 sur le serveur cobra.
Voyons la partie "Browsing" du fichier /etc/cups/cupsd.conf sur cobra. Comme j'ai laissé la configuration par défaut du "Browsing", j'ai ceci:
# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
Le "Browsing" est activé. Donc le serveur CUPS de cobra "publie" les informations sur les imprimantes. Cependant ce n'est pas suffisant pour que Mac OS X "voie" mon imprimante Canon GP300. Je dois indiquer dans le fichier /etc/cups/cupsd.conf sur cobra:
Browsing On
BrowseAddress 10.20.255.255
BrowseAllow All
BrowseOrder allow,deny
Où 10.20.255.255 est l'adresse de broadcast de votre connexion Ethernet.
Si vous ne connaissez pas l'adresse de broadcast de votre machine, tapez /sbin/ifconfig eth0.
N'oubliez pas de redémarrer le démon CUPS. Sous Debian GNU/Linux c'est la commande invoke-rc.d cupsys restart.
Je vois maintenant ceci:

Ca y est mon imprimante ImprimanteCanon est là ! Il ne me reste plus qu'à cliquer dessus et à l'installer:
samedi 2 février 2008
Une commande Mac OS X peu connue: machine
Il y a quelques jours je vous parlais de la commande arch de Mac OS X.
Voyons aujourd'hui une autre commande peu connue, la commande machine.
Cette commande est un peu similaire à la commande arch dont je vous parlais l'autre fois. En fait la commande machine affiche le type de machine sur laquelle Mac OS X tourne.
Attention, l'architecture et le type de machine, ce n'est pas la même chose !
L'architecture, donnée par la commande arch, est ppc, ppc64, i386 ou x86_64.
Le type de machine, donnée par la commande machine, indique avec précision le type de processeur.
Exemple avec Mac OS X Tiger sur un Power Macintosh G3 Blue and white:
Voyons les pages de manuel de cette commande machine:
Mac OS X Tiger sur PowerPC:
Voyons aujourd'hui une autre commande peu connue, la commande machine.
Cette commande est un peu similaire à la commande arch dont je vous parlais l'autre fois. En fait la commande machine affiche le type de machine sur laquelle Mac OS X tourne.
Attention, l'architecture et le type de machine, ce n'est pas la même chose !
L'architecture, donnée par la commande arch, est ppc, ppc64, i386 ou x86_64.
Le type de machine, donnée par la commande machine, indique avec précision le type de processeur.
Exemple avec Mac OS X Tiger sur un Power Macintosh G3 Blue and white:
[pierre@blueandwhite] /Users/pierre>machineExemple avec Mac OS X Léopard sur un iMac Intel 20-inch:
ppc750
[pierre@albert] /Users/pierre>machine
i486
Voyons les pages de manuel de cette commande machine:
Mac OS X Tiger sur PowerPC:
MACHINE(1) BSD General Commands Manual MACHINE(1)Mac OS X Léopard sur Intel:
NAME
machine -- print machine type
SYNOPSIS
machine
DESCRIPTION
The machine command displays the machine type.
SEE ALSO
make(1)
HISTORY
The machine command is currently under development.
BSD July 26, 1991 BSD
MACHINE(1) BSD General Commands Manual MACHINE(1)... on constatera au passage que cette commande est toujours "currently under development", étonnant :)
NAME
machine -- print machine type
SYNOPSIS
machine
DESCRIPTION
The machine command displays the machine type.
SEE ALSO
arch(1), make(1)
HISTORY
The machine command is currently under development.
BSD July 26, 1991 BSD
mercredi 30 janvier 2008
Une commande Unix / Linux / Mac OS X peu connue: arch
Voyons aujourd'hui une commande Mac OS X peu connue: il s'agit de la commande arch.
Cette commande renvoie l'architecture de la machine.
Le résultat peut être:
Voyons les pages de manuel de cette commande arch:
Mac OS X Tiger sur PowerPC:
Mac OS X Leopard sur Intel:
Il est à noter que sous Debian GNU/Linux, la commande arch existe dans Debian GNU/Linux 4.0 "etch", mais a disparu de Debian GNU/Linux "lenny", car elle est considérée "obsolète". Si vous en avez malgré tout besoin, utilisez la commande uname -m. Il vous suffit de créer un petit shell script /bin/arch du genre:
Certains distributions Linux ont la commande arch, d'autres ne l'ont pas.
Cette commande renvoie l'architecture de la machine.
Le résultat peut être:
- ppc pour un Apple Macintosh basé sur un processeur PowerPC 32 bits (G3, G4, G5)
- ppc64 pour un Apple Macintosh basé sur un processeur PowerPC 64 bits (G5)
- i386 pour un Apple Macintosh basé sur un processeur x86 (Intel) 32 bits
- x86_64 pour un Apple Macintosh basé sur un processeur x86_64 (Intel) 64 bits
- ??? (à vérifier - probablement arm) pour un iPhone, qui fait tourner Mac OS X sur un processeur arm.
Voyons les pages de manuel de cette commande arch:
Mac OS X Tiger sur PowerPC:
ARCH(1) BSD General Commands Manual ARCH(1)
NAME
arch -- print architecture type
SYNOPSIS
arch
DESCRIPTION
The arch command displays the machine's architecture type.
SEE ALSO
machine(1)
Mac OS August 20, 1997 Mac OS
Mac OS X Leopard sur Intel:
ARCH(1) BSD General Commands Manual ARCH(1)
NAME
arch -- print architecture type or run selected architecture of a univer-
sal binary
SYNOPSIS
arch
arch [-h] [[-arch_name | -arch arch_name]...] prog [args ...]
DESCRIPTION
The arch command with no arguments, displays the machine's architecture
type.
The other use of the arch command it to run a selected architecture of a
universal binary. A universal binary contains code that can run on dif-
ferent architectures. By default, the operating system will select the
architecture that most closely matches the processor type. This means
that an intel architecture is selected on intel processors and a powerpc
architecture is selected on powerpc processors. A 64-bit architecuture
is preferred over a 32-bit architecture on a 64-bit processor, while only
32-bit architectures can run on a 32-bit processor.
When the most natural architecture is unavailable, the operating system
will try to pick another architecture. On 64-bit processors, a 32-bit
architecture is tried. If this is also unavailable, the operating system
on an intel processor will try running a 32-bit powerpc architecture.
Otherwise, no architecture is run, and an error results.
The arch command can be use to alter the operating system's normal selec-
tion order. The most common use is to select the 32-bit architecture on
a 64-bit processor, even if a 64-bit architecture is available.
The -h option prints a usage message and exits.
The arch_name argument must be one of the currently supported architec-
tures:
i386 32-bit intel
ppc 32-bit powerpc
ppc64 64-bit powerpc
x86_64 64-bit intel
Either prefix the architecture with a hyphen, or (for compatibility with
other commands), use -arch followed by the architecture.
If more than one architecture is specified, the operating system will try
each one in order, skipping an architecture that is not supported on the
current processor, or is unavailable in the universal binary.
The prog argument is the command to run, followed by any arguments to
pass to the command. It can be a full or partial path, while a lone name
will be lookup in the user's command search path.
If no architectures are specified on the command line, the arch command
takes the basename of the prog argument and searches for the first prop-
erty list file with that basename and the .plist suffix, in the
archSettings sub-directory in each of the standard domains, in the fol-
lowing order:
~/Library/archSettings User settings
/Library/archSettings Local settings
/Network/Library/archSettings Network settings
Either prefix the architecture with a hyphen, or (for compatibility with
other commands), use -arch followed by the architecture.
If more than one architecture is specified, the operating system will try
each one in order, skipping an architecture that is not supported on the
current processor, or is unavailable in the universal binary.
The prog argument is the command to run, followed by any arguments to
pass to the command. It can be a full or partial path, while a lone name
will be lookup in the user's command search path.
If no architectures are specified on the command line, the arch command
takes the basename of the prog argument and searches for the first prop-
erty list file with that basename and the .plist suffix, in the
archSettings sub-directory in each of the standard domains, in the fol-
lowing order:
~/Library/archSettings User settings
/Library/archSettings Local settings
/Network/Library/archSettings Network settings
Either prefix the architecture with a hyphen, or (for compatibility with
other commands), use -arch followed by the architecture.
If more than one architecture is specified, the operating system will try
each one in order, skipping an architecture that is not supported on the
current processor, or is unavailable in the universal binary.
The prog argument is the command to run, followed by any arguments to
pass to the command. It can be a full or partial path, while a lone name
will be lookup in the user's command search path.
If no architectures are specified on the command line, the arch command
takes the basename of the prog argument and searches for the first prop-
erty list file with that basename and the .plist suffix, in the
archSettings sub-directory in each of the standard domains, in the fol-
lowing order:
~/Library/archSettings User settings
/Library/archSettings Local settings
/Network/Library/archSettings Network settings
/System/Library/archSettings System settings
This property list contains the architecture order preferences, as well
as the full path to the real executable. For examples of the property
list format, look at the files in /System/Library/archSettings.
Example
On an intel processor:
% perl -MConfig -e 'printf "%s\n", $Config{byteorder}'
1234
shows the intel little endian byte order, while:
% arch -ppc perl -MConfig -e 'printf "%s\n", $Config{byteorder}'
4321
runs the powerpc architecture, and displays big endian byte order.
Making links to the arch command
When a link is made to arch command with a different name, that name is
used to find the corresponding property list file. Thus, other commands
can be wrapped so that they have custom architecture selection order.
Because of some internal logic in the code, hard links to the arch com-
mand may not work quite right. It is best to avoid using hard links, and
only use symbolic links to the arch command.
Environment
The environment variable ARCHPREFERENCE can be used to provide architec-
ture order preferences. It is checked before looking for the correspond-
ing property list file.
The value of the environment variable ARCHPREFERENCE is composed of one
or more specifiers, separated by semicolons. A specifier is made up of
one, two or three fields, separated by colons. Architectures specified
in order, are separated by commas and make up the last (mandatory) field.
The first field, if specified, is a name of a program, which selects this
specifier if that name matches the program name in question. If the name
field is empty or there is no name field, the specifier matches any pro-
gram name. Thus, ordering of specifiers is important, and the one with
no name should be last.
When the arch command is called directly, the prog name provides the path
information to the executable (possibly via the command search path).
When a name is specified in a ARCHPREFERENCE specifier, the path informa-
tion can alternately be specified as a second field following the name.
When the arch command is called indirectly via a link, this path informa-
tion must be specified. If not specified as a second field in a speci-
fier, the executable path will be looked up in the corresponding property
list file.
Example ARCHPREFERENCE Values
ppc,i386,ppc64,x86_64
A specifier that matches any name.
foo:ppc,i386,ppc64,x86_64
A specifier that matches the program named foo (the full executable
path is in the foo.plist file).
foo:/op/bin/boo:ppc,i386,ppc64,x86_64
A specifier with all fields specified.
baz:ppc,i386;i386,ppc
A specifier for baz and a second specifier that would match any
other name.
BUGS
BUGS
Running the arch command on an interpreter script may not work if the
interpreter is a link to the arch command, especially if a 64-bit archi-
tecture is specified (since the arch command is 2-way universal, 32-bit
only).
SEE ALSO
machine(1)
Mac OS X November 12, 2006 Mac OS X
Il est à noter que sous Debian GNU/Linux, la commande arch existe dans Debian GNU/Linux 4.0 "etch", mais a disparu de Debian GNU/Linux "lenny", car elle est considérée "obsolète". Si vous en avez malgré tout besoin, utilisez la commande uname -m. Il vous suffit de créer un petit shell script /bin/arch du genre:
#!/bin/sh
#
# Remplace la commande arch
# Renvoie l'architecture de la machine
#
# Pierre Bauduin
# Le 24 décembre 2007
#
/bin/uname -m
Certains distributions Linux ont la commande arch, d'autres ne l'ont pas.
- Distributions Linux qui ont la commande arch: Debian GNU/Linux 4.0 "etch", Gentoo, Slackware, Arch Linux, OpenSUSE
- Distributions Linux qui n'ont pas la commande arch: Debian GNU/Linux "lenny", Ubuntu
- Autres systèmes qui ont la commande arch: Mac OS X
- Autres systèmes qui n'ont pas la commande arch: FreeBSD, PC-BSD
mercredi 9 janvier 2008
Comparons le header Mach-O sous powerpc et x86
Le format d'exécutable sous Mac OS X est le format Mach-O.
La commande otool -h permet d'analyser le header d'un fichier au format Mach-O.
Je lis à la page 12 de "Mac OS X ABI Mach-O File Format Reference" que le header du format Mach-O a toujours la structure suivante:
Voyons le résultat de otool -h sur un fichier Mach-O bien connu (/bin/ls), mais sur deux architectures différentes:
Mac OS X Leopard sur Intel (x86):
Mac OS X Tiger sur PowerPC (powerpc):
Voyez aussi la page man de la commande arch
En fait, le format Mach-O est directement hérité de NextStep, qui au long de son existence a été disponible pour plusieurs architectures: PowerPC, x86, PA-RISC et SPARC.
La commande otool -h permet d'analyser le header d'un fichier au format Mach-O.
Je lis à la page 12 de "Mac OS X ABI Mach-O File Format Reference" que le header du format Mach-O a toujours la structure suivante:
struct mach_header
{
uint32_t magic;
cpu_type_t cputype;
cpu_subtype_t cpusubtype;
uint32_t filetype;
uint32_t ncmds;
uint32_t sizeofcmds;
uint32_t flags;
};
Voyons le résultat de otool -h sur un fichier Mach-O bien connu (/bin/ls), mais sur deux architectures différentes:
Mac OS X Leopard sur Intel (x86):
[pierre@albert] /Users/pierre>otool -h /bin/ls
/bin/ls:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedface 7 3 0x00 2 14 1304 0x00000085
Mac OS X Tiger sur PowerPC (powerpc):
[pierre@blueandwhite] /Users/pierre>otool -h /bin/lsRegardez attentivement cputype: c'est lui qui nous indique sur quelle architecture nous sommes.
/bin/ls:
Mach header
magic cputype cpusubtype filetype ncmds sizeofcmds flags
0xfeedface 18 0 2 11 1608 0x00000085
Voyez aussi la page man de la commande arch
En fait, le format Mach-O est directement hérité de NextStep, qui au long de son existence a été disponible pour plusieurs architectures: PowerPC, x86, PA-RISC et SPARC.
Libellés :
Apple,
fat binary,
Leopard,
Mac OS X,
Mach-O,
magic number,
NextStep,
PowerPC,
Tiger,
Universal Binary,
x86
mardi 8 janvier 2008
"Magic number" dans les quatre premiers octets des fichiers au format Mach-O
Le format d'exécutable sous Mac OS X est le format Mach-O.
Ce format a un certain nombre d'avantages, notamment la possibilité d'avoir des "fat binaries", appelées "Universal Binaries" par Apple, d'ailleurs je vous en avais déjà parlé ici et ici.
La commande otool -h permet d'analyser le header d'un fichier au format Mach-O. Voyons le résultat sur un fichier Mach-O bien connu (/bin/ls), et un autre fichier Mach-O que j'ai compilé moi-même:
En fait les quatre premiers octets de tout fichier au format Mach-O sont toujours 0xfeedface ou 0xcefaedfe si vous lisez un fichier petit-boutiste (little-endian) sur une machine grand-boutiste (big-endian), ou l'inverse...
Vous pouvez aussi consulter cette documentation officielle Apple sur la structure des exécutables Mach-O.
Ce format a un certain nombre d'avantages, notamment la possibilité d'avoir des "fat binaries", appelées "Universal Binaries" par Apple, d'ailleurs je vous en avais déjà parlé ici et ici.
La commande otool -h permet d'analyser le header d'un fichier au format Mach-O. Voyons le résultat sur un fichier Mach-O bien connu (/bin/ls), et un autre fichier Mach-O que j'ai compilé moi-même:
[pierre@albert] /Users/pierre>otool -h /bin/lsIl est amusant de constater que le "magic number" dans le header est 0xfeedface.
/bin/ls:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedface 7 3 0x00 2 14 1304 0x00000085
[pierre@albert] /Users/pierre>otool -h Documents/source/hello
Documents/source/hello:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedface 7 3 0x00 2 11 936 0x00000085
En fait les quatre premiers octets de tout fichier au format Mach-O sont toujours 0xfeedface ou 0xcefaedfe si vous lisez un fichier petit-boutiste (little-endian) sur une machine grand-boutiste (big-endian), ou l'inverse...
Vous pouvez aussi consulter cette documentation officielle Apple sur la structure des exécutables Mach-O.
Libellés :
Apple,
fat binary,
Leopard,
Mac OS X,
Mach-O,
magic number,
Tiger,
Universal Binary
vendredi 4 janvier 2008
Imprimer à partir de Mac OS X sur une imprimante IPP:problème résolu !
Dans un post précédent je vous expliquais que je n'arrivais pas à imprimer sur une imprimante IPP à partir de Mac OS X Léopard. Après m'être gratté la tête un certain temps, j'ai fini par trouver la solution.
Lorsque j'ajoute une imprimante dans Mac OS X dans Préférences Systèmes > Imprimantes et Fax et que je choisis la catégorie IP, j'ai l'écran suivant:

Comme souvent avec Mac OS X, (je ne dis pas cela pour "passer la pommade" :) ), l'écran de configuration est clair et relativement intuitif. Dans "Adresse" j'entre donc l'adresse et le numéro de port, c'est à dire 10.20.10.1:631, et dans "File d'attente" j'indique le nom de la file c'est à dire Claire. J'obtiens donc l'écran suivant:

... hélas, trois fois hélas, avec la configuration ci-dessus je n'imprimerai jamais rien sur mon imprimante Claire. Pourquoi ?
Eh bien, en fait, j'ai fini par découvrir qu'il faut dire à Mac OS X (c'est à dire au serveur CUPS de Mac OS X) d'imprimer non pas à l'adresse IPP suivante:
ipp://10.20.10.1:631/Claire
... mais bien à l'adresse IPP suivante:
ipp://10.20.10.1:631/printers/Claire
Or avec la configuration ci-dessus, je dis à Mac OS X d'imprimer à l'adresse IPP ipp://10.20.10.1:631/Claire. La solution est donc de dire à Mac OS X d'imprimer à l'adresse IPP ipp://10.20.10.1:631/printers/Claire. Pour cela il faut remplir la fenêtre de configuration comme ci-dessous:

Ce qui correspond à la configuration suivant dans CUPS sur ma machine Mac OS X:

Et voilà, problème résolu !
Lorsque j'ajoute une imprimante dans Mac OS X dans Préférences Systèmes > Imprimantes et Fax et que je choisis la catégorie IP, j'ai l'écran suivant:

Comme souvent avec Mac OS X, (je ne dis pas cela pour "passer la pommade" :) ), l'écran de configuration est clair et relativement intuitif. Dans "Adresse" j'entre donc l'adresse et le numéro de port, c'est à dire 10.20.10.1:631, et dans "File d'attente" j'indique le nom de la file c'est à dire Claire. J'obtiens donc l'écran suivant:

... hélas, trois fois hélas, avec la configuration ci-dessus je n'imprimerai jamais rien sur mon imprimante Claire. Pourquoi ?
Eh bien, en fait, j'ai fini par découvrir qu'il faut dire à Mac OS X (c'est à dire au serveur CUPS de Mac OS X) d'imprimer non pas à l'adresse IPP suivante:
ipp://10.20.10.1:631/Claire
... mais bien à l'adresse IPP suivante:
ipp://10.20.10.1:631/printers/Claire
Or avec la configuration ci-dessus, je dis à Mac OS X d'imprimer à l'adresse IPP ipp://10.20.10.1:631/Claire. La solution est donc de dire à Mac OS X d'imprimer à l'adresse IPP ipp://10.20.10.1:631/printers/Claire. Pour cela il faut remplir la fenêtre de configuration comme ci-dessous:

Ce qui correspond à la configuration suivant dans CUPS sur ma machine Mac OS X:

Et voilà, problème résolu !
jeudi 3 janvier 2008
Mac OS X : Comment désactiver complètement Spotlight
Si comme moi vous utilisez Mac OS X Tiger sur un iBook G3 à 800 MHz avec 640 MB de RAM, vous pouvez améliorer les performances de votre machine en désactivant Spotlight. Voici comment faire:
Attention, tout ceci est prévu pour Mac OS X Tiger, et je ne saurais garantir qu'il fonctionne avec d'autres versions...

Attention vous allez travailler en ligne de commande avec l'utilisateur root. Soyez attentif...
Tout d'abord devenez root en tapant sudo su - puis votre mot de passe.
Vous pouvez maintenant redémarrer votre machine
Après le redémarrage, faites à nouveau:
Ensuite:
Ce petit truc provient en fait d'une page sur Mac OS X Hints.
Attention, tout ceci est prévu pour Mac OS X Tiger, et je ne saurais garantir qu'il fonctionne avec d'autres versions...

Attention vous allez travailler en ligne de commande avec l'utilisateur root. Soyez attentif...
Tout d'abord devenez root en tapant sudo su - puis votre mot de passe.
$ sudo suEnsuite effectuez les commandes suivantes:
# chmod 0000 /Library/Spotlight
# chmod 0000 /System/Library/Spotlight
# chmod 0000 /System/Library/CoreServices/Search.bundle
# chmod 0000 /System/Library/PreferencePanes/Spotlight.prefPane
# chmod 0000 /System/Library/Services/Spotlight.service
# chmod 0000 /System/Library/Contextual Menu Items/SpotlightCM.plugin
# chmod 0000 /System/Library/StartupItems/Metadata
# chmod 0000 /usr/bin/mdimport
# chmod 0000 /usr/bin/mdcheckschema
# chmod 0000 /usr/bin/mdfind
# chmod 0000 /usr/bin/mdls
# chmod 0000 /usr/bin/mdutil
# chmod 0000 /usr/bin/mdVous pouvez maintenant redémarrer votre machine
Après le redémarrage, faites à nouveau:
$ sudo su et tapez votre mot de passeEnsuite:
# rm -r /.Spotlight-V100
# rm -r /private/var/tmp/mdsCe petit truc provient en fait d'une page sur Mac OS X Hints.
mardi 1 janvier 2008
Installer Big Brother client sur Mac OS X
Ah oui, tout d'abord, bonne année !
Aujourd'hui je vais vous expliquer comment installer Big Brother client sur une machine Mac OS X. Big Brother est un outil de monitoring freeware (mais qui existe aussi en version commerciale). Je l'utilise ou je l'ai utilisé sous Debian GNU/Linux, Red Hat, PC-BSD, FreeBSD, Solaris, AIX et Windows. Voyons comment l'installer sous Mac OS X:
Création d'un utilisateur bb
Tout d'abord je crée un utilisateur dont le login sera (par tradition) bb:
Dans "Préférences Systèmes" allez dans "Comptes"
(Pour créer un utilisateur vous devez avoir un compte d'administrateur)
Si le cadenas est fermé, je clique dessus, et je tape mon nom et mot de passe pour le débloquer.
Cliquez sur le "+"
Nom: Big Brother
Nom abrégé: bb
Pour le mot de passe, je tape quelque chose de difficile à trouver, par exemple 5dAkr42, de toutes façons je n'aurai jamais besoin de ce mot de passe (nous verrons plus loin pourquoi)
Je ne coche pas "Autoriser à administrer cet ordinateur"
Je clique "Créer le compte"
Rapatriement de Big Brother
Je vais chercher Big Brother à l'adresse suivante:
http://bb4.org/dnld/bb-1.9i.tar.gz
Je place ce fichier dans le répertoire /Users/bb
Je deviens l'utilisateur Big Brother. Vous me direz: "Oui mais, je ne connais pas son mot de passe !". Pas besoin, avec mon compte d'administateur il me suffit de faire:
[pierre@ibook] /Users/pierre>sudo su - bb
Password:
[bb@ibook] /Users/bb>
Décompression du fichier de Big Brother
En tant que l'utilisatateur bb:
Je décompresse le .tar.gz, j'obtiens trois fichiers:
[bb@ibook] /Users/bb>tar -zxvf bb-1.9i.tar.gz
BB.README.FIRST
BBSVR-bb1.9i-btf.tar
BBCLT-bbc1.9i-btf.tar
Il y a à ce moment trois fichiers que je peux effacer:
[bb@ibook] /Users/bb>rm bb-1.9i.tar.gz
[bb@ibook] /Users/bb>rm BBSVR-bb1.9i-btf.tar
[bb@ibook] /Users/bb>rm BB.README.FIRST
(Le premier je viens de le décompresser, le deuxième c'est la partie serveur dont je n'ai pas du tout besoin sur Mac OS X, et le troisième, passons...)
Il me reste le fichier BBCLT-bbc1.9i-btf.tar. Je le décompose:
[bb@ibook] /Users/bb>time tar -xvf BBCLT-bbc1.9i-btf.tar
bbc1.9i-btf/LICENSE
bbc1.9i-btf/README
bbc1.9i-btf/README.INSTALL
bbc1.9i-btf/README.CHANGES
bbc1.9i-btf/README.SECURITY
bbc1.9i-btf/README.SUPPORT
bbc1.9i-btf/runbb.sh.DIST
bbc1.9i-btf/bin/bb-combo.sh
bbc1.9i-btf/bin/bb-cpu.sh
bbc1.9i-btf/bin/bb-disk.sh
bbc1.9i-btf/bin/bb-local.sh
bbc1.9i-btf/bin/bb-msgs.sh
bbc1.9i-btf/bin/bb-ping.sh
bbc1.9i-btf/bin/bb-procs.sh
bbc1.9i-btf/etc/bb-bbexttab.DIST
bbc1.9i-btf/etc/bb-cputab.DIST
bbc1.9i-btf/etc/bb-dftab.DIST
bbc1.9i-btf/etc/bb-msgstab.DIST
bbc1.9i-btf/etc/bb-proctab.DIST
bbc1.9i-btf/etc/bbchkcfg.sh
bbc1.9i-btf/etc/bbchkcmds.sh
bbc1.9i-btf/etc/bbchkhosts.sh
bbc1.9i-btf/etc/bbdef.sh.DIST
bbc1.9i-btf/etc/bbdef-client.sh
bbc1.9i-btf/etc/bbinc.sh
bbc1.9i-btf/etc/bbinc-client.sh
bbc1.9i-btf/etc/bbsys.sh
bbc1.9i-btf/etc/bbwarnsetup.cfg
bbc1.9i-btf/etc/bb-hosts
bbc1.9i-btf/ext/ext-proto
bbc1.9i-btf/install/README
bbc1.9i-btf/install/README.SMS
bbc1.9i-btf/install/bbconfig
bbc1.9i-btf/install/bbmachine
bbc1.9i-btf/install/bbsys.aix
bbc1.9i-btf/install/bbsys.bsdi
bbc1.9i-btf/install/bbsys.bsdi4
bbc1.9i-btf/install/bbsys.caldera
bbc1.9i-btf/install/bbsys.darwin
bbc1.9i-btf/install/bbsys.debian
bbc1.9i-btf/install/bbsys.dgux
bbc1.9i-btf/install/bbsys.dynix
bbc1.9i-btf/install/bbsys.fedora
bbc1.9i-btf/install/bbsys.freebsd
bbc1.9i-btf/install/bbsys.hpux
bbc1.9i-btf/install/bbsys.hpux9
bbc1.9i-btf/install/bbsys.irix
bbc1.9i-btf/install/bbsys.linux
bbc1.9i-btf/install/bbsys.mandrake
bbc1.9i-btf/install/bbsys.netbsd
bbc1.9i-btf/install/bbsys.openbsd
bbc1.9i-btf/install/bbsys.osf
bbc1.9i-btf/install/bbsys.redhat
bbc1.9i-btf/install/bbsys.redhatES
bbc1.9i-btf/install/bbsys.sco
bbc1.9i-btf/install/bbsys.sco3
bbc1.9i-btf/install/bbsys.sinix
bbc1.9i-btf/install/bbsys.solaris
bbc1.9i-btf/install/bbsys.sunos
bbc1.9i-btf/install/bbsys.suse
bbc1.9i-btf/install/bbsys.ultrix
bbc1.9i-btf/install/bbsys.unixware
bbc1.9i-btf/install/bbsys.unixware7
bbc1.9i-btf/tmp/.helloworld
bbc1.9i-btf/src/README
bbc1.9i-btf/src/bb.c
bbc1.9i-btf/src/bb.h
bbc1.9i-btf/src/bbrun.c
bbc1.9i-btf/src/bbsend.c
bbc1.9i-btf/src/bbstat.c
bbc1.9i-btf/src/minimake/Makefile
bbc1.9i-btf/src/minimake/README
bbc1.9i-btf/src/minimake/bbmachine
bbc1.9i-btf/src/minimake/genbbdefs
bbc1.9i-btf/src/minimake/genmake
bbc1.9i-btf/src/minimake/getid
bbc1.9i-btf/src/minimake/client
bbc1.9i-btf/src/touchtime.c
bbc1.9i-btf/src/utils.c
bbc1.9i-btf/src/getipaddr.c
bbc1.9i-btf/src/Makefile
Je renomme le répertoire bbc1.9i-btf en bbclient:
[bb@ibook] /Users/bb>mv bbc1.9i-btf bbclient
Je me place dans le répertoire bbclient:
[bb@ibook] /Users/bb>cd bbclient
[bb@ibook] /Users/bb/bbclient>
Si vous êtes curieux et/ou si vous avez le temps, lisez le fichier README.INSTALL qui vous expliquera en détail l'installation. Mais bon comme j'explique tout ici vous n'avez pas vraiment besoin de RTFM :)
Compilation de Big Brother
Allons-y pour compiler le client Big Brother:
D'abord, configurer les sources pour Mac OS X (Darwin):
[bb@ibook] /Users/bb/bbclient/install>./bbconfig darwin
(Lisez et acceptez la licence)
Je répond à une première question:
Big Brother needs it's own user id. If your BB user doesn't exist, you'll have to create it then re-run bbconfig.
What will be the user ID for BB [bb]:
Je tape ENTER
---> BB will only run from user 'bb'
Making sure BBHOME is writable...
---> OK, /Users/bb/bbclient is fine...
Je répond à une deuxième question:
When you set up your machines, you should use Fully Qualified
Domain names, this means you use the whole name, like www.bb4.com,
instead of just 'www'. This is recommended.
Use FQDN (y/n): [y]
Je réponds n pour non
Ca y est, je peux compiler:
[bb@ibook] /Users/bb>cd /Users/bb/bbclient/src
[bb@ibook] /Users/bb/bbclient/src>make
Making darwin makefile
BBOS="darwin" CC="gcc" CFLAGS=" -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O" make -e bball
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o bb.o -c bb.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o bbsend.o -c bbsend.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o utils.o -c utils.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/bb bb.o bbsend.o utils.o
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o touchtime.o -c touchtime.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/touchtime touchtime.o
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o getipaddr.o -c getipaddr.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/getipaddr getipaddr.o utils.o
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o bbrun.o -c bbrun.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/bbrun bbrun.o utils.o
[bb@ibook] /Users/bb/bbclient/src>make install
(Ah oui, évidemment, à cette étape le script d'installation fait appel à gcc, il faut donc que vous ayez installé XCode)
La compilation est terminée, j'approche du but.
Création du fichier de configuration de Big Brother
Il me faut maintenant créer le fichier de configuration. Allons dans le répertoire adéquat:
[bb@ibook] /Users/bb>cd bbclient/etc
Je regarde le fichier bb-hosts livré par défaut:
[bb@ibook] /Users/bb/bbclient/etc>cat bb-hosts
Je renomme le fichier livré par défaut:
[bb@ibook] /Users/bb/bbclient/etc>mv bb-hosts bb-hosts.DIST
Je crée mon fichier bb-hosts et j'y écris simplement deux lignes:
10.42.10.1 venus # BBPAGER BBNET BBDISPLAY
10.42.10.28 ibook
Ici 10.42.10.28 ibook est l'adresse IP et le nom de ma machine client Mac OS X, et 10.42.10.1 venus l'adresse IP et le nom de ma machine serveur Big Brother. (Pour connaître l'adresse IP de votre machine, tapez ifconfig en0 ou allez dans Préférences Systèmes > Réseau). Evidemment cela ne fonctionnera correctement que si votre machine Mac OS X a une adresse IP fixe...
Sur mon serveur Big Brother, j'ajoute une ligne du genre:
10.42.10.28 ibook
(Ou si la machine Mac OS X n'est pas allumée en permanence:)
10.42.10.28 ibook #noping
Premier lancement du client
Je peux enfin lancer le client:
[bb@ibook] /Users/bb>cd /Users/bb/bbclient/
[bb@ibook] /Users/bb/bbclient>./runbb.sh start
Starting Big Brother
Starting Local tests (bb-local)...
Big Brother 1.9i started
[bb@ibook] /Users/bb/bbclient>
Ca y est, ca tourne !
Je regarde maintenant mon serveur Big Brother et j'y vois des boules vertes !
Si vous voyez des boules rouges, il peut y avoir plusieurs problèmes:
Premier problème possible:
La boule "msgs" est rouge, et quand je clique dessus je vois "/var/log/system.log is unreadable". Comme le message le dit, l'utilisateur bb ne peut pas ouvrir le fichier /var/log/system.log en lecture. Voyons les permissions sur ce fichier:
-rw-r----- 1 root admin 478K Jan 1 15:10 /var/log/system.log
Dès lors, pour que l'utilisateur bb puisse lire ce fichier, deux solutions:
a) Changer les permissions du fichier en . Mais alors, il est world-readable, ce qui peut être considéré comme un "problème de sécurité" par les Unix gurus.
b) Mettre l'utilisateur bb dans le groupe adm. A nouveau, ceci peut être considéré comme un "problème de sécurité" par les Unix gurus.
Deuxième problème possible:
La boule "disk" est rouge, et quand je clique dessus je vois "red Mon Dec 31 16:00:00 CET 2007 - Filesystem of /Users/bb/bbclient/tmp is FULL"
J'ai constaté que ce problème survient avec Léopard, mais pas avec Tiger. Il est dû à une nouvelle syntaxe de la commande sort sous Mac OS X Léopard. La solution à ce problème m'a été donnée par Martin Costabel (grand merci à lui). Il suffit d'éditer le fichier /Users/bb/bbclient/bin/bb-disk.sh . D'abord, je renomme l'original et je crée une copie:
[bb@ibook] /Users/bb>cd bbclient/bin
[bb@ibook] /Users/bb/bbclient/bin> mv bb-disk.sh bb-disk.sh.DIST
[bb@ibook] /Users/bb/bbclient/bin> cp bb-disk.sh.DIST bb-disk.sh
Ensuite j'édite bb-disk.sh: je remplace \"+${DFSORT}\" par \"-k$(($DFSORT+1))\" (Attention: Il faut le faire deux fois à deux endroits différents dans le fichier)
Pour que le client Big Brother démarre automatiquement
Avec ceci, il faut à chaque démarrage de la machine Mac OS X, aller démarrer le client Big Brother en effectuant des commandes du genre:
[pierre@ibook] /Users/pierre> sudo su - bb
[bb@ibook] /Users/bb> ./bbclient/runbb.sh start
... ce qui est assez pénible
Je vous conseille donc fortement de mettre le client Big Brother en "démarrage automatique". Pour cela, devenez l'utilisateur bb (par sudo su - bb par exemple), et ensuite:
[bb@ibook] /Users/bb>crontab -e
Dans le crontab de bb, une seule ligne à écrire:
@reboot /Users/bb/bbclient/runbb.sh start
Eventuellement, redémarrez pour vous assurer que le client Big Brother démarre bien tout seul
Ajustement cosmétique
Comme j'ai créé un utilisateur bb, il apparaît évidemment dans l'écran de connexion et dans la "permutation rapide d'utilisateur". Cela vous ennuie ? J'ai la solution:
[pierre@ibook] /Users/pierre> sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add bb
Pour les "bêtes de Mac OS X", enfin je veux dire: les utilisateurs avancés
Il est possible de créer l'utilisateur bb, et de le mettre dans le bon groupe, tout ça en ligne de commande. Par exemple:
Créer l'utilisateur bb:
sudo dscl . -create /Users/bb
sudo dscl . -create /Users/bb UserShell /bin/bash
sudo dscl . -create /Users/bb RealName "Big Brother"
sudo dscl . -create /Users/bb UniqueID xxx
sudo dscl . -create /Users/bb PrimaryGroupID 20
sudo dscl . -create /Users/bb NFSHomeDirectory /Users/bb
sudo mkdir /Users/bb
sudo chgrp staff /Users/bb
sudo chown bb /Users/bb
(où xxx est le UID, faites bien attention d'en choisir un qui n'existe pas déjà, pour cela faites sudo dscl . list /users UniqueID pour voir ceux qui sont déjà utilisés. Dans mon cas l'UniqueID est 503. Le PrimaryGroupID 20 correspond à staff, en tous cas sous Tiger et Léopard)
Ceci a l'avantage de pouvoir choisir avec précision l'UID et le GID. De plus, les répertoires "qui ne servent à rien" pour l'utilisateur bb: Library, Pictures, Desktop, Movies, Public, Documents, Music, Sites ne sont pas créés.
(N'oubliez pas de mettre un mot de passe en faisant sudo passwd bb)
... et voilà, on y est arrivé !
Aujourd'hui je vais vous expliquer comment installer Big Brother client sur une machine Mac OS X. Big Brother est un outil de monitoring freeware (mais qui existe aussi en version commerciale). Je l'utilise ou je l'ai utilisé sous Debian GNU/Linux, Red Hat, PC-BSD, FreeBSD, Solaris, AIX et Windows. Voyons comment l'installer sous Mac OS X:
Création d'un utilisateur bb
Tout d'abord je crée un utilisateur dont le login sera (par tradition) bb:
Dans "Préférences Systèmes" allez dans "Comptes"
(Pour créer un utilisateur vous devez avoir un compte d'administrateur)
Si le cadenas est fermé, je clique dessus, et je tape mon nom et mot de passe pour le débloquer.
Cliquez sur le "+"
Nom: Big Brother
Nom abrégé: bb
Pour le mot de passe, je tape quelque chose de difficile à trouver, par exemple 5dAkr42, de toutes façons je n'aurai jamais besoin de ce mot de passe (nous verrons plus loin pourquoi)
Je ne coche pas "Autoriser à administrer cet ordinateur"
Je clique "Créer le compte"
Rapatriement de Big Brother
Je vais chercher Big Brother à l'adresse suivante:
http://bb4.org/dnld/bb-1.9i
Je place ce fichier dans le répertoire /Users/bb
Je deviens l'utilisateur Big Brother. Vous me direz: "Oui mais, je ne connais pas son mot de passe !". Pas besoin, avec mon compte d'administateur il me suffit de faire:
[pierre@ibook] /Users/pierre>sudo su - bb
Password:
[bb@ibook] /Users/bb>
Décompression du fichier de Big Brother
En tant que l'utilisatateur bb:
Je décompresse le .tar.gz, j'obtiens trois fichiers:
[bb@ibook] /Users/bb>tar -zxvf bb-1.9i.tar.gz
BB.README.FIRST
BBSVR-bb1.9i-btf.tar
BBCLT-bbc1.9i-btf.tar
Il y a à ce moment trois fichiers que je peux effacer:
[bb@ibook] /Users/bb>rm bb-1.9i.tar.gz
[bb@ibook] /Users/bb>rm BBSVR-bb1.9i-btf.tar
[bb@ibook] /Users/bb>rm BB.README.FIRST
(Le premier je viens de le décompresser, le deuxième c'est la partie serveur dont je n'ai pas du tout besoin sur Mac OS X, et le troisième, passons...)
Il me reste le fichier BBCLT-bbc1.9i-btf.tar. Je le décompose:
[bb@ibook] /Users/bb>time tar -xvf BBCLT-bbc1.9i-btf.tar
bbc1.9i-btf/LICENSE
bbc1.9i-btf/README
bbc1.9i-btf/README.INSTALL
bbc1.9i-btf/README.CHANGES
bbc1.9i-btf/README.SECURITY
bbc1.9i-btf/README.SUPPORT
bbc1.9i-btf/runbb.sh.DIST
bbc1.9i-btf/bin/bb-combo.sh
bbc1.9i-btf/bin/bb-cpu.sh
bbc1.9i-btf/bin/bb-disk.sh
bbc1.9i-btf/bin/bb-local.sh
bbc1.9i-btf/bin/bb-msgs.sh
bbc1.9i-btf/bin/bb-ping.sh
bbc1.9i-btf/bin/bb-procs.sh
bbc1.9i-btf/etc/bb-bbexttab.DIST
bbc1.9i-btf/etc/bb-cputab.DIST
bbc1.9i-btf/etc/bb-dftab.DIST
bbc1.9i-btf/etc/bb-msgstab.DIST
bbc1.9i-btf/etc/bb-proctab.DIST
bbc1.9i-btf/etc/bbchkcfg.sh
bbc1.9i-btf/etc/bbchkcmds.sh
bbc1.9i-btf/etc/bbchkhosts.sh
bbc1.9i-btf/etc/bbdef.sh.DIST
bbc1.9i-btf/etc/bbdef-client.sh
bbc1.9i-btf/etc/bbinc.sh
bbc1.9i-btf/etc/bbinc-client.sh
bbc1.9i-btf/etc/bbsys.sh
bbc1.9i-btf/etc/bbwarnsetup.cfg
bbc1.9i-btf/etc/bb-hosts
bbc1.9i-btf/ext/ext-proto
bbc1.9i-btf/install/README
bbc1.9i-btf/install/README.SMS
bbc1.9i-btf/install/bbconfig
bbc1.9i-btf/install/bbmachine
bbc1.9i-btf/install/bbsys.aix
bbc1.9i-btf/install/bbsys.bsdi
bbc1.9i-btf/install/bbsys.bsdi4
bbc1.9i-btf/install/bbsys.caldera
bbc1.9i-btf/install/bbsys.darwin
bbc1.9i-btf/install/bbsys.debian
bbc1.9i-btf/install/bbsys.dgux
bbc1.9i-btf/install/bbsys.dynix
bbc1.9i-btf/install/bbsys.fedora
bbc1.9i-btf/install/bbsys.freebsd
bbc1.9i-btf/install/bbsys.hpux
bbc1.9i-btf/install/bbsys.hpux9
bbc1.9i-btf/install/bbsys.irix
bbc1.9i-btf/install/bbsys.linux
bbc1.9i-btf/install/bbsys.mandrake
bbc1.9i-btf/install/bbsys.netbsd
bbc1.9i-btf/install/bbsys.openbsd
bbc1.9i-btf/install/bbsys.osf
bbc1.9i-btf/install/bbsys.redhat
bbc1.9i-btf/install/bbsys.redhatES
bbc1.9i-btf/install/bbsys.sco
bbc1.9i-btf/install/bbsys.sco3
bbc1.9i-btf/install/bbsys.sinix
bbc1.9i-btf/install/bbsys.solaris
bbc1.9i-btf/install/bbsys.sunos
bbc1.9i-btf/install/bbsys.suse
bbc1.9i-btf/install/bbsys.ultrix
bbc1.9i-btf/install/bbsys.unixware
bbc1.9i-btf/install/bbsys.unixware7
bbc1.9i-btf/tmp/.helloworld
bbc1.9i-btf/src/README
bbc1.9i-btf/src/bb.c
bbc1.9i-btf/src/bb.h
bbc1.9i-btf/src/bbrun.c
bbc1.9i-btf/src/bbsend.c
bbc1.9i-btf/src/bbstat.c
bbc1.9i-btf/src/minimake/Makefile
bbc1.9i-btf/src/minimake/README
bbc1.9i-btf/src/minimake/bbmachine
bbc1.9i-btf/src/minimake/genbbdefs
bbc1.9i-btf/src/minimake/genmake
bbc1.9i-btf/src/minimake/getid
bbc1.9i-btf/src/minimake/client
bbc1.9i-btf/src/touchtime.c
bbc1.9i-btf/src/utils.c
bbc1.9i-btf/src/getipaddr.c
bbc1.9i-btf/src/Makefile
Je renomme le répertoire bbc1.9i-btf en bbclient:
[bb@ibook] /Users/bb>mv bbc1.9i-btf bbclient
Je me place dans le répertoire bbclient:
[bb@ibook] /Users/bb>cd bbclient
[bb@ibook] /Users/bb/bbclient>
Si vous êtes curieux et/ou si vous avez le temps, lisez le fichier README.INSTALL qui vous expliquera en détail l'installation. Mais bon comme j'explique tout ici vous n'avez pas vraiment besoin de RTFM :)
Compilation de Big Brother
Allons-y pour compiler le client Big Brother:
D'abord, configurer les sources pour Mac OS X (Darwin):
[bb@ibook] /Users/bb/bbclient/install>./bbconfig darwin
(Lisez et acceptez la licence)
Je répond à une première question:
Big Brother needs it's own user id. If your BB user doesn't exist, you'll have to create it then re-run bbconfig.
What will be the user ID for BB [bb]:
Je tape ENTER
---> BB will only run from user 'bb'
Making sure BBHOME is writable...
---> OK, /Users/bb/bbclient is fine...
Je répond à une deuxième question:
When you set up your machines, you should use Fully Qualified
Domain names, this means you use the whole name, like www.bb4.com,
instead of just 'www'. This is recommended.
Use FQDN (y/n): [y]
Je réponds n pour non
Ca y est, je peux compiler:
[bb@ibook] /Users/bb>cd /Users/bb/bbclient/src
[bb@ibook] /Users/bb/bbclient/src>make
Making darwin makefile
BBOS="darwin" CC="gcc" CFLAGS=" -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O" make -e bball
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o bb.o -c bb.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o bbsend.o -c bbsend.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o utils.o -c utils.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/bb bb.o bbsend.o utils.o
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o touchtime.o -c touchtime.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/touchtime touchtime.o
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o getipaddr.o -c getipaddr.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/getipaddr getipaddr.o utils.o
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o bbrun.o -c bbrun.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/bbrun bbrun.o utils.o
[bb@ibook] /Users/bb/bbclient/src>make install
(Ah oui, évidemment, à cette étape le script d'installation fait appel à gcc, il faut donc que vous ayez installé XCode)
La compilation est terminée, j'approche du but.
Création du fichier de configuration de Big Brother
Il me faut maintenant créer le fichier de configuration. Allons dans le répertoire adéquat:
[bb@ibook] /Users/bb>cd bbclient/etc
Je regarde le fichier bb-hosts livré par défaut:
[bb@ibook] /Users/bb/bbclient/etc>cat bb-hosts
Je renomme le fichier livré par défaut:
[bb@ibook] /Users/bb/bbclient/etc>mv bb-hosts bb-hosts.DIST
Je crée mon fichier bb-hosts et j'y écris simplement deux lignes:
10.42.10.1 venus # BBPAGER BBNET BBDISPLAY
10.42.10.28 ibook
Ici 10.42.10.28 ibook est l'adresse IP et le nom de ma machine client Mac OS X, et 10.42.10.1 venus l'adresse IP et le nom de ma machine serveur Big Brother. (Pour connaître l'adresse IP de votre machine, tapez ifconfig en0 ou allez dans Préférences Systèmes > Réseau). Evidemment cela ne fonctionnera correctement que si votre machine Mac OS X a une adresse IP fixe...
Sur mon serveur Big Brother, j'ajoute une ligne du genre:
10.42.10.28 ibook
(Ou si la machine Mac OS X n'est pas allumée en permanence:)
10.42.10.28 ibook #noping
Premier lancement du client
Je peux enfin lancer le client:
[bb@ibook] /Users/bb>cd /Users/bb/bbclient/
[bb@ibook] /Users/bb/bbclient>./runbb.sh start
Starting Big Brother
Starting Local tests (bb-local)...
Big Brother 1.9i started
[bb@ibook] /Users/bb/bbclient>
Ca y est, ca tourne !
Je regarde maintenant mon serveur Big Brother et j'y vois des boules vertes !
Si vous voyez des boules rouges, il peut y avoir plusieurs problèmes:
Premier problème possible:
La boule "msgs" est rouge, et quand je clique dessus je vois "/var/log/system.log is unreadable". Comme le message le dit, l'utilisateur bb ne peut pas ouvrir le fichier /var/log/system.log en lecture. Voyons les permissions sur ce fichier:
-rw-r----- 1 root admin 478K Jan 1 15:10 /var/log/system.log
Dès lors, pour que l'utilisateur bb puisse lire ce fichier, deux solutions:
a) Changer les permissions du fichier en . Mais alors, il est world-readable, ce qui peut être considéré comme un "problème de sécurité" par les Unix gurus.
b) Mettre l'utilisateur bb dans le groupe adm. A nouveau, ceci peut être considéré comme un "problème de sécurité" par les Unix gurus.
Deuxième problème possible:
La boule "disk" est rouge, et quand je clique dessus je vois "red Mon Dec 31 16:00:00 CET 2007 - Filesystem of /Users/bb/bbclient/tmp is FULL"
J'ai constaté que ce problème survient avec Léopard, mais pas avec Tiger. Il est dû à une nouvelle syntaxe de la commande sort sous Mac OS X Léopard. La solution à ce problème m'a été donnée par Martin Costabel (grand merci à lui). Il suffit d'éditer le fichier /Users/bb/bbclient/bin/bb-disk.sh . D'abord, je renomme l'original et je crée une copie:
[bb@ibook] /Users/bb>cd bbclient/bin
[bb@ibook] /Users/bb/bbclient/bin> mv bb-disk.sh bb-disk.sh.DIST
[bb@ibook] /Users/bb/bbclient/bin> cp bb-disk.sh.DIST bb-disk.sh
Ensuite j'édite bb-disk.sh: je remplace \"+${DFSORT}\" par \"-k$(($DFSORT+1))\" (Attention: Il faut le faire deux fois à deux endroits différents dans le fichier)
Pour que le client Big Brother démarre automatiquement
Avec ceci, il faut à chaque démarrage de la machine Mac OS X, aller démarrer le client Big Brother en effectuant des commandes du genre:
[pierre@ibook] /Users/pierre> sudo su - bb
[bb@ibook] /Users/bb> ./bbclient/runbb.sh start
... ce qui est assez pénible
Je vous conseille donc fortement de mettre le client Big Brother en "démarrage automatique". Pour cela, devenez l'utilisateur bb (par sudo su - bb par exemple), et ensuite:
[bb@ibook] /Users/bb>crontab -e
Dans le crontab de bb, une seule ligne à écrire:
@reboot /Users/bb/bbclient/runbb.sh start
Eventuellement, redémarrez pour vous assurer que le client Big Brother démarre bien tout seul
Ajustement cosmétique
Comme j'ai créé un utilisateur bb, il apparaît évidemment dans l'écran de connexion et dans la "permutation rapide d'utilisateur". Cela vous ennuie ? J'ai la solution:
[pierre@ibook] /Users/pierre> sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add bb
Pour les "bêtes de Mac OS X", enfin je veux dire: les utilisateurs avancés
Il est possible de créer l'utilisateur bb, et de le mettre dans le bon groupe, tout ça en ligne de commande. Par exemple:
Créer l'utilisateur bb:
sudo dscl . -create /Users/bb
sudo dscl . -create /Users/bb UserShell /bin/bash
sudo dscl . -create /Users/bb RealName "Big Brother"
sudo dscl . -create /Users/bb UniqueID xxx
sudo dscl . -create /Users/bb PrimaryGroupID 20
sudo dscl . -create /Users/bb NFSHomeDirectory /Users/bb
sudo mkdir /Users/bb
sudo chgrp staff /Users/bb
sudo chown bb /Users/bb
(où xxx est le UID, faites bien attention d'en choisir un qui n'existe pas déjà, pour cela faites sudo dscl . list /users UniqueID pour voir ceux qui sont déjà utilisés. Dans mon cas l'UniqueID est 503. Le PrimaryGroupID 20 correspond à staff, en tous cas sous Tiger et Léopard)
Ceci a l'avantage de pouvoir choisir avec précision l'UID et le GID. De plus, les répertoires "qui ne servent à rien" pour l'utilisateur bb: Library, Pictures, Desktop, Movies, Public, Documents, Music, Sites ne sont pas créés.
(N'oubliez pas de mettre un mot de passe en faisant sudo passwd bb)
... et voilà, on y est arrivé !
Libellés :
Big Brother,
gcc,
Leopard,
Mac OS X,
Tiger
dimanche 29 avril 2007
Comment simuler un "kernel panic" sous Mac OS X ("panic screen")
Lorsqu'un système Unix rencontre un sérieux problème, il effectue un kernel panic. Ceci est, heureusement, particulièrement rare.
Mac OS X étant un système basé sur Unix, il peut également subir un kernel panic. Que se passe-t-il alors ? Eh bien vous ne l'avez probablement jamais vu :)
Pour le voir, il vous suffit d'exécuter un tout petit programme dont voici le code source (ceci provient de l'excellent livre "Mac OS X Internals"):
// panic_test.c
// from "Mac OS X Internals", ISBN 0321278542
// figure 5.16 page 439
// The source is being made available "as is" under the GNU General Public License (GPL).
#include
#include
#include
#define KERN_PANICINFO_TEST (KERN_PANICINFO_IMAGE + 2)
int
main(void)
{
int ret;
size_t oldnewlen = 0;
int mib[3] = { CTL_KERN, KERN_PANICINFO, KERN_PANICINFO_TEST };
ret = sysctl(mib, 3, NULL, (void *)&oldnewlen, NULL, oldnewlen);
exit(ret);
}
Pour votre facilité, vous pouvez télécharger ce petit programme sur mon site:
Attention il faut l'exécuter avec sudo, comme ceci:
... et voilà
Mac OS X étant un système basé sur Unix, il peut également subir un kernel panic. Que se passe-t-il alors ? Eh bien vous ne l'avez probablement jamais vu :)
Pour le voir, il vous suffit d'exécuter un tout petit programme dont voici le code source (ceci provient de l'excellent livre "Mac OS X Internals"):
// panic_test.c
// from "Mac OS X Internals", ISBN 0321278542
// figure 5.16 page 439
// The source is being made available "as is" under the GNU General Public License (GPL).
#include
#include
#include
#define KERN_PANICINFO_TEST (KERN_PANICINFO_IMAGE + 2)
int
main(void)
{
int ret;
size_t oldnewlen = 0;
int mib[3] = { CTL_KERN, KERN_PANICINFO, KERN_PANICINFO_TEST };
ret = sysctl(mib, 3, NULL, (void *)&oldnewlen, NULL, oldnewlen);
exit(ret);
}
Attention il faut l'exécuter avec sudo, comme ceci:
- sudo ./panic_test.bin
- tapez votre mot de passe (vous devez être administateur de la machine)
- le programme s'exécute
... et voilà
Libellés :
Apple,
Kernel Panic,
Mac OS X,
Tiger,
XCode
Inscription à :
Articles (Atom)