Un petit script pour sauver mes traces GPS

10 03 2008

Comme vous le savez sans doute déjà, je participe à OpenStreetMap. Jusque là, pour mapper, j’utilisais JOSM en activant le mode LiveGPS. L’ennui c’est que pour le géotagging de mes photos, Josm n’enregistre pas les timestamps des traces. Je suis donc dans l’impossibilité de rajouter — après coup — les données géographiques à mes photos. Enfin, j’y arrive parce que généralement je fais assez peu de photos pour me souvenir mentalement d’où je les ai prises; mais ce n’est pas « optimal» .

J’ai donc été demandé de l’aide sur le salon #osm sur irc, et on m’a donné pour astuce d’utiliser gpspipe, et d’enregistrer les données brutes en NMEA, pour plus tard les convertir via gpsbabel.

Ces conseils m’ont permis de générer un script qui automatise le processus…
Lire la suite »



Mon CV

29 02 2008

Un CV traditionnel, c’est assez chiant à lire. Alors je vais tenter de le raconter façon bio plutot que sous forme d’une liste…

Ã?tudes

Rien de particulier à signaler. J’ai passé mes primaires dans une petite école communale en ardennes, à Melreux, pour être précis. Petite anecdote, en sixième, mon prof était le père de Philipe Courard.

Ensuite, trois années de secondaire à La-Roche-en-Ardennes. Mes options: sciences économiques et informatique. Autant dire que je n’ai rien appris à ce dernier cours. En raison d’un déménagement en cours d’année scolaire, j’ai été très absent de ma troisième année secondaire. Cela m’a valu d’échouer de peu aux examens de fin d’année. J’ai donc fait 4 ans à l’athénée royal Emile Fonck de Marche-en-Famenne. J’en ai profiter pour basculer sur les langues… Néérlandais, anglais et allemand. Un seul échec vraiment notable au cours de ces années: en cours de gym… Bah oui, j’aime pas courrir dans les bois!

Après ça, j’ai tenté une candidature en Droit, aux Facultés Universitaires Notre Dame de la Paix. J’ai adoré assister aux cours, mais malheureusement, un obstacle important s’est trouvé face à moi : la découverte du HTML, puis du JavaScript, et enfin du Java… J’ai commencé à passer plus de temps devant mon ordinateur que sur les bancs de l’amphi… J’ai donc lamentablement échoué mes examens.

Les vacances passèrent, j’ai découvert le C sous DJGPP, codé mes premières applications console, perdu quelques heures à m’émerveiller des émulateurs et de la demoscene… J’ai investi mon argent de poche dans l’achat de Microsoft Visual C++ 6 et codé quelques applis simplistes, entre autres un petit logiciel de « post-it»  et une variante d’un auto-extracteur de zips orienté démoscene… J’ai découvert les joies de MFC, y ai un peu trouvé d’ennui, puis j’ai redécouvert WinAPI et les joies du « tout par messages» .

Assez logiquement, j’ai débuté un graduat en informatique. En fait, c’est arrivé un peu par hasard, mais soit. La première semaine, j’ai été confronté aux horeurs du pascal, et peut attester de la légende : « Real Programmers don’t use pascal»  (mais pas pour les mêmes raisons). J’ai fait face à un mainframe qui parvenait parfois à rester actif plus de 5 minutes sans planter. J’ai aussi eu un cours sur « qu’est-ce qu’un ordinateur» , où le prof nous a expliqué en quoi consiste une souris et qu’il existait divers types de claviers. Ã?trangement, il n’a pas évoqué le dvorak. J’ai aussi eu des cours d’anglais et de néérlandais. Enfin… « Leer nederlands met Babar»  et « Speak English with Mickey Mouse» . On avait aussi des cours de sciences économiques, qui m’ont replongé 7 ans en arrière. Puis vint la seconde semaine, et l’exposé du programme des trois années de cours… Première année : pascal et cobol. Deuxième année, pascal, cobol, et un peu d’assembleur. Troisième année, un peu de C. Au deuxième semestre, si on a le temps, on fera peut-être les bases du Java. Je n’ai pas assisté à la troisième semaine.

Expérience

Donc fallait bien faire quelquechose. J’ai commencé par m’inscrire au chomage, et j’en ai profité pour reprendre le java, chipoter un peu plus loin sous WinAPI, et me suis remis à la conception de sites web. J’ai réappris le JavaScript qui avait déjà bien changé, appris le CSS qui n’en était qu’à ses balbutiements, ai approché les nouveautés du HTML 4.0, et joué des innovations apportées par Internet Explorer 4 à l’époque où Redmond était plutot en avance sur tous les autres. J’ai donc commencé à gérer Apache et à écrire en PHP et en Perl…

Au bout de quelques mois, il fallait bien trouver un job. J’ai alors rencontré Claude B. qui ma offert mon premier job. En substance, il donnait des consignes à un graphiste, qui travaillait sous Photoshop, et ensuite je me chargeais de transformer ces images en pages web. Pas très passionnant, mais au moins, cela m’a permis d’approcher de vrais serveurs (que j’ai dû choisir, acheter, et configurer de fond en comble sans jamais avoir touché à Linux). En deux semaines, j’en ai appris assez pour effectuer les travaux basiques requis par mon job. En l’essence, j’avais plusieurs postes dans cette société. Web-designer, sysadmin, gestionnaire des backups, help-desk téléphonique (aussi bien pour les clients que pour mes deux patrons qui avaient autant de connaissances en informatique que j’en ai en cuisine). Ca a duré un an. Officiellement, j’étais engagé à mi-temps. Dans la pratique, je travaillais entre 10 et 16 heures par jour. Ceci étant dit, les jours ou j’avais de quoi faire, je travaillais « vraiment» , et les autres jours, je me contentais d’adopter le principe du « 20% time»  de Google.

Bref, au bout de cette année, mon contrat a pris fin. Le lendemain, celui de deux autres de mes collègues s’est terminé aussi. Bref, en 2 jours l’équipe est passée de 6 à 3 personnes.

Je devais donc retrouver un travail. J’ai cherché un peu dans l’informatique, mais sans succès. Mon expérience était insuffisante, je ne disposait pas de voiture ni de permis, et je n’ai bien-sûr aucun diplôme. J’ai donc atteri dans l’industrie agro-alimentaire. D’abord en intérim, ensuite via des CDD de 3 mois. Bien que mon contrat de travail ne me permettais pas — syndicalement parlant — d’atteindre le niveau de « chef de ligne» , j’en avais tout de même la tâche à l’occasion de congés des chefs de ligne officiels. Rien de bien compliqué dans ce job malgré tout. Du travail à la chaine, un regard attentif à tous les détails, et l’aptitude de réagir à tout problème en quelques secondes. Le tout à une température de 4Ã?°C (ça rigole pas, l’agro-alimentaire).

Puis un jour, en basse saison, mon 5ème CDD n’a pas été renouvelé. Le lendemain, pas de mission d’intérim. Ni le surlendemain. Par contre le troisième jour, on m’a laissé un message sur mon gsm. J’étais à 100 kilomètres de là, et mon gsm resté chez moi. Mon absence a été mal prise, et je n’ai plus été appelé…

