27/05/2010
Intro
Le FreeBSD du serveur NFS (avec ZFS toussa) aillant décidé de faire une tentative de suicide entre deux vagues de chaleur, je décida de l'achever et de planquer le corps dans une serviette orange.
La machine est un chassi SuperMicro SC813M et une mobo SuperMicro P8SC8 avec :
- Intel(R) Pentium(R) 4 CPU 3.00GHz (avec HyperThreading)
- disk0 : 120Gb Maxtor 6Y120M0
- disk1 : 1Tb SAMSUNG HD103UJ
- disk2 : 1Tb SAMSUNG HD103UJ
- disk3 : 1Tb SAMSUNG HD103UJ (backups de l'ancien mirroir zfs disk1|disk2)
- Les autres machins standard, genre des ventilos, une alim toussa.
Sitoup de l'install
L'installation est très compliquée, tu insert la galette, tu boot dessus, et tu installe NetBSD sur wd0, compliqué hein.
La methode décrite ici est tirée de la sublissime documentation de NetBSD.
Maintenant tu est sur une serviette orange toute fraiche tu peux :
# echo "rtclocaltime=YES" >> /etc/rc.conf
# echo "sshd=YES" >> /etc/rc.conf
# sh /etc/rc.d/rtclocaltime start
# sh /etc/rc.d/sshd start
# useradd -m -G wheel tonuser
# passwd tonuser
Puis continuer l'install via ssh, c'est quand meme foutrement mieux d'être vautré dans son fauteuil en cuir pour faire ça.
Le RAID c'est dur
Oui, c'est vrai, c'est EXTREMEMENT dur, tellement que j'y suis arrivé.
On sprouitch un coup wd1 et wd2 :
# dd if=/dev/zero of=/dev/rwd1d bs=8k count=1
# dd if=/dev/zero of=/dev/rwd2d bs=8k count=1
On créer l'unique partoche sur wd1 et wd2, je décrit une seule fois, on repètera donc pour wd1 :
fdisk'ing :
# fdisk -0ua /dev/rwd1d
fdisk: primary partition table invalid, no magic in sector 0
Disk: /dev/rwd1d
NetBSD disklabel disk geometry:
cylinders: 1938021, heads: 16, sectors/track: 63 (1008 sectors/cylinder)
total sectors: 1953525168
BIOS disk geometry:
cylinders: 1023, heads: 255, sectors/track: 63 (16065 sectors/cylinder)
total sectors: 1953525168
Do you want to change our idea of what BIOS thinks? [n]
Partition 0:
# /dev/rwd1d:
<UNUSED>
START array
The data for partition 0 is:
<UNUSED>
sysid: [0..255 default: 169]
start: [0..121601cyl default: 63, 0cyl, 0MB]
size: [0..121601cyl default: 1953525105, 121601cyl, 953870MB]
bootmenu: []
Do you want to change the active partition? [n]
We haven't written the MBR back to disk yet. This is your last chance.
Partition table:
0: NetBSD (sysid 169)
start 63, size 1953525105 (953870 MB, Cyls 0-121601/80/63)
PBR is not bootable: All bytes are identical (0x00)
1: <UNUSED>
2: <UNUSED>
3: <UNUSED>
Bootselector disabled.
No active partition.
Should we write new partition table? [n] y
bsdlabel (j'ai fait direct :wq dans le vi) :
# disklabel -e -r -I wd1
On créer la conf du RAID (raid0 corresponds au /dev/raidX et non pas a du raid 0):
# vi /var/tmp/raid0.conf
qui contient:
START array
1 2 0
START disks
/dev/wd1e
/dev/wd2e
START layout
128 1 1 1
START queue
fifo 100
On initialise le RAID :
# raidctl -v -C /var/tmp/raid0.conf raid0
Si t'a pas fait de conneries il dit rien :)
On lui sette un label :
# raidctl -v -I 2010052601 raid0
(2010052601 = YYYYmmDDrev dans mon cas)
On lui fait réecrire la paritée-truc :
# raidctl -v -i raid0
Tu attends un moment (~3heures pour mes 2x1Tb)
Après tu peux verifier ton RAID avec :
# raidctl -v -s raid0
On passe les disklabels de wd1 et wd2 de 4.2BSD vers RAID :
# disklabel /dev/wd1 > wd1
# vi wd1 (on change ce qu'il faut)
# disklabel /dev/wd2 > wd2
# vi wd2 (pareil)
# disklabel -R -r /dev/wd1 wd1
# disklabel -R -r /dev/wd2 wd2
On disklabelle (j'ai aussi fait juste :wq) :
# disklabel -r -e -I raid0
On formate la partoche au format FFSv2 :
# newfs -O 2 /dev/rraid0a
On sette le raid0 en auto configure :
# raidctl -v -A yes raid0
On adapte le fstab pour ajouter notre nouvelle partoche :
# mkdir -p /datas/raid0
# echo "/dev/raid0a /datas/raid0 ffs rw,log 1 1" >> /etc/fstab
# mount /datas/raid0
Le néné-fesse
C'est bien beau tout ce joli espace dispo, mais configurer le néné-fesses serait bien.
La encore, c'est tiré de cette superbe doc.
Le bazard du rc.conf pour y activer :
# cat /etc/rc.conf
[..snip..blahblah..]
rpcbind=YES
mountd=YES
nfs_server=YES
lockd=YES
statd=YES
On lance tout ce bazard :
Info : lockd et statd font partie de 'nfslocking' et nfs_sever correspond a nfsd.
# for i in rpcbind mountd nfsd nfslocking; do
> sh /etc/rc.d/$i start; done
A ce moment la, j'ai rsyncé dans /datas/raid0 les backups depuis wd3, donc voila la suite :
On créer les exports cf exports(5) :
# echo "/datas/raid0/backups -maproot=root -network 192.168.2.0 -mask 255.255.255.0" > /etc/exports
On relance mountd :
# hup mountd
On verifie la liste des exports (/datas/raid0/backups devrait être listé) :
# showmount -e localhost
Maintenant on finit en modifiant le fstab des clients :
# echo "turbine:/datas/raid0/backups /home/marc/pub/backups nfs rw" >> /etc/fstab
12/05/2010
Note: It should run ok with any BSD ;)
Since Lugaru is Open-Source i've tried to build it under NetBSD and got it to work.
You need:
- Lugaru snapshot archive for Data/Textures (SEE UPDATE BELOW)
- Mercurial
- A brain
Let's go!
% hg clone http://hg.icculus.org/icculus/lugaru
% cd lugaru
% fetch http://rhaamo.gruik.at/patchs/lugaru_bsd_support.patch
% patch -p0 < lugaru_bsd_support.patch
Adapt -L/ to your path on your BSD (/usr/local/lib etc.)
% gmake CC=gcc CXX=g++\ -fpermissive LD=g++ LDFLAGS=-L/usr/pkg/lib\ -lSDL\ -lopenal\ -lGLU
% mkdir ~/.lugaru/
SEE UPDATE BELOW FOR DATA ELSE LUARU WILL _NOT_ RUN
Adapt too.
% export LD_LIBRARY_PATH=/usr/pkg/lib
% ./Data/lugaru-bin
Have fun!
UPDATE:
It seems someone puts good files in tihe CMake port, located here so:
% hg clone https://lugaru.googlecode.com/hg/ lugaru-datas
% cd lugaru-datas
% hg update cmake
% cp -r Data ~/.lugaru/
Porn:
% file Data/lugaru-bin
Data/lugaru-bin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for NetBSD 5.0, not stripped
03/03/2010
Je me sers surtout de ce billet comme d'un petit bloc note.
Etant particulièrement fan de X-Plane et venant tout juste d'acheter la version complète (6DVD/70G) pour 29$ (oui oui, vingt neufs dollars) je voulais un peut plus de trucs hardware pour y utiliser :)
Avec, bien sûr une contrainte : que ça fonctionne sous Mac OSX (X-Plane est compatible Linux mais ça ne m'intéresse pas.).
Voilà donc une petite liste des choses sympathiques, et pas trop cher, tournant normalement sous Mac OSX :) :
- yoke $119 http://www.digitaledgepc.com/yoke.htm
- pédales $115 http://www.digitaledgepc.com/pro_pedals.htm
- throttle $109 http://www.digitaledgepc.com/pro_throttle.htm
- boutons, radio, engines etc. voir :
- http://www.xpluginsdk.org/goflight.htm ici pour la compatibilité avec le plugin X-Plane
- http://www.simw.com/index.cfm?fuseaction=dspproductslist&mid=2&smid=118 ici (compter 100€ à 250€ par module) pour l'achat des modules GoFlight
- magnétos lights & gears : http://www.xpluginsdk.org/saitek.htm
- Le Flight Switch Panel coûte ~99€ soit moins cher qu'un module GoFlight.
- Le DIY :) :
- Pour X-Plane il faut des cartes 'spécifiques' (tout est expliqué sur le site).
- Les cartes sont donc les #2120 #2160 et #1065 qui devraient toutes fonctionner sous X-Plane.
- Ici (entre 50$ et 100$, des 18F2550 a 17$ préprogrammées sont disponibles pour ceux qui veulent se faire une board custom (schematics sur le site)) : http://www.desktopaviator.com/ et http://www.desktopaviator.com/Products/parts.htm
Personnellement dans un premier temps ça sera une #2120 et #2160 ainsi que quelques switchs, montés sur le début d'un panel en bois custom, et après selon l'envie probablement des modules GoFlight et éviter le saitek (ça réduit le nombre de plugins :)) et entre temps yoke/pédales et throttle :)
20/02/2010
For YesPaste i use RBBCode for BBCode parsing and need to have a custom tag : code
By default TagNode doesn't have 'pure' (read: non parsed text...) text, after reading RBBCode code source (yes, there is no DOCUMENTATION) i got it:
class YesPasteHtmlMaker < RbbCode::HtmlMaker
def html_from_code_tag(node)
if node.value.nil?
lang = 'plaintext'
else
lang = node.value
end
inner_html = node.children.inject('') do |output, child|
output + make_html(child).gsub("<br/>", "\n")
end
tokens = CodeRay.scan(inner_html, lang).div(:line_numbers => :table)
return tokens
end
end
def BBCode_render(text)
html_maker = YesPasteHtmlMaker.new
parser = RbbCode::Parser.new(:html_maker => html_maker)
html = parser.parse(text)
return html
end
08/12/2009
Pour obtenir le mimetype d'un fichier en C c'est très simple.
La lib magic est parfaite pour ca. man 3 libmagic sous FreeBSD.
Petit example:
BSDmakefile:
PROG= mimetype
LDFLAGS+= -lmagic
CFLAGS+= -Wall -g -ggdb3
NO_MAN= yes
.include <bsd.prog.mk>
Codaz:
#include <magic.h>
#include <stdio.h>
#include <stdlib.h>
#include <err.h>
int
main(int argc, char *argv[])
{
const char* program_name = argv[0];
char *filename = argv[1];
if (filename == NULL) {
fprintf(stderr, "Usage: %s file\n", program_name);
return(1);
}
struct magic_set *magic = magic_open(MAGIC_MIME_TYPE);
if (magic == NULL)
err(1, "magic_set");
magic_load(magic, NULL);
printf("%s: %s\n", filename, magic_file(magic, filename));
magic_close(magic);
return(0);
}
07/12/2009
Si par malheur tu ne paye pas tes factures d'ADSL chez SFR, tu sera rapellé a l'ordre en
te disant "Si tu paye pas on va te couper le net le X/X/XX".
Donc tu va payer les petites factures, une fois payé tu te dis "Voila, c'est fait.".
Tu regarde ton ssh, freezé. Ping de la GW OK, rien qui va vers le monde...
Tu reboot la box, niet. Pseudo synchro mais rien d'autre, tu tel au service client, tu cause
avec le robot a la con qui veux que tu tappe sur les touche du tel.
Puis un humain finit par te dire :
"Ah mais votre ligne a été suspendue pour 5jours."
Alors donc chez SFR, si t'a des factures en retard, que tu les payes, on te coupe le net pendant une semaine.
Sans te prévenir rien, merci. Vraiment merci...
/me regarde le pauvre HTC pendu a la fenètre au bout d'un usb de 5m sharant la 3G over le wifi....