Warning: Cannot modify header information - headers already sent by (output started at /home/gillesbld/www/weblog/inc/config.php:41) in /home/gillesbld/www/weblog/inc/clearbricks/common/lib.http.php on line 222

Warning: Cannot modify header information - headers already sent by (output started at /home/gillesbld/www/weblog/inc/config.php:41) in /home/gillesbld/www/weblog/inc/clearbricks/common/lib.http.php on line 224

Warning: Cannot modify header information - headers already sent by (output started at /home/gillesbld/www/weblog/inc/config.php:41) in /home/gillesbld/www/weblog/inc/public/lib.urlhandlers.php on line 65

Warning: Cannot modify header information - headers already sent by (output started at /home/gillesbld/www/weblog/inc/config.php:41) in /home/gillesbld/www/weblog/inc/clearbricks/common/lib.http.php on line 247
Embedded weblog - Tag - bsd 2014-05-14T10:00:05+02:00 Gilles Blanc urn:md5:b402c09b50e67198753bdd4269dc5b19 Dotclear decreasing the size of the distribution [OpenBSD] urn:md5:f3cfe212c42c9220ac3000910f3241dd 2009-10-26T17:21:00+01:00 gblanc informatique bsdembarqué <p>Voilà qu'aujourd'hui, sur la ML d'<strong>OpenBSD</strong>, quelqu'un cherche à <a style="font-weight: bold;" hreflang="en" href="http://www.nabble.com/decreasing-the-size-of-the-distribution-td26052871.html">faire baisser la taille d'OpenBSD</a> tout en gardant les <strong>fonctionnalités (réseaux)</strong> dont il a besoin. C'est trivial sous Linux, mais avec le poisson qui pique, c'est une autre affaire. Comme toujours sur cette mailing list, le pauvre se fait gentiment éconduire ; florilège :</p> <blockquote><p>I'd suggest spending the additional ~$2 for the 1GB flash and not to mess with anything!</p> </blockquote> <blockquote><p>Lastly if you do build a little shrip frankensystem, asking for help here isn't going to get a lotof sympathy. &nbsp;You'll be on your own.</p> </blockquote> <blockquote><p>If you have to ask, you shouldn't be doing it. &nbsp;Why would you possibly&nbsp; need to get smaller than the baseXX, etcXX and manXX sets? &nbsp;These easily&nbsp; fit on a few hundered MB. &nbsp;What modern flash disk won't fit this?</p> </blockquote> <p>Ah ces barbus, ils sont formidables, et toujours au fait de ce qui se passe dans la vraie vie de tous les jours. Soit le monde de l'<strong>embarqué</strong>, où il n'est guère décent de proposer une distribution de 512Mo qui embarque les pages man autant que le fabuleux répertoire /usr/share/misc/, qui pour 7,2Mo propose la liste complète des aéroports dans le monde (fichier <em>airports</em>), ou les codes postaux aux États-Unis (<em>zipcodes</em>) ; bon, je suis méchant, il faut garder à tout prix <em>terminfo.db</em> (3,0Mo), mais on peut bazarder <em>termcap.db</em> (2,7Mo).</p> <p>Il existe deux projets qui se proposent cependant de passer outre la religion inflexible du "touche à rien" (un autre concept de la geek-attitude) : <a hreflang="en" href="http://www.nmedia.net/flashdist/">flashdist</a> et <a hreflang="en" href="http://www.soekris.com/">soekris</a> (il y eut aussi <a hreflang="en" href="http://www.mindrot.org/projects/flashboot/">flashboot</a>). Mais voilà : basées sur des scripts qui copient les fichiers nécessaires à la nouvelle distribution réduite depuis le système de fichier de la distribution courante vers un répertoire donné (avant de l'intégrer dans un master), leur méthode est clairement de type top-down. Pour du <strong>bottom-up</strong>, c'est-à-dire de la compilation des sources pour obtenir le firmware (ou le master, à savoir le firmware plus le bootloader et d'autres partoches qui servent à stocker par exemple de gros fichiers, ce qui en soit justifie de réduire la taille de la distrib' -- qui pèse plus de 250Mo quand on ne met que le package "base", celui qui contient tellement peu de choses réellement utiles qu'on est rapidement embêté), j'ai bien peur que ce soit une autre <a hreflang="en" href="http://www.openbsd.org/faq/faq5.html#WhySrc">paire de manches</a>.</p> <blockquote><p> <strong>5.2 - Why do I need to compile the system from source?</strong> <br />Actually, you very possibly do not.<br />Some reasons why NOT to build from source:<br />&nbsp;&nbsp;&nbsp;&nbsp; * Compiling your own system as a way of upgrading it is not supported.<br />&nbsp;&nbsp;&nbsp;&nbsp; * You will NOT get better system performance by compiling your own system.<br />&nbsp;&nbsp;&nbsp;&nbsp; * Changing compiler options is more likely to break your system than to improve it.</p> </blockquote> <p>Et c'est sans compter le système de mise à jour assez rudimentaire (euphémisme) du firmware proposé par nos deux <a hreflang="en" href="http://256.com/gray/docs/soekris_openbsd_diskless/">solutions</a> :</p> <blockquote><p>You now need to take the image file and write it to your compact flash device using dd. Make sure you are using the correct device otherwise you can blow away your hard-disk or other devices. <br />&nbsp;dd if=image_cf of=/dev/??? bs=1k</p> </blockquote> <p><em>(pour faire bref : tu démontes ton serveur, tu enlèves la compact flash, tu la branches dans ton adaptateur universel, et après tu ne te trompes surtout pas de device où copier comme un gros cochon, sinon tu risques de flinguer des trucs pas bons, style ton disque dur -- c'est super industriel comme procédé, je me vois bien proposer ça à un client)</em></p> <p>Oh, il y a des recettes pour faire ça dans son garage, mais pour des applications industrielles, ça reste assez vague. <a hreflang="en" href="http://onlamp.com/pub/a/bsd/2004/03/11/Big_Scary_Daemons.html">"Homemade Embedded BSD Systems"</a> et <a hreflang="en" href="http://www.kernel-panic.it/openbsd/embedded/">"Embedded OpenBSD"</a> sont dans le genre de bonnes intros, mais on est loin du compte.</p> <p>Ou alors, <strong>il y a Linagora</strong>. Et en plus, vous ne serez même pas mal accueilli (et on s'étonne que je n'aie jamais laissé de messages sur cette ML...). Et en plus, le firmware peut être mis à jour à chaud, et on peut revenir en arrière en un clin d'oeil. Et en plus... Ah ah, il faut garder des surprises !&nbsp; :)</p> au détour d'une macro crasseuse urn:md5:6315f964008457ea96d4d1757c61be36 2009-05-27T16:55:00+02:00 gblanc informatique bsdprogrammation <blockquote><p>#define ATOI2(ar)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((ar) += 2, ((ar)[-2] - '0') * 10 + ((ar)[-1] - '0'))</p> </blockquote> <p>Ça se trouve au milieu de date.c, de l'utilitaire date d'OpenBSD. Ça transforme tout nombre entre 10 et 99 (ou 00 et 99) en chaîne de caractère en integer (ou au moins en char), et ça passe même sur un gcc très récent. Outre l'idée d'avancer de deux dans le pointeur puis de référencer en négatif, et de flinguer au passage la variable d'entrée, autre chose interpelle : la syntaxe.</p> <blockquote><p>int i = 42;<br />int t = (2, i++, 4 + i);<br />printf("%d ", t);</p> </blockquote> <p>Ceci affiche 47 !! Page 210 de votre K&amp;R (A7.18), opérateur "," :</p> <blockquote><p>f(a, (t=3, t+2), c)<br />a trois arguements et le deuxième d'entre eux vaut 5.</p> </blockquote> <p>Toutes les personnes interrogées, développeurs expérimentés en C, ne connaissaient pas ; je me suis senti moins seul...</p> berk, berk, berk urn:md5:f86c6b4aa8b36542cb77df13adf03f22 2008-10-14T16:07:00+02:00 gblanc informatique bsdprogrammation <blockquote><p><code>int&nbsp; lm_match(struct lm_softc *);<br />int&nbsp; wb_match(struct lm_softc *);<br />int&nbsp; def_match(struct lm_softc *);<br /><br />struct lm_chip {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int (*chip_match)(struct lm_softc *);<br />};<br /><br />struct lm_chip lm_chips[] = {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { wb_match },<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { lm_match },<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { def_match } /* Must be last */<br />};<br /><br />void<br />lm_attach(struct lm_softc *sc)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u_int i, config;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; sizeof(lm_chips) / sizeof(lm_chips[0]); i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (lm_chips[i].chip_match(sc))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</code></p> </blockquote><p>J'ai remis bout à bout les bons morceaux, <a hreflang="fr" href="http://www.openbsd.org/cgi-bin/cvsweb/src/sys/dev/ic/lm78.c?rev=1.20;content-type=text%2Fx-cvsweb-markup">dans la réalité</a>, c'est bien plus espacé, sinon se serait trop lisible... (on remarquera que j'ai tout de même laissé les commentaires d'origine)</p> était-ce du second degré ? urn:md5:6cec6f13fcd88d0aed814c0049c64289 2008-07-08T12:13:00+02:00 gblanc informatique bsd <p>S'il y a bien une ML qui tend régulièrement vers le grand n'importe quoi, c'est celle d'OpenBSD. Perle de ce matin (échange d'hier en fait) :</p> <blockquote><p>Subject: "How to undelete?"<br /><br />I deleted a directory from an OpenBSD slice from my 2nd HD, and I need<br />to recover a single file.<br /><br />I tried : http://myutil.com/2008/1/15/undelete-unrm-for-openbsd-4-2-with-dls<br />but&nbsp; failed :<br /><br /># dls /dev/wd1x &gt; /xxx/xx/undelete.bin<br />Sector offset supplied is larger than disk image (maximum: 0)</p> </blockquote> <p>Première réponse :</p> <blockquote><p>You use a backup.<br /><br />UNIX != Windows != OSX</p> </blockquote> <p>Très utile, n'est-ce pas ? Mais le plus drôle est à venir :</p> <blockquote><p>Just open your disk in a hex editor and look for your data, it should be here.</p> </blockquote> <p>Là, c'est très fort. Finalement, la première réponse n'était pas si mauvaise que ça... Mais notre gars manifestement trouve cette idée plutôt à son goût :</p> <blockquote><p>Which hex editor do you advise?<br />Should I have to umount the partition before?<br />the partition is 40 GB size on a secondary disk, OpenBSD old slice,<br />should I need at least such space (/tmp ?) to open it on the hex editor<br />from my OpenBSD 4.3?<br /><br />Thanks!</p> </blockquote> <p>Pour rappel, sous Linux, y'a <a hreflang="fr" href="http://www.linux.com/articles/56588">entre autres</a> (et surtout) Photorec, et c'est plus classe que l'ancêtre <a hreflang="fr" href="http://e2undel.sourceforge.net/recovery-howto.html">debugfs</a>. Attaquer à l'éditeur hexadécimal, c'est tellement du grand n'importe quoi que je ne pense même à avoir à rappeler comment marche la fragmentation... (en revanche, si votre Firefox plante alors que vous écriviez un mail, je vous recommande un <em>grep -a</em> sur <em>/dev/mem</em>, mais c'est pas pareil)</p>