Un peu dégouté, j’ai pensé à autre chose. J’ai continué à bosser sur divers sites web qui n’ont jamais vu le jour faute de moyens financiers. Et je suis venu me perdre à Bruxelles, et j’ai cherché un autre job. A l’heure où j’écris ces lignes, je travaille depuis bientôt 3 ans pour une société pharmaceutique. Au début, c’était presque de la chaîne… Pas de tracas, les journées passent vite… Puis j’ai gravi les échelons. Très vite, selon mon chef direct. Trop vite, selon ceux qui étaient là avant moi. Et maintenant, je suis un peu coincé. J’ai gravi en moins d’un an tous les niveaux, et je me retrouve coincé là. L’étape supérieure, c’est de devenir superviseur, mais tous les postes sont pourvus depuis pas mal de temps.

Et puis bon, le pharmaceutique, c’est bien; être à un niveau stable, où l’on sait ce que l’on a à faire, c’est très bien; mais ma passion est et reste l’informatique…

Ma vie

Le travail et la vie sont indéniablement liés. Dès lors, je trouve important d’en parler.

Je suis sur le point de me marier, nous n’avons pas d’enfant (et nous ne comptons pas en avoir dans un avenir proche). Mes temps libres, je les occupe à diverses choses que je décris dans ce blog… Je ne suis pas du genre à me fourrer devant une télé, impassible et inactif. Il est même très rare que je JOUE sur ma PS3, car je passe plus de temps à chipoter sous Gentoo. Quand je suis sur mon pc, je fais pas mal de choses un peu dans tous les sens. Je lis pas mal de blogs, je participe à des chatrooms, j’écris dans des forums ou (rarement) des wikis… Le dernier jeu auquel je me sois intéressé — Dofus — a d’ailleurs été une occasion de plus de passer du temps sous Visual Studio, à écrire du C#…



Je participe à OpenStreetMap!

29 02 2008

Les données cartographiques, bien que récoltées via les subvensions payées par nos impots, ne sont pas disponibles au grand public. Un site web, publicgeodata.org, indique cela en profondeur (mais pas forcément de façon très claire). Ils donnent entre autres une liste d’arguments pour la libéralisation et la gratuité d’accès aux données géographiques. L’argument le plus solide est « European tax payers should get open access to the geographic data collected with their own money»  (les payeurs de taxes européens devraient avoir un accès libre aux données géographiques collectées grâce à leur argent).

Malheureusement, toutes les questions politiques ont tendance à avoir une réponse au bout de plusieurs années, et pas forcément la réponse que l’on souhaitait. Alors il existe une alternative: collecter soi-même des données géographiques et les rendre publiques. C’est ce que fait OpenStreetMap! Lire la suite »



Installation de Fuppes sous Gentoo

26 01 2008

Introduction

L’une des fonctionnalités de la Playstation 3 est la possibilité de se connecter à des serveurs UPnP, et ainsi profiter des images, musiques et vidéos disponibles sur votre serveur sans avoir besoin de les transférer. La lecture se fait en streaming.

1. Installation des dépendances

L’installation se fera via SVN. Si vous ne l’avez pas déjà, installez simplement SVN…

1
emerge -va dev-util/subversion

La compilation se fera via autoconf…

1
emerge -va sys-devel/autoconf

La fonction de transcodage est fournie par ffmpeg… Il vous faudra donc l’installer. Commencez par ajouter les flags de « use»  utiles à votre make.conf. Selon Gentoo-portage.com, les flags supportés sont:
aac altivec amr debug doc ieee1394 a52 encode imlib ipv6 mmx ogg vorbis oss test theora threads truetype v4l x264 xvid network zlib sdl X

Ensuite il suffit de lancer l’emerge:

1
emerge -va media-video/ffmpeg

Allez boire un café, ca peut prendre un certain temps…

2. Installation depuis les sources

Rien de compliqué ici. Je me contente de vous faire un copier-coller de la documentation de Fuppes. J’ai juste ajouté des directives à configure.

1
2
3
4
5
6
svn co http://fuppes-svn.ulrich-voelkel.de/trunk fuppes<br />
cd fuppes/<br />
autoreconf -vfi<br />
./configure --enable-video-transcoding--enable-default-http-port=1025  --prefix=/usr<br />
make<br />
make install

Configurer le lancement automatique

Le script init.d n’est pas installé par défaut. Il vous suffit de le créer et de faire un copier-coller.

Créez les répertoires et utilisateurs utilisés par ce script:

1
2
3
mkdir /etc/fuppes<br />
mkdir /var/log/fuppes<br />
mkdir /var/lib/fuppes

Créez /etc/init.d/fuppes contenant le script suivant:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/sbin/runscript<br />
# $Header: $</p>
<p>depend() {<br />
        use net<br />
}</p>
<p>start() {<br />
        ebegin "Starting Fuppes"<br />
        start-stop-daemon --start --quiet --exec /usr/bin/fuppesd \<br />
                --chuid fuppes -- --config-dir /etc/fuppes \<br />
                --database-file /var/lib/fuppes/fuppes.db \<br />
                2>> /var/log/fuppes/fuppes.err \<br />
                >> /var/log/fuppes/fuppes.log<br />
        eend $?<br />
}</p>
<p>stop() {<br />
        ebegin "Stopping Fuppes"<br />
        start-stop-daemon --stop --quiet --exec /usr/bin/fuppesd<br />
        eend $?<br />
}

en le rendant exécutable.

Ajoutez-le en tant que service lancé au démarrage:

1
rc-update -a fuppes default

Configuration

