BSD unix
sur une machine i386
rawrite est un utilitaire sous Windows pour copier une image de NetBSD sur disquette : on va s'en servir pour créer les 2 disquettes de boot de NetBSD, à partir des images boot1.fs et boot2.fs. Ces trois fichiers sont disponibles ici par exemple : ftp://ftp.free.fr:/mirrors1/ftp.netbsd.org/NetBSD-3.1/i386/installation/ rawrite.exe est dans misc/ et les images des disquettes dans floppy/. Ensuite on boot l'ordinateur sur la première disquette et on suit les instructions.
Mais avant toute chose il faut configurer le réseau car les disquettes ne contiennent pas grand chose.. : au menu de boot il faut aller dans Utility Menu/Configure Network afin de configurer la carte (ex0 si Ethernet)
Le ftp mirror du lip6 :
antioche.lip6.fr /pub/NetBSD-daily/HEAD/200512230000Z/ i386/binary/sets/
Globalement ça donne ça : le disque dur /dev/wd0 a 4 partitions principales : Win, NetBSD et 2 unused (on le voit avec fdisk wd0). Avec disklabel wd0 on obtient la vision de NetBSD :
/dev/wd0a
: / de 3Go/dev/wd0b
: swap de 1Go (et ouai j'ai fait l'con)/dev/wd0c
: représente la partition NetBSD qui englobe les sous partitions a: et b: (4Go)/dev/wd0d
: représente le disque entier (20Go)/dev/wd0e
: unused/dev/wd0f
: unuseda: doit être / et b: doit être la swap ; d: est le disque entier.
On peut afficher la table des partitions du disque wd0 ainsi :
fdisk wd0 Partition table: 0: NTFS, OS/2 HPFS, QNX2 or Advanced UNIX (sysid 7) start 63, size 12289662 (6001 MB, Cyls 0-765), Active 1: NetBSD (sysid 169) start 12289725, size 20482875 (10001 MB, Cyls 765-2040) 2: NetBSD (sysid 169) start 32772600, size 128063880 (62531 MB, Cyls 2040-10011/155/1) 3: <UNUSED>
Pour créer la partition il faut faire un fdisk -u wd0
et suivre le fil des questions.
Ensuite il faut utiliser la commande disklabel
:
disklabel wd0 > tempfile vi tempfile disklabel -R -r wd0 tempfile
vi tempfile
car il va falloir éditer le disklabel : par exemple la dernière ligne (f: ..) ci-dessous :
16 partitions: # size offset fstype [fsize bsize cpg/sgs] a: 20219472 12289725 4.2BSD 2048 16384 28080 # (Cyl. 12192*- 32251*) b: 263718 32509197 swap # (Cyl. 32251*- 32512*) c: 20482875 12289725 unused 0 0 # (Cyl. 12192*- 32512*) d: 160836480 0 unused 0 0 # (Cyl. 0 - 159559) e: 12289662 63 NTFS # (Cyl. 0*- 12192*) f: 128063535 32772915 4.2BSD 2048 16384 28632 # (Cyl. 32512*- 159559*)
Puis on la formate en FFS :
newfs /dev/wd0f
mount /dev/wd0f /mnt/test cd /usr pax -rw -pe . /mnt/test umount /mnt/test echo "/dev/wd0f /usr ffs rw 1 2" >> /etc/fstab shutdown now mv /usr /usr.old mkdir /usr
Dans l'ordre on créer le système de fichier sur la partition, on la monte temporairement, on copie les données du /usr actuel dessus, on démonte la partition, on met à jour la fstab, et on reboot en mode mono-utilisateur pour éviter les conflits de ressources critiques. Si le sytème marche on peut supprimer le /usr.old, sinon on le restaure..
C'est le fichier de conf qui se charge lors du démarrage : /etc/rc.conf
. On peut/doit rajouter les lignes suivantes :
hostname=stag-12-11.ipv6.lip6.fr dhclient=YES dhclient_flags="ex0" wscons=YES sshd=YES #lancer le serveur ssh ip6mode=autohost #activer l'ipv6 rtsol=YES rtsol_flags="ath0" # for ip6mode=autohost only lkm=YES #permet de lancer certains modules pf=YES #packet filtrer (firewall)
On boot sur disquette sans lancer l'installation, puis :
> boot hd0a:netbsd
on remarquera qu'ici c'est la nomenclature du dur conventionnelle (NetBSD se lance depuis le disque)
fdisk -B wd0
et si les labels de diskn n'ont pas été maj (win et bsd), essayer :
fdisk -B -i -u wd0
dont les sources ont été dl dans /usr/src
—fortement inspiré— traduction de la doc officielle : http://cvsweb.netbsd.org/Documentation/current/#updating
cd /usr/src
Construire la toolchain
./build.sh -O ../obj -T ../tools -U -u tools
Construire la distribution
./build.sh -O ../obj -T ../tools -U -u distribution
Construire le noyau
./build.sh -O ../obj -T ../tools -U -u kernel=GENERIC
Installer le noyau
cd ../obj/sys/arch/<ARCH>/compile/GENERIC su # mv /netbsd /netbsd.old # cp netbsd /netbsd
Rebooter avec le nouveau kernel
# shutdown -r now
Installer le nouvel espace utilisateur
cd /usr/src su ./build.sh -O ../obj -T ../tools -U install=/
Suivre les instructions à l'écran pour réparer les fichiers obsolètes, par exemple
/usr/src/usr.sbin/postinstall -s /usr/src -d // fix defaults mtree obsolete
Mise à jour de /etc
/usr/sbin/etcupdate -s /usr/src/etc
(optionnel) Rebooter pour s'assurer que tous les services utilisent les nouveaux binaires
shutdown -r now
L'option -u indique un processus de mise à jour, l'option -U permet une construction par un utilisateur no-root suivi d'une install par root.
cd /usr/src/sys/arch/i386/conf
GENERIC c'est la config du noyau actuel, on s'en inspire :
cp GENERIC MON_NOYAU
Il existe adjustkernel, un outil en perl qui analyse l'affichage du démarrage (dmesg) pour n'activer que les modules nécessasires à votre système dmesg. L'installer et le lancer.
adjustkernel MON_NOYAU //je crois que c'est la syntaxe//
Autant le dire de suite, ça n'a pas marcher pour moi : le fichier ne compilait pas. Dans ce cas il faut l'éditer à la main ; puis :
# config MON_NOYAU # cd ../compile/MON_NOYAU # make depend # make # mv /netbsd /netbsd.old # mv netbsd /
et on reboote pour tester !
# shutdown -r now
Si la machine ne boot plus, booter en mode mono-utilisateur avec la disquette sur l'ancien noyau :
#> boot hd0a:netbsd.old -s # fsck / # mount / # mv /netbsd.old /netbsd # reboot
Xfree est en fait déjà installé donc on peut dors et déjà lancer le serveur X :
startx
Mais c'est quand même très laid. On va donc lancer l'utilitaire de configuration en mode textuel
xf86config
Et/ou éditer le fichier de conf qui se trouve là : /etc/X11/XF86Config ou là : /usr/X11R6/lib/X11/XF86Config, et rajouter dans les bonnes sections :
XkbRules xfree86 XkbModel pc105 XkbLayout fr
Option "Protocol" "Auto" Option "Device" "/dev/wsmouse" Option "ZAxisMapping" "4 5"
Driver "ati" //à modifier aussi dans <Section Device>, donc 2 fois//
Marche aussi avec d'autres cartes ATI si on met le driver radeon generic (lancer l'utilitaire de détection de la carte graphique).
"1280x1024" en 24 bits par défaut
Les fréquences de rafraichissement sont les max proposées
# export CVSROOT=:pserver:anoncvs@anoncvs.fr.NetBSD.org:/pub/NetBSD-CVS # cd /usr # cvs login
S'il vous dit que ~/.cvspass n'existe pas, le créer. Ensuite il vous demande un mdp : c'est celui de l'url, soit anoncvs. Puis on récupérer la sources des packages et du noyau :
# cvs checkout -P pkgsrc # cvs checkout -P src
Tout ça va créer les dossier /usr/pkgsrc et /usr/src
pkg_add xyz.tgz pkg_delete xyz pkg_info
Mais on peut aussi les compiler (c'est ça qu'il faut faire avec la version -current)
Un exemple avec bash : pour créer le package (dans /usr/pkgsrc/packages/All) ET l'installer
# cd /usr/pkgsrc/shells/bash # make # make package
ou, pour juste l'installer :
# make install
ou pour créer tous les packages des dépendances :
# make package
pour créer tous les packages des dépendances
nb : un petit # cd /usr/pkgsrc && make clean
pour faire gagner de la place de temps en temps
edit : un simple
cd /usr/pkgsrc cvs -q update -dP
devrait suffir, comme indiqué dans le /usr/pkgsrc/docs/pkgsrc.txt
ancienne méthode non éprouvée :
# setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot # cd /usr # cvs login # cvs -d $CVSROOT update -PAd pkgsrc
NB : si vous faite un make update dans /usr/pkgsrc/, armez-vous de patience (plusieurs jours)
security/audit-packages
puis /usr/pkg/sbin/download-vulnerability-list
meta-pkgs/xfce4
www/apache2
www/ap-php
nb : s'il indique une vulnérabilité, il demande de définir ALLOW_VULNERABLE_PACKAGES pour l'installer. Dans ce cas il faut faire un # make ALLOW_VULNERABLE_PACKAGES=1
Les modifs se font dans le fichier .bashrc
, situé dans votre home (/home/<user>
ou /root
pour le root). Si vous utilisez un autre shell, il y a de fortes chances qu'il existe un fichier ressemblant à .<votre_shell>rc
. Il est possible aussi que votre shell lise le fichier .profile
du même répertoire. Dans ce cas, il faut concaténer les 2 fichiers dans un seul, et faire un lien symbolique de .profile qui pointe vers .<votre_shell>rc
; par exemple :
cd ~ cat .profile >> .bashrc mv .profile .profile.old ln -s .bashrc .profile
La variable à modifier est PS1 ; par défaut elle vaut quelque chose comme :
PS1="\u@\¿:\w$"
c'est à dire <USER>@<HOSTNAME>:<WORKDIR>$
Sans changer l'ordre des infos, nous allons mettre le <USER> en rouge et en gras, et le reste en bleu :
PS1="\e[1;31m\u\e[0;34m@\:\w$ \e[0m"
\e[
introduit une couleur1;31m
format : <POLICE>;<COULEUR>m (ici texte en gras (1) de couleur rouge (31))\e[0m
: restaurer le style par defaut (pour que les couleurs ne débordent pas sur le reste du shell)
NB : En fonction de votre OS, vous devrez peut être encadrer les couleurs entre \[ \]. Cela donne, par exemple, pour restaurer le style par défaut : \[\e[0m\]
<NOM DE LA COULEUR> <COULEUR DES CARACTERES> <COULEUR DE FOND>
Le format des polices :
On peut aussi utiliser des commandes externes : par exemple pour afficher <heure>:<minutes> on utilisera $(date +”%H:%M“)
à la place de \t
On peut utiliser cette fonction qui défini la taille des fichiers contenus dans le répertoire courant (source : [http://jipe.homelinux.org/trucs_bash/prompt.html jipe])
bytes2 () { a=0 ls -l | (while read -r A B C D E F; do case $A in -*) a=$((a+E)) ;; esac done echo "scale=1; $a/1024/1024" | bc) }
Et voici le mien (j'utilise la fonction bytes2 légèrement modifiée) : j'avoue que les couleurs sont pas top
PS1='\e[0;47m$(date +"%H:%M")\e[0;31m\h:\e[0;32m\W\e[33m[$(bytes2)Mb]\e[0;34m$ \e[0m'
et la même, en encadrant les couleurs (linux) :
export PS1='\[\e[0;47m\]$(date +"%H:%M")\[\e[0;31m\]\h:\[\e[0;32m\]\W\[\e[33m\][$(bytes2)Mb]\[\e[0;34m\]\\$ \[\e[0m\]'
Un lien utile : http://www.ibm.com/developerworks/linux/library/l-tip-prompt/
Remote SHell est un protocole qui permet de lancer des commandes (en clair) shell sur un host distant. Ssh c'est “le même” en chiffré. De même rcp permet de récupérer des fichiers distants (en clair) et scp permet de faire la même chose mais en chiffré.
Rshd est installé par défaut sous NetBSD dans /usr/libexec/rshd
ou /usr/src/libexec/rshd
. Il nécessite inetd pour se lancer. Il faut donc décommenter les lignes suivantes dans /etc/inetd.conf
:
shell stream tcp nowait root /usr/libexec/rshd rshd -L shell stream tcp6 nowait root /usr/libexec/rshd rshd -L
Puis relancer inetd : # /etc/rc.d/inetd restart
<br/>
Le fichier ~/.rhosts
permet à un utilisateur de spécifier les IP des machines clientes pour lesquelles il n'aura pas besoin de saisir un mot de passe pour lancer une commande rsh (ou rcp). Ce fichier est situé sur le serveur RSH. La syntaxe est <host> <user>
. On va donc ajouter localhost dedans :
localhost dude
On peut vérifier si le serveur marche avec un :
rsh localhost ls
qui devrait renvoyer le résultat du ls
Les différents paramètres :
-4
: pour forcer la connexion en IPv4-n
: pour rediriger l'entrée vers /dev/null
Common UNIX Printing System est un client/serveur d'impression pour UNIX.. En installant /usr/pkgsrc/print/cups on installe les 2 mais c'est le client qui nous intéresse.
Après l'installation il faut juste éditer le /usr/pkg/etc/cups/client.conf
et informer le hostname du PC qui partage l'imprimante :
ServerName hera-stag.ipv6.lip6.fr
Ensuite un lpr -P Black mondoc.ps
suffit à lancer l'impression au 6e.
SI ça ne marche pas il faut bien utiliser le “bon” lpr, celui situé dans /usr/pkg/
:
/usr/pkg/bin/lpr -P Black Realman-full-Iannone.ps
On peut également utiliser lpq -P Black
pour afficher la file d'impression ou lpstat -p Black
pour relever les stats de l'imprimante.
Pour info CUPS fourni une interface web disponible ici : http://localhost:631
.
Un tutorial pour configurer le serveur est disponible ici : http://www.trustonme.net/didactels/268.html
La doc officielle est là : http://www.cups.org/documentation.php
Il se situe dans /usr/pkgsrc/lang/sun-jre15
On doit dans un premier temps télécharger le binaire pour linux : http://java.sun.com/j2se/1.5.0/download.html ou là : http://java.sun.com/products/archive/index.html
Cliquer sur Download JRE 5.0 Update 6, et télécharger le Linux self-extracting file.
Ensuite, il faut le mettre dans /usr/pkgsrc/distfiles/jre-1_5_0_06-linux-i586.bin
Puis il faut accepter la licence en modifiant mk.conf :
echo “ACCEPTABLE_LICENSES+=jdk13-license” » /etc/mk.conf
Enfin on peut l'installer avec un make package
Editer /etc/rc.conf
et ajouter les lignes suivantes :
lkm=YES pf=YES
puis dans le fichier /etc/lkm.conf
/usr/lkm.pf.o - - - - BEFORENET
et dans le fichier /etc/pf.conf
pass all block quick on ex0 inet6
D'abord il faut repérer la partition avec fdisk
, puis il faut taper :
mount -t msdos /dev/sd0d /mnt/usbkey
Ce n'est donc pas de la vfat, et la partition est la d, à cause du système de fichier de NetBSD (cf plus haut).
De même certaines options comme user ou uid=x ne fonctionnent pas.
Dans l'ordre : installer apache2, puis php4, puis ap-php.
Si on utilise PHP 4.4.2, il y a des failles connues avec certains modules ; aussi il faut ajouter le paramètre ALLOW_VULNERABLE_PACKAGES=1
lors du make update
(uniquement si on le demande).
Après celà il faut ajouter les lignes suivantes dans le fichier de conf d'apache2 (/usr/pkg/etc/httpd/httpd.conf dans notre cas) :
LoadModule php4_module lib/httpd/mod_php4.so AddHandler application/x-httpd-php .php
CONFIGURE_ARGS+= --enable-sockets
Recompiler php et ap-php avec
# make update
ou
# make install
/usr/pkgsrc/graphics/php-gd
Puis valider le module en ajoutant dans le fichier /usr/pkg/etc/php.ini
la ligne
extension=gd.so
Grâce au protocole NTP ; ce dernier est déjà installé par défaut sous NetBSD. Le fichier de conf est /etc/ntp.conf
, et la seule chose à faire ici est d'ajouter un serveur si ça ne marche pas déjà :
server 132.227.72.1 server 132.227.72.129
Dans notre cas on se sert d'un serveur interne à cause du firewall.
On se met à l'heure en faisant un ntpdate 132.227.72.1
On lance ensuite le démon NTP ntpd
ntpq -p
permet de savoir si on est synchro.
ssh -4 dude@host
ssh -L8000:host2:80 dude@host
# useradd -m dude # passwd dude
Il faut aussi lui permettre d'être su-table en l'ajoutant au groupe wheel (en éditant /etc/group)
wheel:*:0:root,dude
On modifie son shell par défaut par chsh
.
wsconsctl -k -w encoding=fr
ça interroge serveur.php qui est lancé en ligne de commande :
chmod +ux serveur.php && ./serveur.php
/etc/defaults/rc.conf
contient les paramètres et leurs valeurs possibles pour le fichier /etc/rc.conf
ssh -4 <host>
/etc/rc.d/network restart
, il faut rajouter dans /etc/ifconfig.ex0
:!dhclient -q $int
ssid INFRADIO media autoselect mode 11g up
et de ifconfig.ath1
ssid TOAD media autoselect mode 11a mediaopt adhoc chan 40 up
tcpdump -n -i ath0
pour sniffer les paquets sur ath0about:config
et mettre network.dns.disableIPv6
à true.ssh -4 <host>
pour se connecter en ssh en ipv4ping6 -I ex0 2a02::aaa
pour pinger sur ex0 en ipv6wlanctl ath0
pour afficher les réseaux détectés sur ath0gdb /usr/pkg/bin/bash bash.core
puis bt
set -x
dans le code du .sh pour afficher toutes les commandes lancées (~verbose)ulimit -a
grep -v 'regexp
' permet d'inverser le filtre (ne sélectionner que les lignes ne contenant PAS regexp).pkill
correspond à killall sous Linux ; il permet d'envoyer un signal (par défaut un SIGTERM) à tous les processus dont le nom contient la chaîne suivant la commande. On peut spécifier le type de signal comme avec kill
<br/>
pkill -9 -g 0 rsh
permet de d'envoyer un SIGKILL (-9) à tous les processus appartenant au pgid du shell courant (-g 0) et contenant rsh dans leur nom.