]> pere.pagekite.me Git - homepage.git/blob - blog/archive/2011/11/index.html
Generated.
[homepage.git] / blog / archive / 2011 / 11 / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: entries from November 2011</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="11.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <!-- XML FEED -->
13 <div class="title">
14 <h1>
15 <a href="http://www.hungry.com/~pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <h3>Entries from November 2011.</h3>
23
24 <div class="entry">
25 <div class="title">
26 <a href="http://www.hungry.com/~pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html">Automatically upgrading server firmware on Dell PowerEdge</a>
27 </div>
28 <div class="date">
29 21st November 2011
30 </div>
31 <div class="body">
32 <p>At work we have heaps of servers. I believe the total count is
33 around 1000 at the moment. To be able to get help from the vendors
34 when something go wrong, we want to keep the firmware on the servers
35 up to date. If the firmware isn't the latest and greatest, the
36 vendors typically refuse to start debugging any problems until the
37 firmware is upgraded. So before every reboot, we want to upgrade the
38 firmware, and we would really like everyone handling servers at the
39 university to do this themselves when they plan to reboot a machine.
40 For that to happen we at the unix server admin group need to provide
41 the tools to do so.</p>
42
43 <p>To make firmware upgrading easier, I am working on a script to
44 fetch and install the latest firmware for the servers we got. Most of
45 our hardware are from Dell and HP, so I have focused on these servers
46 so far. This blog post is about the Dell part.</P>
47
48 <p>On the Dell FTP site I was lucky enough to find
49 <a href="ftp://ftp.us.dell.com/catalog/Catalog.xml.gz">an XML file</a>
50 with firmware information for all 11th generation servers, listing
51 which firmware should be used on a given model and where on the FTP
52 site I can find it. Using a simple perl XML parser I can then
53 download the shell scripts Dell provides to do firmware upgrades from
54 within Linux and reboot when all the firmware is primed and ready to
55 be activated on the first reboot.</p>
56
57 <p>This is the Dell related fragment of the perl code I am working on.
58 Are there anyone working on similar tools for firmware upgrading all
59 servers at a site? Please get in touch and lets share resources.</p>
60
61 <p><pre>
62 #!/usr/bin/perl
63 use strict;
64 use warnings;
65 use File::Temp qw(tempdir);
66 BEGIN {
67 # Install needed RHEL packages if missing
68 my %rhelmodules = (
69 'XML::Simple' => 'perl-XML-Simple',
70 );
71 for my $module (keys %rhelmodules) {
72 eval "use $module;";
73 if ($@) {
74 my $pkg = $rhelmodules{$module};
75 system("yum install -y $pkg");
76 eval "use $module;";
77 }
78 }
79 }
80 my $errorsto = 'pere@hungry.com';
81
82 upgrade_dell();
83
84 exit 0;
85
86 sub run_firmware_script {
87 my ($opts, $script) = @_;
88 unless ($script) {
89 print STDERR "fail: missing script name\n";
90 exit 1
91 }
92 print STDERR "Running $script\n\n";
93
94 if (0 == system("sh $script $opts")) { # FIXME correct exit code handling
95 print STDERR "success: firmware script ran succcessfully\n";
96 } else {
97 print STDERR "fail: firmware script returned error\n";
98 }
99 }
100
101 sub run_firmware_scripts {
102 my ($opts, @dirs) = @_;
103 # Run firmware packages
104 for my $dir (@dirs) {
105 print STDERR "info: Running scripts in $dir\n";
106 opendir(my $dh, $dir) or die "Unable to open directory $dir: $!";
107 while (my $s = readdir $dh) {
108 next if $s =~ m/^\.\.?/;
109 run_firmware_script($opts, "$dir/$s");
110 }
111 closedir $dh;
112 }
113 }
114
115 sub download {
116 my $url = shift;
117 print STDERR "info: Downloading $url\n";
118 system("wget --quiet \"$url\"");
119 }
120
121 sub upgrade_dell {
122 my @dirs;
123 my $product = `dmidecode -s system-product-name`;
124 chomp $product;
125
126 if ($product =~ m/PowerEdge/) {
127
128 # on RHEL, these pacakges are needed by the firwmare upgrade scripts
129 system('yum install -y compat-libstdc++-33.i686 libstdc++.i686 libxml2.i686 procmail');
130
131 my $tmpdir = tempdir(
132 CLEANUP => 1
133 );
134 chdir($tmpdir);
135 fetch_dell_fw('catalog/Catalog.xml.gz');
136 system('gunzip Catalog.xml.gz');
137 my @paths = fetch_dell_fw_list('Catalog.xml');
138 # -q is quiet, disabling interactivity and reducing console output
139 my $fwopts = "-q";
140 if (@paths) {
141 for my $url (@paths) {
142 fetch_dell_fw($url);
143 }
144 run_firmware_scripts($fwopts, $tmpdir);
145 } else {
146 print STDERR "error: Unsupported Dell model '$product'.\n";
147 print STDERR "error: Please report to $errorsto.\n";
148 }
149 chdir('/');
150 } else {
151 print STDERR "error: Unsupported Dell model '$product'.\n";
152 print STDERR "error: Please report to $errorsto.\n";
153 }
154 }
155
156 sub fetch_dell_fw {
157 my $path = shift;
158 my $url = "ftp://ftp.us.dell.com/$path";
159 download($url);
160 }
161
162 # Using ftp://ftp.us.dell.com/catalog/Catalog.xml.gz, figure out which
163 # firmware packages to download from Dell. Only work for Linux
164 # machines and 11th generation Dell servers.
165 sub fetch_dell_fw_list {
166 my $filename = shift;
167
168 my $product = `dmidecode -s system-product-name`;
169 chomp $product;
170 my ($mybrand, $mymodel) = split(/\s+/, $product);
171
172 print STDERR "Finding firmware bundles for $mybrand $mymodel\n";
173
174 my $xml = XMLin($filename);
175 my @paths;
176 for my $bundle (@{$xml->{SoftwareBundle}}) {
177 my $brand = $bundle->{TargetSystems}->{Brand}->{Display}->{content};
178 my $model = $bundle->{TargetSystems}->{Brand}->{Model}->{Display}->{content};
179 my $oscode;
180 if ("ARRAY" eq ref $bundle->{TargetOSes}->{OperatingSystem}) {
181 $oscode = $bundle->{TargetOSes}->{OperatingSystem}[0]->{osCode};
182 } else {
183 $oscode = $bundle->{TargetOSes}->{OperatingSystem}->{osCode};
184 }
185 if ($mybrand eq $brand && $mymodel eq $model && "LIN" eq $oscode)
186 {
187 @paths = map { $_->{path} } @{$bundle->{Contents}->{Package}};
188 }
189 }
190 for my $component (@{$xml->{SoftwareComponent}}) {
191 my $componenttype = $component->{ComponentType}->{value};
192
193 # Drop application packages, only firmware and BIOS
194 next if 'APAC' eq $componenttype;
195
196 my $cpath = $component->{path};
197 for my $path (@paths) {
198 if ($cpath =~ m%/$path$%) {
199 push(@paths, $cpath);
200 }
201 }
202 }
203 return @paths;
204 }
205 </pre>
206
207 <p>The code is only tested on RedHat Enterprise Linux, but I suspect
208 it could work on other platforms with some tweaking. Anyone know a
209 index like Catalog.xml is available from HP for HP servers? At the
210 moment I maintain a similar list manually and it is quickly getting
211 outdated.</p>
212
213 </div>
214 <div class="tags">
215
216
217 Tags: <a href="http://www.hungry.com/~pere/blog/tags/debian">debian</a>, <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>.
218
219
220 </div>
221 </div>
222 <div class="padding"></div>
223
224 <div class="entry">
225 <div class="title">
226 <a href="http://www.hungry.com/~pere/blog/St_tt_Digitalt_Personvern_.html">Støtt Digitalt Personvern!</a>
227 </div>
228 <div class="date">
229 9th November 2011
230 </div>
231 <div class="body">
232 <p>Datalagringsdirektivet er et grotesk angrep på rettsstaten og da
233 det ble vedtatt i Stortinget ble det klart at alle som mener det
234 liberale demokrati bør forsvares måtte stå sammen for å kjempe tilbake
235 de totalitære strømninger i landet. Jeg ble derfor glad over å se at
236 den nyopprettede foreningen Digitalt Personvern startet innsamling
237 2011-10-18 for å gå til sak for å få prøvd lovligheten av direktivet.
238 Direktivet er så langt prøvd for retten i flere land, blant annet
239 Tsjekkia, Romania og Tyskland, og så vidt jeg vet har det hver gang
240 blitt kjent ulovlig av høyesterett eller forfatningsdomstolen i
241 landene. Jeg håper og tror det samme vil skje her i Norge.</p>
242
243 <p>Men for å finne ut av det må det finansiering til. Foreningen
244 Digitalt Personvern tror det trengs minst 2 millioner kroner for å gå
245 til sak og følge saken helt til ende, og i går fikk jeg endelig tid
246 til å overføre min skjerv. Jeg har overført 3000,- til kampanjen, og
247 oppfordrer hver og en av mine lesere å overføre minst like mye.</p>
248
249 <p>Besøk
250 <a href="http://www.digitaltpersonvern.no/bidra/">donasjonssiden</a>
251 til Digitalt Personvern for å finne kontonummer som kan brukes for å
252 bidra.</p>
253
254 <p>Jeg rekker ikke skrive så mye om hvorfor datalagringsdirektivet må
255 stoppes, så jeg nøyer meg denne gangen med en liten liste med lenker
256 til aktuelle artikler og innlegg om temaet.</p>
257
258 <ul>
259
260 <li><a href="http://www.uhuru.biz/?p=662">Skal Telenor forsvare statens
261 bevisregister i retten?</a> - bloggen til Jon Wessel-Aas,
262 bidragsyter til foreningen Digitalt Personvern</li>
263
264 <li><a href="http://voxpublica.no/2011/10/varslere-bør-støtte-kampanjen-digital-personvern/">Varslere
265 bør støtte kampanjen Digitalt Personvern</a> - Vox Publica</li>
266
267 <li><a href="http://www.digi.no/880520/georg-apenes-starter-%ABdigitalt-personvern%BB">Georg
268 Apenes starter «Digitalt personvern»</a> - Digi.no</li>
269
270 <li><a href="http://blogg.abrenna.com/foredrag-om-digitalt-personvern/">Foredrag
271 om Digitalt Personvern</a> - bloggen til Anders Brenna, styremedlem
272 i foreningen Digitalt Personvern</li>
273
274 <li><a href="http://www.nationen.no/2011/10/17/politikk/datalagringsdirektivet/eu/eu-direktiv/regjeringen/6990171/">Organisasjon
275 vil prøve datalagringsdirektivet for retten</a> - artikkel i Nationen</li>
276
277 <li><a href="http://www.hungry.com/~pere/blog/Martin_Bekkelund__En_stille_b_nn_om_Datalagringsdirektivet.html">Martin
278 Bekkelund: En stille bønn om Datalagringsdirektivet</a> - min
279 blogg</li>
280
281 <li><a href="http://tversover.wordpress.com/2011/10/21/digitalt-personvern-i-praksis/">Digitalt
282 personvern i praksis</a> - bloggen til Espen Andersen</li>
283
284 <li><a href="http://www.dagbladet.no/2011/10/22/kultur/data_og_teknologi/datalagringsdirektivet/tekno/personvern/18692696/">Tar
285 kampen for personvernet til rettsalen</a> - Dagbladet</li>
286
287 </ul>
288
289 </div>
290 <div class="tags">
291
292
293 Tags: <a href="http://www.hungry.com/~pere/blog/tags/dld">dld</a>, <a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk</a>, <a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern</a>.
294
295
296 </div>
297 </div>
298 <div class="padding"></div>
299
300 <div class="entry">
301 <div class="title">
302 <a href="http://www.hungry.com/~pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK.html">Hvordan enkelt laste ned filmer fra NRK</a>
303 </div>
304 <div class="date">
305 5th November 2011
306 </div>
307 <div class="body">
308 <p>Ofte har jeg lyst til å laste ned et innslag fra NRKs nettsted for
309 å se det senere når jeg ikke er på nett, eller for å ha det
310 tilgjengelig når jeg en gang i fremtiden ønsker å referere til
311 innslaget selv om NRK har fjernet det fra sine nettsider. I dag fant
312 jeg et lite script som fikser jobben.</p>
313
314 <p>Scriptet er laget av Jan Henning Thorsen og tilgjengelig fra
315 <a href="http://jhthorsen.github.com/snippets/nrk-downloader/">github</a>,
316 og gjør det veldig enkelt å laste ned. Kjør <tt>nrk-downloader.sh
317 http://www1.nrk.no/nett-tv/klipp/582810</tt> for å hente ned et enkelt
318 innslag eller <tt>nrk-downloader.sh
319 http://www1.nrk.no/nett-tv/kategori/3521</tt> for å laste ned alle
320 episodene i en serie.</p>
321
322 <p>Det er ikke rakettforskning å laste ned NRK-"strømmer", og
323 tidligere gjorde jeg dette manuelt med mplayer. Scriptet til
324 Hr. Thorsen gjør det raskere og enklere for meg, men jeg vil ikke si
325 at det er en revolusjonerende løsning. Jeg mener jo fortsatt at
326 påstanden fra NRKs ansatte om at det er
327 <a href="http://www.hungry.com/~pere/blog/Best___ikke_fortelle_noen_at_streaming_er_nedlasting___.html">vesensforskjellig
328 å legge tilgjengelig for nedlasting og for streaming</a> er
329 meningsløs.</p>
330
331 </div>
332 <div class="tags">
333
334
335 Tags: <a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia</a>, <a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk</a>, <a href="http://www.hungry.com/~pere/blog/tags/video">video</a>, <a href="http://www.hungry.com/~pere/blog/tags/web">web</a>.
336
337
338 </div>
339 </div>
340 <div class="padding"></div>
341
342 <p style="text-align: right;"><a href="11.rss"><img src="http://www.hungry.com/~pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
343 <div id="sidebar">
344
345
346
347 <h2>Archive</h2>
348 <ul>
349
350 <li>2025
351 <ul>
352
353 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/01/">January (4)</a></li>
354
355 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/02/">February (3)</a></li>
356
357 </ul></li>
358
359 <li>2024
360 <ul>
361
362 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/01/">January (1)</a></li>
363
364 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/02/">February (1)</a></li>
365
366 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/03/">March (2)</a></li>
367
368 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/04/">April (3)</a></li>
369
370 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/05/">May (1)</a></li>
371
372 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/06/">June (1)</a></li>
373
374 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/07/">July (2)</a></li>
375
376 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/12/">December (1)</a></li>
377
378 </ul></li>
379
380 <li>2023
381 <ul>
382
383 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/01/">January (3)</a></li>
384
385 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/02/">February (1)</a></li>
386
387 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/04/">April (2)</a></li>
388
389 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/05/">May (3)</a></li>
390
391 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/06/">June (1)</a></li>
392
393 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/08/">August (1)</a></li>
394
395 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/09/">September (1)</a></li>
396
397 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/10/">October (1)</a></li>
398
399 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/11/">November (4)</a></li>
400
401 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/12/">December (1)</a></li>
402
403 </ul></li>
404
405 <li>2022
406 <ul>
407
408 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/02/">February (1)</a></li>
409
410 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/03/">March (3)</a></li>
411
412 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/04/">April (2)</a></li>
413
414 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/06/">June (2)</a></li>
415
416 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/07/">July (1)</a></li>
417
418 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/09/">September (1)</a></li>
419
420 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/10/">October (1)</a></li>
421
422 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/12/">December (1)</a></li>
423
424 </ul></li>
425
426 <li>2021
427 <ul>
428
429 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/01/">January (2)</a></li>
430
431 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/02/">February (1)</a></li>
432
433 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/05/">May (1)</a></li>
434
435 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/06/">June (1)</a></li>
436
437 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/07/">July (3)</a></li>
438
439 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/08/">August (1)</a></li>
440
441 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/09/">September (1)</a></li>
442
443 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/10/">October (1)</a></li>
444
445 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/12/">December (1)</a></li>
446
447 </ul></li>
448
449 <li>2020
450 <ul>
451
452 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/02/">February (2)</a></li>
453
454 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/03/">March (2)</a></li>
455
456 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/04/">April (2)</a></li>
457
458 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/05/">May (3)</a></li>
459
460 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/06/">June (2)</a></li>
461
462 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/07/">July (1)</a></li>
463
464 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/09/">September (1)</a></li>
465
466 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/10/">October (1)</a></li>
467
468 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/11/">November (1)</a></li>
469
470 </ul></li>
471
472 <li>2019
473 <ul>
474
475 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/01/">January (4)</a></li>
476
477 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/02/">February (3)</a></li>
478
479 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/03/">March (3)</a></li>
480
481 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/05/">May (2)</a></li>
482
483 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/06/">June (5)</a></li>
484
485 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/07/">July (2)</a></li>
486
487 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/08/">August (1)</a></li>
488
489 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/09/">September (1)</a></li>
490
491 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/11/">November (1)</a></li>
492
493 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/12/">December (4)</a></li>
494
495 </ul></li>
496
497 <li>2018
498 <ul>
499
500 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/01/">January (1)</a></li>
501
502 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/02/">February (5)</a></li>
503
504 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/03/">March (5)</a></li>
505
506 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/04/">April (3)</a></li>
507
508 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/06/">June (2)</a></li>
509
510 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/07/">July (5)</a></li>
511
512 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/08/">August (3)</a></li>
513
514 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/09/">September (3)</a></li>
515
516 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/10/">October (5)</a></li>
517
518 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/11/">November (2)</a></li>
519
520 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/12/">December (4)</a></li>
521
522 </ul></li>
523
524 <li>2017
525 <ul>
526
527 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/01/">January (4)</a></li>
528
529 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/02/">February (3)</a></li>
530
531 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/03/">March (5)</a></li>
532
533 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/04/">April (2)</a></li>
534
535 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/06/">June (5)</a></li>
536
537 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/07/">July (1)</a></li>
538
539 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/08/">August (1)</a></li>
540
541 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/09/">September (3)</a></li>
542
543 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/10/">October (5)</a></li>
544
545 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/11/">November (3)</a></li>
546
547 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/12/">December (4)</a></li>
548
549 </ul></li>
550
551 <li>2016
552 <ul>
553
554 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/01/">January (3)</a></li>
555
556 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/02/">February (2)</a></li>
557
558 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/03/">March (3)</a></li>
559
560 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/04/">April (8)</a></li>
561
562 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/05/">May (8)</a></li>
563
564 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/06/">June (2)</a></li>
565
566 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/07/">July (2)</a></li>
567
568 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/08/">August (5)</a></li>
569
570 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/09/">September (2)</a></li>
571
572 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/10/">October (3)</a></li>
573
574 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/11/">November (8)</a></li>
575
576 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/12/">December (5)</a></li>
577
578 </ul></li>
579
580 <li>2015
581 <ul>
582
583 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/01/">January (7)</a></li>
584
585 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/02/">February (6)</a></li>
586
587 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/03/">March (1)</a></li>
588
589 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/04/">April (4)</a></li>
590
591 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/05/">May (3)</a></li>
592
593 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/06/">June (4)</a></li>
594
595 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/07/">July (6)</a></li>
596
597 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/08/">August (2)</a></li>
598
599 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/09/">September (2)</a></li>
600
601 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/10/">October (9)</a></li>
602
603 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/11/">November (6)</a></li>
604
605 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/12/">December (3)</a></li>
606
607 </ul></li>
608
609 <li>2014
610 <ul>
611
612 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/01/">January (2)</a></li>
613
614 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/02/">February (3)</a></li>
615
616 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/03/">March (8)</a></li>
617
618 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/04/">April (7)</a></li>
619
620 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/05/">May (1)</a></li>
621
622 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/06/">June (2)</a></li>
623
624 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/07/">July (2)</a></li>
625
626 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/08/">August (2)</a></li>
627
628 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/09/">September (5)</a></li>
629
630 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/10/">October (6)</a></li>
631
632 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/11/">November (3)</a></li>
633
634 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/12/">December (5)</a></li>
635
636 </ul></li>
637
638 <li>2013
639 <ul>
640
641 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/01/">January (11)</a></li>
642
643 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/02/">February (9)</a></li>
644
645 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/03/">March (9)</a></li>
646
647 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/04/">April (6)</a></li>
648
649 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/05/">May (9)</a></li>
650
651 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/06/">June (10)</a></li>
652
653 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/07/">July (7)</a></li>
654
655 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/08/">August (3)</a></li>
656
657 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/09/">September (5)</a></li>
658
659 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/10/">October (7)</a></li>
660
661 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/11/">November (9)</a></li>
662
663 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/12/">December (3)</a></li>
664
665 </ul></li>
666
667 <li>2012
668 <ul>
669
670 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/01/">January (7)</a></li>
671
672 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/02/">February (10)</a></li>
673
674 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/03/">March (17)</a></li>
675
676 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/04/">April (12)</a></li>
677
678 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/05/">May (12)</a></li>
679
680 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/06/">June (20)</a></li>
681
682 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/07/">July (17)</a></li>
683
684 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/08/">August (6)</a></li>
685
686 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/09/">September (9)</a></li>
687
688 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/10/">October (17)</a></li>
689
690 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/11/">November (10)</a></li>
691
692 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/12/">December (7)</a></li>
693
694 </ul></li>
695
696 <li>2011
697 <ul>
698
699 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/01/">January (16)</a></li>
700
701 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/02/">February (6)</a></li>
702
703 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/03/">March (6)</a></li>
704
705 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/04/">April (7)</a></li>
706
707 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/05/">May (3)</a></li>
708
709 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/06/">June (2)</a></li>
710
711 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/07/">July (7)</a></li>
712
713 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/08/">August (6)</a></li>
714
715 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/09/">September (4)</a></li>
716
717 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/10/">October (2)</a></li>
718
719 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/11/">November (3)</a></li>
720
721 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/12/">December (1)</a></li>
722
723 </ul></li>
724
725 <li>2010
726 <ul>
727
728 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/01/">January (2)</a></li>
729
730 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/02/">February (1)</a></li>
731
732 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/03/">March (3)</a></li>
733
734 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/04/">April (3)</a></li>
735
736 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/05/">May (9)</a></li>
737
738 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/06/">June (14)</a></li>
739
740 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/07/">July (12)</a></li>
741
742 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/08/">August (13)</a></li>
743
744 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/09/">September (7)</a></li>
745
746 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/10/">October (9)</a></li>
747
748 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/11/">November (13)</a></li>
749
750 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/12/">December (12)</a></li>
751
752 </ul></li>
753
754 <li>2009
755 <ul>
756
757 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/01/">January (8)</a></li>
758
759 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/02/">February (8)</a></li>
760
761 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/03/">March (12)</a></li>
762
763 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/04/">April (10)</a></li>
764
765 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/05/">May (9)</a></li>
766
767 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/06/">June (3)</a></li>
768
769 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/07/">July (4)</a></li>
770
771 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/08/">August (3)</a></li>
772
773 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/09/">September (1)</a></li>
774
775 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/10/">October (2)</a></li>
776
777 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/11/">November (3)</a></li>
778
779 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/12/">December (3)</a></li>
780
781 </ul></li>
782
783 <li>2008
784 <ul>
785
786 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/11/">November (5)</a></li>
787
788 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/12/">December (7)</a></li>
789
790 </ul></li>
791
792 </ul>
793
794
795
796 <h2>Tags</h2>
797 <ul>
798
799 <li><a href="http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (19)</a></li>
800
801 <li><a href="http://www.hungry.com/~pere/blog/tags/amiga">amiga (1)</a></li>
802
803 <li><a href="http://www.hungry.com/~pere/blog/tags/aros">aros (1)</a></li>
804
805 <li><a href="http://www.hungry.com/~pere/blog/tags/bankid">bankid (4)</a></li>
806
807 <li><a href="http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (9)</a></li>
808
809 <li><a href="http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (13)</a></li>
810
811 <li><a href="http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (17)</a></li>
812
813 <li><a href="http://www.hungry.com/~pere/blog/tags/bsa">bsa (2)</a></li>
814
815 <li><a href="http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (3)</a></li>
816
817 <li><a href="http://www.hungry.com/~pere/blog/tags/debian">debian (209)</a></li>
818
819 <li><a href="http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (159)</a></li>
820
821 <li><a href="http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
822
823 <li><a href="http://www.hungry.com/~pere/blog/tags/digistan">digistan (11)</a></li>
824
825 <li><a href="http://www.hungry.com/~pere/blog/tags/dld">dld (18)</a></li>
826
827 <li><a href="http://www.hungry.com/~pere/blog/tags/docbook">docbook (33)</a></li>
828
829 <li><a href="http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
830
831 <li><a href="http://www.hungry.com/~pere/blog/tags/english">english (471)</a></li>
832
833 <li><a href="http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
834
835 <li><a href="http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (14)</a></li>
836
837 <li><a href="http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (34)</a></li>
838
839 <li><a href="http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (9)</a></li>
840
841 <li><a href="http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (20)</a></li>
842
843 <li><a href="http://www.hungry.com/~pere/blog/tags/h264">h264 (20)</a></li>
844
845 <li><a href="http://www.hungry.com/~pere/blog/tags/intervju">intervju (43)</a></li>
846
847 <li><a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (21)</a></li>
848
849 <li><a href="http://www.hungry.com/~pere/blog/tags/kart">kart (23)</a></li>
850
851 <li><a href="http://www.hungry.com/~pere/blog/tags/kodi">kodi (6)</a></li>
852
853 <li><a href="http://www.hungry.com/~pere/blog/tags/ldap">ldap (9)</a></li>
854
855 <li><a href="http://www.hungry.com/~pere/blog/tags/lego">lego (5)</a></li>
856
857 <li><a href="http://www.hungry.com/~pere/blog/tags/lenker">lenker (8)</a></li>
858
859 <li><a href="http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (8)</a></li>
860
861 <li><a href="http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (3)</a></li>
862
863 <li><a href="http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (1)</a></li>
864
865 <li><a href="http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (3)</a></li>
866
867 <li><a href="http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (8)</a></li>
868
869 <li><a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (48)</a></li>
870
871 <li><a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (15)</a></li>
872
873 <li><a href="http://www.hungry.com/~pere/blog/tags/noark5">noark5 (27)</a></li>
874
875 <li><a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk (326)</a></li>
876
877 <li><a href="http://www.hungry.com/~pere/blog/tags/nuug">nuug (200)</a></li>
878
879 <li><a href="http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (42)</a></li>
880
881 <li><a href="http://www.hungry.com/~pere/blog/tags/open311">open311 (2)</a></li>
882
883 <li><a href="http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (4)</a></li>
884
885 <li><a href="http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
886
887 <li><a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern (114)</a></li>
888
889 <li><a href="http://www.hungry.com/~pere/blog/tags/raid">raid (4)</a></li>
890
891 <li><a href="http://www.hungry.com/~pere/blog/tags/reactos">reactos (1)</a></li>
892
893 <li><a href="http://www.hungry.com/~pere/blog/tags/reprap">reprap (11)</a></li>
894
895 <li><a href="http://www.hungry.com/~pere/blog/tags/rfid">rfid (3)</a></li>
896
897 <li><a href="http://www.hungry.com/~pere/blog/tags/robot">robot (17)</a></li>
898
899 <li><a href="http://www.hungry.com/~pere/blog/tags/rss">rss (1)</a></li>
900
901 <li><a href="http://www.hungry.com/~pere/blog/tags/ruter">ruter (7)</a></li>
902
903 <li><a href="http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
904
905 <li><a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
906
907 <li><a href="http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (4)</a></li>
908
909 <li><a href="http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (5)</a></li>
910
911 <li><a href="http://www.hungry.com/~pere/blog/tags/standard">standard (80)</a></li>
912
913 <li><a href="http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
914
915 <li><a href="http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (14)</a></li>
916
917 <li><a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (65)</a></li>
918
919 <li><a href="http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (6)</a></li>
920
921 <li><a href="http://www.hungry.com/~pere/blog/tags/usenix">usenix (2)</a></li>
922
923 <li><a href="http://www.hungry.com/~pere/blog/tags/valg">valg (9)</a></li>
924
925 <li><a href="http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (23)</a></li>
926
927 <li><a href="http://www.hungry.com/~pere/blog/tags/video">video (82)</a></li>
928
929 <li><a href="http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (4)</a></li>
930
931 <li><a href="http://www.hungry.com/~pere/blog/tags/web">web (42)</a></li>
932
933 </ul>
934
935
936 </div>
937 <p style="text-align: right">
938 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
939 </p>
940
941 </body>
942 </html>