Le script d’init aura besoin d’un fichier de configuration. Vous pourrez le modifier plus tard. Voici une bonne base (MON fichier de config)

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;fuppes_config version="0.7.2.3"&gt;<br />
  &lt;shared_objects&gt;<br />
    &lt;dir&gt;/tmp&lt;/dir&gt;<br />
  &lt;/shared_objects&gt;<br />
  &lt;network&gt;<br />
    &lt;interface&gt;eth0&lt;/interface&gt;<br />
    &lt;http_port&gt;1025&lt;/http_port&gt;<br />
    &lt;allowed_ips&gt;<br />
      &lt;ip&gt;192.168.1.1&lt;/ip&gt;<br />
      &lt;ip&gt;192.168.1.2&lt;/ip&gt;<br />
      &lt;ip&gt;192.168.1.3&lt;/ip&gt;<br />
      &lt;ip&gt;192.168.1.4&lt;/ip&gt;<br />
      &lt;ip&gt;192.168.1.5&lt;/ip&gt;<br />
      &lt;ip&gt;192.168.1.6&lt;/ip&gt;<br />
      &lt;ip&gt;192.168.1.7&lt;/ip&gt;<br />
      &lt;ip&gt;192.168.1.8&lt;/ip&gt;<br />
    &lt;/allowed_ips&gt;<br />
  &lt;/network&gt;<br />
  &lt;content_directory&gt;<br />
    &lt;local_charset&gt;UTF-8&lt;/local_charset&gt;<br />
    &lt;!--libs used for metadata extraction when building the database. [true|false]--&gt;<br />
    &lt;use_imagemagick&gt;false&lt;/use_imagemagick&gt;<br />
    &lt;use_taglib&gt;true&lt;/use_taglib&gt;<br />
    &lt;use_libavformat&gt;true&lt;/use_libavformat&gt;<br />
  &lt;/content_directory&gt;<br />
  &lt;transcoding&gt;<br />
    &lt;audio_encoder&gt;lame&lt;/audio_encoder&gt;<br />
    &lt;transcode_vorbis&gt;true&lt;/transcode_vorbis&gt;<br />
    &lt;transcode_musepack&gt;true&lt;/transcode_musepack&gt;<br />
    &lt;transcode_flac&gt;true&lt;/transcode_flac&gt;<br />
  &lt;/transcoding&gt;<br />
  &lt;device_settings&gt;<br />
    &lt;device name="default"&gt;<br />
      &lt;!--specify the maximum length for file names (0 or empty = unlimited)--&gt;<br />
      &lt;max_file_name_length&gt;0&lt;/max_file_name_length&gt;<br />
      &lt;!--[file|container]--&gt;<br />
      &lt;playlist_style&gt;file&lt;/playlist_style&gt;<br />
      &lt;show_childcount_in_title&gt;true&lt;/show_childcount_in_title&gt;<br />
      &lt;enable_dlna&gt;false&lt;/enable_dlna&gt;<br />
      &lt;transcoding_release_delay&gt;4&lt;/transcoding_release_delay&gt;<br />
      &lt;file_settings&gt;<br />
        &lt;!--audio files--&gt;<br />
        &lt;file ext="mp3"&gt;<br />
          &lt;type&gt;AUDIO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;audio/mpeg&lt;/mime_type&gt;<br />
          &lt;dlna&gt;MP3&lt;/dlna&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="ogg"&gt;<br />
          &lt;type&gt;AUDIO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;application/octet-stream&lt;/mime_type&gt;<br />
          &lt;transcode enabled="true"&gt;<br />
            &lt;ext&gt;mp3&lt;/ext&gt;<br />
            &lt;mime_type&gt;audio/mpeg&lt;/mime_type&gt;<br />
            &lt;dlna&gt;MP3&lt;/dlna&gt;<br />
            &lt;http_encoding&gt;chunked&lt;/http_encoding&gt;<br />
            &lt;decoder&gt;vorbis&lt;/decoder&gt;<br />
            &lt;encoder&gt;lame&lt;/encoder&gt;<br />
            &lt;bitrate&gt;192&lt;/bitrate&gt;<br />
            &lt;samplerate&gt;44100&lt;/samplerate&gt;<br />
          &lt;/transcode&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="mpc"&gt;<br />
          &lt;type&gt;AUDIO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;application/octet-stream&lt;/mime_type&gt;<br />
          &lt;transcode enabled="true"&gt;<br />
            &lt;ext&gt;mp3&lt;/ext&gt;<br />
            &lt;mime_type&gt;audio/mpeg&lt;/mime_type&gt;<br />
            &lt;dlna&gt;MP3&lt;/dlna&gt;<br />
            &lt;http_encoding&gt;chunked&lt;/http_encoding&gt;<br />
            &lt;decoder&gt;musepack&lt;/decoder&gt;<br />
            &lt;encoder&gt;lame&lt;/encoder&gt;<br />
            &lt;bitrate&gt;192&lt;/bitrate&gt;<br />
            &lt;samplerate&gt;44100&lt;/samplerate&gt;<br />
          &lt;/transcode&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="wav"&gt;<br />
          &lt;type&gt;AUDIO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;audio/x-wav&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="flac"&gt;<br />
          &lt;type&gt;AUDIO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;audio/x-flac&lt;/mime_type&gt;<br />
          &lt;transcode enabled="true"&gt;<br />
            &lt;ext&gt;mp3&lt;/ext&gt;<br />
            &lt;mime_type&gt;audio/mpeg&lt;/mime_type&gt;<br />
            &lt;dlna&gt;MP3&lt;/dlna&gt;<br />
            &lt;http_encoding&gt;chunked&lt;/http_encoding&gt;<br />
            &lt;decoder&gt;flac&lt;/decoder&gt;<br />
            &lt;encoder&gt;lame&lt;/encoder&gt;<br />
            &lt;bitrate&gt;192&lt;/bitrate&gt;<br />
            &lt;samplerate&gt;44100&lt;/samplerate&gt;<br />
          &lt;/transcode&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="wma"&gt;<br />
          &lt;type&gt;AUDIO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;audio/x-ms-wma&lt;/mime_type&gt;<br />
          &lt;dlna&gt;WMAFULL&lt;/dlna&gt;<br />
        &lt;/file&gt;<br />
        &lt;!--image files--&gt;<br />
        &lt;file ext="jpg"&gt;<br />
          &lt;ext&gt;jpeg&lt;/ext&gt;<br />
          &lt;type&gt;IMAGE_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;image/jpeg&lt;/mime_type&gt;<br />
          &lt;convert enabled="false"&gt;<br />
            &lt;!--&lt;dcraw enabled="true"&gt;-q 0&lt;/dcraw&gt;--&gt;<br />
            &lt;ext&gt;png&lt;/ext&gt;<br />
            &lt;mime_type&gt;image/png&lt;/mime_type&gt;<br />
            &lt;height&gt;0&lt;/height&gt;<br />
            &lt;width&gt;0&lt;/width&gt;<br />
            &lt;!--set "greater" to "true" if you only want to resize images greater than "height" or "width"--&gt;<br />
            &lt;greater&gt;false&lt;/greater&gt;<br />
            &lt;!--set "less" to "true" if you only want to resize images less than "height" or "width"--&gt;<br />
            &lt;less&gt;false&lt;/less&gt;<br />
            &lt;!--set "less" and "greater" to "false" if you always want to resize--&gt;<br />
          &lt;/convert&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="bmp"&gt;<br />
          &lt;type&gt;IMAGE_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;image/bmp&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="png"&gt;<br />
          &lt;type&gt;IMAGE_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;image/png&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="gif"&gt;<br />
          &lt;type&gt;IMAGE_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;image/gif&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;!--video files--&gt;<br />
        &lt;file ext="mpg"&gt;<br />
          &lt;ext&gt;mpeg&lt;/ext&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;video/mpeg&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="mp4"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;video/mp4&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="avi"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;video/x-msvideo&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="wmv"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;video/x-ms-wmv&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="vob"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;video/x-ms-vob&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="vdr"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;video/x-extension-vdr&lt;/mime_type&gt;<br />
          &lt;transcode enabled="true"&gt;<br />
            &lt;ext&gt;vob&lt;/ext&gt;<br />
            &lt;mime_type&gt;video/x-ms-vob&lt;/mime_type&gt;<br />
          &lt;/transcode&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="flv"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;application/x-flash-video&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="asf"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;video/x-ms-asf&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;!--playlists--&gt;<br />
        &lt;file ext="pls"&gt;<br />
          &lt;type&gt;PLAYLIST&lt;/type&gt;<br />
          &lt;mime_type&gt;audio/x-scpls&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="m3u"&gt;<br />
          &lt;type&gt;PLAYLIST&lt;/type&gt;<br />
          &lt;mime_type&gt;audio/x-mpegurl&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
      &lt;/file_settings&gt;<br />
    &lt;/device&gt;<br />
    &lt;device name="PS3" enabled="true"&gt;<br />
      &lt;user_agent&gt;UPnP/1.0 DLNADOC/1.00&lt;/user_agent&gt;<br />
      &lt;user_agent&gt;PLAYSTATION3&lt;/user_agent&gt;<br />
      &lt;enable_dlna&gt;true&lt;/enable_dlna&gt;<br />
      &lt;transcoding_release_delay&gt;50&lt;/transcoding_release_delay&gt;<br />
      &lt;file_settings&gt;<br />
        &lt;file ext="ogg"&gt;<br />
          &lt;type&gt;AUDIO_ITEM_MUSIC_TRACK&lt;/type&gt;<br />
          &lt;transcode enabled="true"&gt;<br />
            &lt;http_encoding&gt;stream&lt;/http_encoding&gt;<br />
          &lt;/transcode&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="avi"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;video/x-divx&lt;/mime_type&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="mkv"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;video/x-matroska&lt;/mime_type&gt;<br />
          &lt;transcode enabled="true"&gt;<br />
            &lt;transcoder&gt;ffmpeg&lt;/transcoder&gt;<br />
            &lt;ext&gt;mpg&lt;/ext&gt;<br />
            &lt;mime_type&gt;video/mpeg&lt;/mime_type&gt;<br />
            &lt;video_codec&gt;mpeg1video&lt;/video_codec&gt;<br />
            &lt;audio_codec&gt;mp2&lt;/audio_codec&gt;<br />
            &lt;audio_samplerate&gt;44100&lt;/audio_samplerate&gt;<br />
            &lt;audio_bitrate&gt;192000&lt;/audio_bitrate&gt;<br />
          &lt;/transcode&gt;<br />
        &lt;/file&gt;<br />
        &lt;file ext="flv"&gt;<br />
          &lt;type&gt;VIDEO_ITEM&lt;/type&gt;<br />
          &lt;mime_type&gt;application/x-flash-video&lt;/mime_type&gt;<br />
          &lt;transcode enabled="true"&gt;<br />
            &lt;ext&gt;mpg&lt;/ext&gt;<br />
            &lt;mime_type&gt;video/mpeg&lt;/mime_type&gt;<br />
            &lt;transcoder&gt;ffmpeg&lt;/transcoder&gt;<br />
            &lt;video_codec&gt;mpeg1video&lt;/video_codec&gt;<br />
            &lt;audio_codec&gt;mp2&lt;/audio_codec&gt;<br />
            &lt;audio_samplerate&gt;44100&lt;/audio_samplerate&gt;<br />
            &lt;video_bitrate&gt;1800000&lt;/video_bitrate&gt;<br />
          &lt;/transcode&gt;<br />
        &lt;/file&gt;<br />
      &lt;/file_settings&gt;<br />
    &lt;/device&gt;<br />
  &lt;/device_settings&gt;<br />
&lt;/fuppes_config&gt;<br />

Ma configuration active la lecture de divx, place le serveur web sur le port 1025 et partage « /tmp» … Ce paramètre devrait être changé pour un répertoire contenant des mp3 ou des vidéos. Cette config devrait faire transcoder les matroska et vidéos .flv, mais pour l’instant je n’ai pas réussi à activer cela…

Il ne vous reste plus qu’à lancer le serveur via /etc/init.d/fuppes. Vous pourrez aussi accéder à l’interface web via le port 1025…

N’hésitez pas à laisser vos commentaires et questions si « Ã§a marche pas» !



Un serveur UPnP pour votre PS3

20 01 2008

Le titre n’est sans doute pas très clair. La PS3 disposant de fonctionnalité d’écoute de musique et de visionnage de vidéos et de photos, une fonction pratique est de pouvoir stocker ces fichiers sur votre pc et les rendre disponible via le réseau…

J’ai un serveur multiple sur mon réseau, un pc qui fait tourner un serveur web, contient pas mal de disques-durs (grâce à une carte IDE supplémentaire, je peux gérer 8 disques durs) et pas d’interface graphique. Tout ce que je fais sur ce pc, je le fais via SSH.

La grande capacité de stockage de ce pc fait que j’y met tous mes MP3, toutes mes images, et toutes mes vidéos. En temps normal, la manoeuvre est de rapatrier une vidéo sur un autre PC (via netfs), de graver cette vidéo sur cd (ou dvd), puis de la lire dans mon lecteur dvd/divx. Mais la PS3 peut aller lire ces films sur le réseau. Pour cela, il faut simplement un serveur UPnP!

J’ai choisi Fuppes, après avoir testé 4 autres alternatives. Je vous invite donc à lire mon tutoriel… Installation de Fuppes sous Gentoo



Utiliser une SIXAXIS de PS3 sous Linux

6 01 2008

Avant de commencer, je tiens à préciser que ce tutoriel a été testé sur mon pc portable, qui ne dispose pas de module Bluetooth. Ce tutoriel vous indiquera comment utiliser la manette en mode USB. Plus tard, j’essaierai d’arriver au même résultat sur ma PS3, et via le Bluetooth; cela sera décrit dans un autre tutoriel… D’ici là, il faudra se contenter de cela!


Ce tutoriel s’applique à un PC sous Gentoo…

Ã?teindre la PS3

Quand j’ai commencé à essayer de faire fonctionner cette fichue manette, rien ne marchais… La manette était détectée, les infos étaient dans dmesg, mais quoi qu’il arrive, je ne reçevais aucun message de la manette. J’ai pour habitude de laisser ma PS3 allumée en permanence pour faire tourner Folding@Home en arrière plan. Et il s’avère que malgré que mon SIXAXIS était branché sur le port USB d emon pc portable, elle restait associée à ma PS3 en Bluetooth et n’envoyait aucun message par l’USB. Donc, si rien ne marche, vérifiez que votre PS3 est éteinte… (voir aussi les notes enbas de page)

Vérifier la configuration du kernel

Lancez

1
2
cd /usr/src/linux
make menuconfig

et vérifiez les points suivants:

Device Drivers -->
 Input Device Support -->
  <*> Joystick Interface
  <*> Event Interface
   [*] Joysticks
 USB Support -->
  <*> Support for Host-side USB
   [*] USB device filesystem
  <*> EHCI HCD (USB 2.0) support
  <*> OHCI HCD support
  <*> UHCI HCD (most Intel and VIA) support
  <*> USB Human Interface Device (full HID) support
   [*] HID input layer support

Si ces points n’étaient pas cochés comme ci-dessus, recompilez votre kernel et installez-le… J’ignore si c’est nécessaire ou pas, mais j’aurais tendance à redémarrer l’ordinateur après cette opération.

Installer joystick et jscalibrator

Le premier est tout simple…

1
emerge -va joystick

Pour le second, commencez par vous assurer que votre « USE»  contient gtk (par exemple dans /etc/make.conf), et ensuite, lancez

1
emerge -va libjsw

Vérifiez la détection de la manette

Un affichage de dmesg devrait indiquer ceci:

1
2
input: Sony PLAYSTATION(R)3 Controller as /class/input/input13
input: USB HID v1.11 Joystick [Sony PLAYSTATION(R)3 Controller] on usb-0000:00:13.0-1

Vérifiez ensuite que /dev/input/js0 existe… Ou a défaut, /dev/js0. S’il existe, vérifiez que des messages sont reçus par un moyen simple:

1
cat /dev/js0

ce qui devrait afficher des caractères aléatoires, notament quand vous appuyez sur des boutons. Dernier test, via jstest… La commande est on ne peut plus simple:

1
jstest /dev/js0

Calibrer la manette

Lancez jscalibrator, éventuellement en lui passant le chemin /dev/js0. Dans l’interface, vous verrez à gauche un bouton « calibrate» . Cliquez-le, appuyez sur tous les boutons et déplacez les deux joysticks dans toutes les directions. Il est important de pousser assez fort sur tous les boutons pour une raison que j’expliquerai plus bas. Une fois que tous les « axes»  ont été poussés, relâchez tous les boutons, et cliquez à nouveau sur le bouton « calibrate» . La barre d’état, en bas de l’application, commencera à enregistrer les infos… Utilisez enfin le menu « Calibration»  et choisissez « Save» . Si vous avez lancé l’utilitaire en tant que root, copiez /root/.joystick dans le répertoire « home»  de tous les utilisateurs…

Utilisation

Je ne vais pas indiquer tous les logiciels et comment paramétrer l’utilisation de la manette… Mais je vais tout de même donner une info assez importante. Certains logiciels (dont mPlayer entre autres) ont besoin du flag USE « joystick»  pour implémenter l’utilisation d’une manette… Même certains jeux ont beson de ce flag. Pensez donc à ajouter « joystick»  au USE dans votre /etc/make.conf

Dernières notes

La raison pour laquelle j’ai insisté sur le fait de pousser bien fort sur les boutons, c’est que presque tous les boutons de la SIXAXIS sont en vérité des « axes»  en plus d’être de simples boutons. Pour être clair, la pression sur un bouton envoie deux informations:
- un « bit»  disant si le bouton est pressé ou non,
- une valeur indiquant la pression exercée sur le bouton. Plus on pousse fort, plus la valeur est élevée…

Les informations de mouvement de la sixaxis ne sont pas détectés par jscalibrator. Je crains même que ces informations ne soient pas envoyées via l’USB. Il semblerait qu’un développeur japonnais ait réussi à capter les signaux de mouvement via USB. Il a développé un petit logiciel, en pascal, permettant d’afficher les informations de mouvement. Je n’ai pas pu tester ce programme vu que je n’ai pas de machine sous Windows sous la main, et Wine ne permet pas de traiter ce genre d’informations…

Au début du tutoriel, j’indique qu’il faut impérativement éteindre la PS3. C’est partiellement vrai. En fait, il est possible de faire prendre le contrôle de la manette par votre PC de la façon suivante:

  1. Appuyez la touche PS pour afficher le menu « manette»  sur votre PS3.
  2. Dans ce menu, choisissez Ã?teindre la manette
  3. Connectez la manette en USB sur votre PC, et lancez-y le programme sixpair

Pour que cela fonctionne, il faut que votre PC soit équipé d’une antenne Bluetooth qui soit configurée.



libdlna ne compile pas

4 01 2008

Quand on a une PS3, une des choses qu’on peut vouloir, c’est un serveur DLNA, un protocole permettant de streamer des vidéos et fichiers audio à travers un réseau, avec prise en charge de DRM. Mon choix s’est porté pour uShare, qui repose sur libdlna. Déjà, l’ebuild Gentoo de uShare n’est pas dans le portage actuel, mais on peut en trouver un sur l’overlay Sunrise (j’expliquerai tout cela dans un prochain post). Mais cet ebuild ne fonctionne pas, et son message d’erreur n’est pas très parlant.

En fouillant un peu, j’ai vu que libdlna ne veut pas passer l’étape « ./configure»  en l’absence de libavformat. J’ai tenté un emerge libavformat, mais sans succès. J’ai googlé, et j’ai vu que cette librairie est utilisée par ffmpeg. Logique…

Mais sur mon serveur de fichiers, je n’ai pas ffmpeg. Je suis en train d’émerger ça, je verrai si ça marche demain, car là il est un peu tard ;)

MISE À JOUR: ffmpeg ne résoud pas le problème mais me permet d’aller plus loin. J’ai aussi été dans l’obligation d’installer libupnp (emerge libupnp), mais ça ne marche toujours pas. J’ai envoyé un message sur Gentoo Forums, mais pour l’instant, pas de réponse vraiment parlante…



Linux Gentoo sur une Sony PlayStation 3

30 12 2007

Pour réaliser l’installation de Gentoo sur votre PS3, vous aurez besoin de ceci:

  • Une PS3 (si si!)
  • Un pc connecté à internet (à priori, vous en avez un), peu importe s’il est sous Linux ou Windows
  • Une connexion internet via un cable éthernet
  • Un cable éthernet assez long pour connecter votre PS3
  • Un cd-r (essayez tout de même d’en avoir plusieurs)
  • Une clé USB avec de l’espace libre

Ma configuration

La PS3 que j’utilise est la plus simple, la « 40 Giga» , équippée de deux ports USB et sans lecteurs de cartes mémoire. Le firmware PS3 que j’utilise est — au moment où j’écris ce tutoriel — le 2.10.

Je ne dispose actuellement pas d’une télé HD-Ready, ni Full-HD… Je la branche simplement via le câble composite.

Préparer la PS3

Dans l’utilitaire de formattage, j’ai choisi d’affecter 10Go à « l’autre OS»  (voir la documentation officielle à ce sujet). Libre à vous de choisir l’autre option, à savoir de ne garder que 10Go pour le stockage PlayStation, et le reste de l’espace pour votre Linux. Bien évidemment, le formattage effacera toutes les données se trouvant sur votre disque dur! Pensez à utiliser l’utilitaire de sauvegarde qui vous permettra de sauver les données se trouvant sur le disque dur vers une clé USB ou un disque dur externe. Notez que certaines données ne seront pas sauvegardées. Comme par exemples des fichiers protégés, des vidéos ou fichiers musicaux sous DRM, et peut-être certaines sauvegardes de jeux.

Téléchargements et gravure

Il vous faudra télécharger et graver une image iso du Live CD de Gentoo. Vous aurez également besoin du « stage 4″. Choisissez un miroir proche de chez vous via la liste officielle de mirroirs Gentoo. Depuis le miroir sélectionné, téléchargez les fichiers suivants:
/experimental/ppc64/livecd/installcd-ps3-minimal-[XXXXX].iso
/experimental/ppc64/livecd/installcd-ps3-minimal-[XXXXX].iso.DIGESTS
/experimental/ppc64/stages/stage4-970-ps3_64ul.tar.bz2
/experimental/ppc64/stages/stage4-970-ps3_64ul.tar.bz2.DIGESTS

Il vous est loisible de télécharger les versions 32 bits des fichiers Stage 4, mais ce guide utilisant les fichiers 64 bits, je ne peux pas vous aidez si vous décidez d’installer les fichiers 32 bits. Thériquement, la plupart des outils disponibles en version 32 bits fonctionneront également en 64 bits.


Le téléchargement du fichier « stage 4″ est facultatif. Il pourra être téléchargé plus tard, directement depuis la PS3. Téléchargez le maintenant si vous manquez de temps et disposez d’une clé USB avec assez d’espace libre ou d’une profusion de CD vierges ;)

Rendez vous dans le répertoire où vous avez téléchargé ces différents fichiers. Pour vérifier s’ils ont été téléchargés sans erreur, comparez le hachage MD5 (ou SHA1) de ces fichiers avec ceux indiqués dans les fichiers .DIGEST correspondants.

1
2
3
4
5
6
7
ThaNerd@ThaNerd: ~ $ cat stage4-970-ps3_64ul.tar.bz2.DIGESTS<br />
# MD5 HASH<br />
54c4a5d5abb2a2dfec929904f1e92edf  stage4-970-ps3_64ul.tar.bz2<br />
# SHA1 HASH<br />
cea6312382164f0ec742b16fae755f5d7fe77595  stage4-970-ps3_64ul.tar.bz2<br />
ThaNerd@ThaNerd: ~ $ md5sum stage4-970-ps3_64ul.tar.bz2<br />
54c4a5d5abb2a2dfec929904f1e92edf  stage4-970-ps3_64ul.tar.bz2

Ensuite, vient l’heure de la gravure. Vous devrez impérativement graver le LiveCD. Je ne vous expliquerai pas comment graver le .iso, car ce n’est pas le thème de ce tutoriel. Sous Windows, il vous suffit d’utiliser n’importe quel logiciel, et sous un Linux, en supposant que vous disposiez des droits idoïnes, cdrecord devrait suffir.
Gravez l’image LiveCD, soit installcd-ps3-minimal-[xxxxxx].iso, et éventuellement, copiez le fichier stage4 vers votre clé USB.

L’installation sur la PS3

Insérez simplement le cd fraîchement gravé dans le lecteur de la PS3, et naviguez dans le XMB vers Paramètres () / Paramètres système () / Installer autre système d’exploitation. Le système cherchera l’installeur et vous montrera les informations données par l’installeur. Démarrez ainsi l’installeur. N’Ã?TEIGNEZ PAS LA CONSOLE TANT QUE CETTE OPÃ?RATION N’EST PAS TERMINÃ?E!
Voir cette rubrique dans la documentation officielle
La console redémarera sous le nouvel OS qui n’est pas encore vraiment installé.

Lors de l’affichage de l’invite kboot:, utilisez la touche tabulation pour afficher « gentoo»  et faites « entrée» .
Le système bootera donc le LiveCD. Une fois arrivé au terme de ce boot, l’invite sous root s’affichera. La première étape consiste à charger le mappage clavier correspondant à votre clavier.

1
find /usr/share/keymaps/i386/azerty

Vous devez probablement avoir un clavier soit français, soit belge. L’un des points pour reconnaître l’un de l’autre est le caractère « backslash» . Sur un clavier français, il se trouve sur la touche « 8″, et sur un clavier belge il se trouve sur la même touche que < et >, à gauche du W.
Dans mon cas, je charge le layout belge comme ceci:

1
loadkeys be-latin1

Ensuite il est temps de manipuler le disque dur, le partitionner. Donner des instructions précises est difficile, alors je vais vous faire un copier-coller de l’affichage que cela doit vous donner:

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
livecd ~ # fdisk /dev/ps3da</p>
<p>The number of cylinders for this disk is set to 1305.<br />
There is nothing wrong with that, but this is larger than 1024,<br />
and could in certain setups cause problems with:<br />
1) software that runs at boot time (e.g., old versions of LILO)<br />
2) booting and partitioning software from other OSs<br />
   (e.g., DOS FDISK, OS/2 FDISK)</p>
<p>Command (m for help): n<br />
Command action<br />
   e   extended<br />
   p   primary partition (1-4)<br />
p<br />
Partition number (1-4): 1<br />
First cylinder (1-1305, default 1):<br />
Using default value 1<br />
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): +9000M</p>
<p>Command (m for help): n<br />
Command action<br />
   e   extended<br />
   p   primary partition (1-4)<br />
p<br />
Partition number (1-4): 2<br />
First cylinder (1096-1305, default 1096):<br />
Using default value 1096<br />
Last cylinder or +size or +sizeM or +sizeK (1096-1305, default 1305):<br />
Using default value 1305</p>
<p>Command (m for help): t<br />
Partition number (1-4): 2<br />
Hex code (type L to list codes): 82<br />
Changed system type of partition 2 to 82 (Linux swap / Solaris)<br />
Command (m for help): a<br />
Partition number (1-4): 1<br />
Command (m for help): p</p>
<p>Disk /dev/ps3da: 10.7 GB, 10737414144 bytes<br />
255 heads, 63 sectors/track, 1305 cylinders<br />
Units = cylinders of 16065 * 512 = 8225280 bytes</p>
<p>     Device Boot      Start         End      Blocks   Id  System<br />
/dev/ps3da1  *            1        1095     8795556   83  Linux<br />
/dev/ps3da2            1096        1305     1686825   82  Linux swap / Solaris</p>
<p>Command (m for help): w<br />
The partition table has been altered!</p>
<p>Calling ioctl() to re-read partition table.</p>
<p>WARNING: Re-reading the partition table failed with error 16: Device or resource busy.<br />
The kernel still uses the old table.<br />
The new table will be used at the next reboot.<br />
Syncing disks.<br />
livecd ~ #

Ces deux nouveaux systèmes de fichiers doivent maintenant être formattés.

1
2
3
mkfs.ext3 -j /dev/ps3da1<br />
mkswap /dev/ps3da2<br />
swapon /dev/ps3da2

On peut maintenant préparer le « chrootage» . L’opération consiste à changer la racine théorique du système de fichiers pour que les opérations sur le disque se fassent là où devront se trouver les fichiers.

1
2
mount /dev/ps3da1 /mnt/gentoo<br />
cd /mnt/gentoo

Si vous avez téléchargé le stage 4 tout à l’heure et l’avez mis sur votre clé USB, branchez la maintenant, et montez la:

1
2
mkdir /mnt/usb<br />
mount /dev/sda1 /mnt/usb

Puis décompressez l’image vers la racine de chrootage

1
2
cd /mnt/gentoo<br />
tar -xjpf /mnt/usb/stage4-ppc64-ps3_32ul.tar.bz2

TODO attention l’étape ci-dessus n’a PAS Ã?TÃ? VÃ?RIFIÃ?E

Sinon, téléchargez le maintenant via links:

1
2
cd /mnt/gentoo/<br />
links2 http://gentoo.osuosl.org/experimental/ppc64/stages/

Utilisez la touche « bas»  de votre clavier pour sélectionner le fichier et appuyez ensuite la touche D pour que links vous propose de télécharger le fichier. Une fois le téléchargement des fichiers .tar.bz2 et .DIGESTS terminés, quittez avec la touche Q puis Y pour confirmer. Enfin, lancez la décompression du fichier stage vers la racine de chrootage (où vous devez déjà être)

1
tar -xjpf stage4-ppc64-ps3_32ul.tar.bz2

Montez maintenant les systèmes de fichiers spéciaux Procfs et /dev. Copiez également le fichier resolv.conf

1
2
3
mount -t proc none /mnt/gentoo/proc<br />
mount -o bind /dev /mnt/gentoo/dev<br />
cp /etc/resolv.conf /mnt/gentoo/etc

On peut enfin chrooter et travailler sur le système semi-définitif.

1
2
3
chroot /mnt/gentoo/ /bin/bash<br />
env-update && source /etc/profile<br />
export PS1="(chroot) $PS1"

On peut alors faire une première mise à jour de l’arbre portage via emerge.

1
emerge --sync

Cette étape est assez longue, selon votre vitesse de connexion.

C’est presque fini. Il reste à configurer l’heure (c’est important…), et surtout à configurer le bootage.

1
2
ls /usr/share/zoneinfo<br />
cp /usr/share/zoneinfo/Europe/Brussels

Otheros, l’image qui sert à booter le système, dépend de l’affectation d’un label à la racine du système de fichiers. Ce que l’on va faire maintenant.

1
e2label /dev/ps3da1 /

Puis on va configurer kboot.

1
2
3
cd /etc<br />
cp kboot.conf.example kboot.conf<br />
nano -w kboot.conf

Lisez les commentaires dans le fichier, éditez ce qui doit l’être, et sauvegardez en faisant Ctrl+O puis Enter, et quittez par Ctrl+X

Ensuite vient le temps d’éditer fstab, qui est le système qui permet de gérer les points de montage…
Voici le mien:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#<br />
# noatime turns off atimes for increased performance (atimes normally aren't<br />
# needed; notail increases performance of ReiserFS (at the expense of storage<br />
# efficiency).  It's safe to drop the noatime options if you want and to<br />
# switch between notail / tail freely.<br />
#<br />
# The root filesystem should have a pass number of either 0 or 1.<br />
# All other filesystems should have a pass number of 0 or greater than 1.<br />
#<br />
# See the manpage fstab(5) for more information.<br />
#</p>
<p># <fs>                  <mountpoint>    <type>          <opts>          <dump/pass></p>
<p># NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.<br />
/dev/ps3da1             /               ext3            noatime         0 1<br />
/dev/ps3da2             none            swap            sw              0 0<br />
/dev/sr0                /mnt/cdrom      iso9660         noauto,ro       0 0<br />
# NOTE: The next line is critical for boot!<br />
proc                    /proc           proc            defaults        0 0</p>
<p># glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for<br />
# POSIX shared memory (shm_open, shm_unlink).<br />
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will<br />
#  use almost no memory if not populated with files)<br />
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec     0 0<br />
none    /spu    spufs   default    0 0

Reste a créer un mot de passe root et à créer un utilisateur.

1
passwd

Cette commande vous invitera a taper deux fois le mot de passe à mettre. N’OUBLIEZ PAS CE MOT DE PASSE! En cas d’oubli, il n’y a aucun moyen de le récupérer…

Créez enfin un utilisateur et donnez lui aussi un mot de passe…

1
2
useradd -m -G users,wheel,audio,games -s /bin/bash david<br />
passwd david

Voilà, c’est fini! Avant de redémarrer la console, n’oubliez pas de sortir du chroot et de démonter les points de montage. Et pendant que la console redémarre, enlevez le cd du lecteur…

1
2
3
4
5
6
(chroot) etc # exit<br />
exit<br />
livecd mnt # cd /mnt/<br />
livecd mnt # umount gentoo/proc/ gentoo/dev/ gentoo/<br />
livecd mnt # umount /mnt/usb/<br />
livecd mnt # reboot

Le système redémarera sous linux. Lors du premier démarrage, j’ai eu quelques messages d’erreur, puis il a rebooté une deuxième fois, et là ca a été tout seul.

Reste à configurer quelques petites choses du quotidien…
Si vous êtes sous une interface graphique (j’étais sous XFCE4, c’était très laid ;D), passez sur la console en appuyant sur Ctrl+Alt+F1, et connectez-vous en tant que root. Si l’invite refuse votre mot de passe, pensez bien que pour l’instant, le clavier est toujours configuré en QWERTY américain…

C’est la première chose que vous allez corriger. Utilisez loadkeys, comme au début de ce tutoriel, et testez quelques caractères spéciaux pour voir si tout va bien. Si c’est le cas, éditez /etc/conf.d/keymaps avec nano, et indiquez le mappage à utiliser dans la directive KEYMAP=.
Ensuite, éditez /etc/conf.d/consolefont, où vous indiquerez « lat9w-16″…

Une dernière indication avant de clore ce tutoriel: pour redémarer la PS3 « normalement»  et arriver au XMB, tapez dans la console « ps3-»  et utilisez la touche tabulation pour afficher la liste des exécutables disponibles…

A bientot pour un autre tutoriel pour utiliser linux sous PS3!



Gentoo sur ma PS3

29 12 2007

Je viens d’avoir une PS3 pour mon anniversaire. Étant utilisateur de Linux, j’ai entendu parler de la possibilité d’installer linux sur une PS3. Au départ j’étais plutot méfiant. Je m’attendais à une manipulation relativement douteuse et risquée, par exemple, démonter le disque dur interne de la PS3, le brancher sur un pc, et faire une installation aveugle, puis remettre le disque dur en place…

Puis j’ai vu dans le XMB qu’il y a une fonction « installer un autre OS» … J’ai donc fait une petite recherche sur le net, et le premier résultat donnait Fedora 8, avec un tutoriel assez long. J’ai suivi les instruction à la lettre, jusqu’au moment où j’ai été bloqué. En fait la commande mkisofs me donnait un message d’erreur: « /usr/bin/mkisofs: /usr/lib/siconv/ missing» . Donc je suis allé voir s’il existait une Gentoo appropriée.

Et c’est le cas!

Dès que j’aurai terminé, je publierai un tutoriel dans la catégorie tutoriaux.



S’héberger soi-même

20 12 2007

Faire un site web, c’est bien. Le rendre disponible au public, c’est mieux. Parfois, on peut avoir besoin de fonctionnalités assez avancées, de droits quasi illimités dans l’administration du serveur. Généralement ces fonctionnalités et droits ne sont accessibles que si l’on prend un serveur dédié, ce qui est généralement assez cher.

Il reste donc la solution de s’héberger soi-même. C’est tout à fait possible et vous en avez la preuve sous les yeux. Le pc qui sert la page que vous lisez se trouve à mes pieds.

Je vais ici expliquer toutes les phases, tous les éléments nécessaires, les logiciels à utiliser… Je vais citer mon cas précis, indiquer ce que MOI j’utilise, mais essayer de donner des pistes sur les alternatives possibles. Je travaille principalement sous Linux, mais je donnerai aussi des infos sur le monde Windows que j’ai quitté il y a seulement quelques mois.

Ma configuration

Mon site web est hébergé sur un serveur sous Linux Gentoo. J’ai également un PC sous Windows et un PC portable sous Gentoo. Les trois PC sont connectés ensemble via un modem-routeur qui gère à la fois Ethernet et wifi. Ce modem-routeur se connecte à mon ISP qui me fournit des IP dynamiques sur des plages très variées.

Le but

Le but est de monter un système qui me permette de faire tourner un serveur web, d’avoir tous les droits sur celui-ci, et d’utiliser la connectivité de mon abonnement ADSL pour faire tourner l’ensemble, sans autres frais concernant l’hébergement. Je voudrais aussi pouvoir faire tourner en fait plusieurs sites web différents, et que chacun d’eux soit accessible universellement via un nom de domaine.

Les pièces du puzzle

La première pièce est bien entendu le serveur. J’y ai installé Linux Gentoo comme système d’exploitation. Je l’ai choisi pour plusieurs raisons. Premièrement parce qu’il est un Linux basé sur les sources plutot que sur des binaires. Ce qui permet d’avoir des logiciels optimisés pour mon matériel et en particulier pour mon processeur. Et quand on utilise une petite machine, ancienne, ce n’est pas négligeable. La seconde raison est que lors de l’installation de Gentoo, l’installation est minimale. Il n’installe automatiquement que le strict nécessaire, et rien de superflu. A chacun de choisir ce qu’il veut installer.

La pièce suivante est mon modem-routeur. J’ai pas vraiment eu de choix à faire, mon ISP m’en a fourni un, et je dois utiliser celui là pour la simple raison que j’ai la télé via ce même modem. Rien de particulier, c’est un Philips, il a 4 ports RJ-45 et il prend en charge le Wi-Fi… Il se configure via une interface web accessible uniquement depuis mon réseau local.

Une autre pièce importante, c’est le PC qui me sert à gérer le serveur. En effet, je n’ai ni écran, ni souris, ni clavier branchés sur cet ordinateur là. Je fais tout ce qu’il y a à faire via SSH… Je me sers aussi de ce pc pour accéder à mon site, et écrire les articles que j’y publie. Là, j’ai en fait deux PC. L’un sous Gentoo, sur lequel j’ai posé Gnome, et l’autre sous Vista.

Enuite il y a le nom de domaine. Je l’a acheté depuis quelques années chez Dotster.com pour un prix « normal» . Pas vraiment d’argent à gagner dans le fait de fouiller le net pour trouver le meilleur prix. A moins de vouloir enregistrer des dizaines de domaines, le premier venu sera le bon…

Et enfin la dernière pièce, qui a mis pas mal de temps à apparaître sur le net et qui malgré tout es indispensable, le serveur DNS dynamique. Mon choix s’est porté sur DynDNS.org. A l’époque, j’avais comparé pas mal de services similaires. En termes de qualité, tous sont à peu près équivalents. Ce qui m’a plu chez eux est que leur option tarifaire propose un service « Ã  vie» . J’ai déboursé 25$ il y a 5 ans, et depuis, je n’ai plus payé un centime…

Les étapes

Les deux premières étapes vous feront sortir le portefeuilles. Comptez un peu moins de 50$. Au taux actuel du dollar face à l’euro, ca fait pas grand chose…

Il vous faudra donc d’abord acheter le nom de domaine, et ensuite le service de DNS dynamique. Le service de DNS dynamique vous donnera une série de noms de domaines à utiliser. Ces domaines hébergent leurs « Name Servers» , et généralement sont ns1.example.com, ns2.example.com etc. Vous devrez renseigner ces adresses au vendeur du nom de domaine, afin que celui ci affecte le DNS au domaine que vous avez acheté. Même dans le cas de services automatisés, cela prend généralement quelques jours…

Une fois que votre nom de domaine aura été paramétré, vous pourrez commencer à paramétrer les hostnames dans votre page d’administration chez le provider de DNS dynamiques. Le plus simple pour commencer est de mettre un champs de type A pour DOMAINE.COM et un champs de type CNAME pour chaque sous-domaine (hôte) que vous souhaitez avoir… Par exemple, vous pourriez faire un CNAME de www.domain.com vers domain.com…

J’espère qu’entre-temps, vous avez pris la peine d’installer votre serveur et d’y mettre Apache… Si ce n’est fait, commencez par installer Gentoo en suivant le « howto« , et ensuite suivez cet autre Howto. Ce que vous allez installer est communément surnommé un « LAMP» , pour les initiales de « Linux» , « Apache» , « MySQL»  et enfin au choix « Perl» , « PHP»  ou « Python» . Cette phase m’a pris un samedi entier, et c’était ma première installation d’un Linux depuis environs 8 ans. Donc on ne peut pas dire que ce soit particulièrement compliqué…

Une fois Apache installé, il faudra le configurer. Je vous conseille de faire une page toute simple sur le site « par défaut» , et ensuite de faire usage des VirtualHosts pour chaque site réel, en particulier le « www» .

Ensuite vient le tour de l’utilitaire de mise à jour de votre IP. Rapelez-vous que votre IP change de temps en temps au gré des déconnexions de votre routeur. Et bien entendu, le service DNS ne peut pas deviner votre nouvelle adresse IP… Vous allez donc devoir installer un petit logiciel qui va de temps en temps aller vérifier quelle est votre adresse IP, et au cas où elle a changé depuis la dernière vérification, le client va aller annoncer cette nouvelle IP à votre service DNS dynamique. Généralement, chaque service vous permettra de télécharger divers clients pour tous les systèmes d’exploitation. Le mien se nomme DDClient, et je ne pourrai pas vous aider si vous en utilisez un autre. Le logiciel doit être assez simple et vous ne devriez pas avoir trop de mal à l’installer de façon résidente sur votre serveur.

Il faut ensuite configurer votre routeur. En effet, celui-ci recevra des requètes de connexion sur le port 80, mais ne saura pas les gérer. Vous devrez donc indiquer de rediriger ces requètes vers votre serveur. Malheureusement, chaque modèle de routeur a ses propres configurations, et il m’est donc impossible de vous indiquer précisément la marche à suivre.

Reste à tester… Faites une petite page vite fait, tapez l’adresse de votre site dans la barre d’adresse de votre navigateur préféré, et voyez le résultat. Rien. Et oui, le monde entier peut savoir que « www.domaine.com»  est sur votre serveur, mais vous-même, vous ne le savez pas! Sur le serveur, éditez /etc/hosts. A la fin de ce fichier, ajoutez deux lignes comme celles-cis:

1
2
127.0.0.1        domain.com
127.0.0.1        www.domain.com

Testez à nouveau depuis votre serveur, et ça devrait marcher…

Ensuite, testez depuis un autre ordinateur de votre réseau… Encore une fois, ça ne marche pas… Normal… Votre pc va questionner un serveur DNS qui lui donnera vore adresse IP. Mais vous ne pouvez pas accéder a votre propre réseau via cette adresse, de l’intérieur. Donc… Sur le serveur, tapez « ifconfig»  pour connaitre son IP réseau, et sur l’autre ordinateur, éditez le même fichier « hosts» , mais en remplaçant 127.0.0.1 par l’ip donnée par le serveur…

Pour être sûr que tout marche, demandez à un ami de venir voir votre site… S’il voit « quelquechose» , il verra certainement la même chose que vous…

Pour toutes questions, n’hésitez pas à les poser en commentaire, que vos questions et mes réponses soient visibles par tous!