Showing posts with label ubuntu. Show all posts
Showing posts with label ubuntu. Show all posts

Tuesday, August 10, 2021

NUC en maintenance...

Mon beau-frère a beau trouver que je le sous-exploite, ces 2 mois sans accès à mon NUC auront été douloureux. C'est qu'après le passage du technicien WiFi, il n'était plus sur le bon réseau (le gars m'ayant mis un SSID tout en MAJUSCULEs. Eh oui). Et avec d'autres paramètres de sécurité.

Et le truc, c'est que depuis son installation d'origine, le NUC était en mode "cube numérique dans son coin douillet à côté de la chaîne HiFi". soit je communiquais avec par SSH, soit par un p'tit service web perso pour trier les playlists au fur et à mesure qu'on les joue, que ce soit par tablette, laptop ou smartphone-de-ma-fée.

Pour une raison inconnue, les gars de chez Intel ont pensé qu'une prise HDMI n'aurait pas tenu sur la face multimédia de l'engin et donc j'avais un câble mini-HDMI <-> HDMI au chaud dans un tiroir et un adaptateur miniHDMI:M->HDMI:F qui m'avait servi lors du setup initial sur le setup Raspberry de mon filleul. J'avais d'ailleurs racheté le même adaptateur HDMI->VGA que lui (on le voit sur la droite de la photo).

Fort heureusement, j'ai aussi chez moi un apparail auquel j'ai programmé un mode "forward HDMI". Je peux donc y faire passer mon signal pour éviter de devoir brancher deux câbles HDMIs l'un avec l'autre.

sudo modprobe zd1201 ap=1 # /etc/modprobe.d/wlan did not seemed to have effect before reboot.
sudo iwconfig enx00cafe00babe essid "bilou"
sudo ifconfig enx00cafe00babe 192.168.7.1 netmask 255.255.255.0
sudo vim /etc/udhcpd.conf # fix 'interface', 'start' and 'end'.
sudo vim /etc/default/udhcpd # set DHCPD_ENABLED
sudo touch /var/lib/misc/udhcpd.leases
sudo service udhcpd reload
sudo service udhcpd restart

Et *enfin*, mes consoles DS ont pu recevoir une addresse IPv4 et transférer des fichiers vers/depuis le NUC avec server.pl et sink.pl... Par contre, pa encore moyen de faire les mises à jour automatique (de runMe, qui devrait recevoir son nouveau mécanisme de rapport de iScriptException) parce que ils ont été configurés pour contacter 192.168.0.11 et rien d'autre.

Donc on va commencer par ajuster EXTRAFLAGS et recompiler tout ça ...

  • [done] /etc/modprobe.d/wlan.conf instead of /etc/modprobe.d/wlan allowed ap=1 to be auto-assigned
  • [todo] trying to reload the module while stick is plugged in fails to upload firmware with ETIMEDOUT (-110) errcode
  • [done] wireless_essid under iface enx00cafe00babe inet in /etc/network/interfaces allows to define SSID properly.
  • [done] I had to manually ifup enx00cafe00babe until the interface was added to the auto list of /etc/network/interfaces
  • [done] using Ubuntu HWE allowed the TPLink USB stick to be supported on my laptop
  • [done] nmcli dev wifi connect "bilou" ifname wlx00deca00fbad let my laptop connect to the bilou wifi as well.
  • [todo] looks like nmcli has to be re-done when I plug the TPLink stick again...
  • [todo] uploading purposely buggy greent.cmd could trigger the PatchWindow, but J.L.N's level still produces a *** cannot parse line*** diagnose halt instead.

Tuesday, June 25, 2019

couldn't list the directory.

For some reason, recent desmume (0.9.11) shipped with my Ubuntu distro cannot list files in directories passed as --cflash-path.
and this time, my 'old version' of desmume binaries are 32-bit while the system is running a 64-bit OS. I had multiarch-support package installed, but not libc6:i386, nor libstdc++6:i386, and as a result, and I just had a weird message about the 'file not being found', while it was obviously there. Once those core packages had been installed, I got more coder-friendly error messages mentioning which library was missing, so I could just find the corresponding package with apt-file and install e.g. libsdl1.2debian:i386, libglib2.0-0:i386 and the like.

And eventually, I could run a copy of desmume-cli so old that --version isn't even supported :P 0.9.6 svnr3873 dev+, it says. And that one granted me with proper file loading, so I'll be able to investigate whether my edits on the extended monsters editions are OK or not ... next time.

(and no, this time adding --load-type=1 did not help)
(bug confirmed with filesystem/libfat/libfatdir example from devkitpro)

Sunday, January 16, 2011

2To !?

Pas moyen de faire la mise à jour "LTS-vers-LTS" de la distribution Ubuntu présente sur "TuX", la machine à base d'AMD64 qui "trône" sous le scanner/imprimante de ma salle à manger. La bonne nouvelle, c'est que tous mes disques étaient des "bons vieux disques PATA" de 2001 (allez, peut-être 2003 pour le plus récent), et qu'il m'a suffit de descendre en ville acheter un disque SATA pour repartir sur de nouvelles bases.

Mon frère m'a aiguillé vers un disque 2To pour 130€ plutôt qu'un 1TB pour 100€. J'imagine qu'il a eu raison mais ... 2 000 000 000 000 de bytes !? ... mon premier disque dur faisait à peine 20 Mo! Qu'est-ce que je vais bien pouvoir mettre là-dessus ?? Je n'ose même pas imaginer la quantité de DVD nécessaire pour faire des backup de ce brol ! ... J'imagine que je vais appliquer la politique habituelle : faire une partition de ~ 512 Go pour nos compte utilisateurs, 50 Go pour le système, et garder le reste non-partitionné pour usage ultérieur.

(PS: vous l'aurez compris, l'appareil photo est en vadrouille, sans quoi je vous aurais ajouté une photo de la bête éventrée qui comporte maintenant 2 HDD "IDE", 1 HDD SATA, 1 graveur combo DVD+CD, un lecteur iomega ZIP et un lecteur de floppy 3"½, et peut potentiellement booter Ubuntu Lynx, Ubuntu Heron, SuSE 8.2 ou un "Win98 SE" qui serait probablement très étonné de voir à quel point le matos tout autour a changé :P)

Bon, prochain objectif: faire tourner "Tux-e-Do" dessus

Monday, June 07, 2010

Laissez tomber GCJ, les gars.

sudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.17/bin/java /etc/alternatives/, c'est tout ce qu'il y a à dire. J'ai facilement perdu 2 heures vendredi dernier, à chercher dans le code de mes étudiants un problème qui se trouvait clairement dans les bibliothèques Java qui accompagnent la JVM "gnu", le "choix par défaut" d'Ubuntu Lucid Lynx. Et là, je regrette, les cocos, mais ce n'est absolument pas lucide.

java.util.Scanner[delimiters=\p{javaWhitespace}+][position=372][match valid=true][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\QNaN\E][infinity string=\Q?\E]
java.lang.NullPointerException
at java.util.regex.Matcher.toMatchResult(libgcj.so.10)
at java.util.Scanner.myCoreNext(libgcj.so.10)
at java.util.Scanner.myPrepareForNext(libgcj.so.10)
at java.util.Scanner.myNextLine(libgcj.so.10)
at java.util.Scanner.hasNextLine(libgcj.so.10)
at Flux2.getRadioMetaData(Flux2.java:237)
at Flux2.connect(Flux2.java:214)
at FluxFeeder.run(FluxFeeder.java:21)
au énième appel de hasNextLine sur un parseur a priori impeccable, mais qui est simplement arrivé au bout de la chaine sur laquelle il travaille. J'aurais volontiers fait un vrai "bug report" aux responsables de la maintenance de la libgcj.so.10, mais on dirait bien que la politique d'Ubuntu s'est encore dégradée à ce sujet. Non content de répondre régulièrement "ah oui, on arrangera ça dans la version suivante" lorsqu'ils ont choisi une version incomplète ou buggée d'un programme mais que des correctifs existent chez le développeur (j'en veux pour preuve ce problème dans desmume), même lorsque la distribution affectée est une Long Term Support.
Enfin ... on va essayer quand-même.

Monday, November 03, 2008

Hacking gspca for Logitech QuickCam E1000 support.

Hop, je fais le saut: j'achète une webcam. Pas chère (25 francs) avec oreillette inclue "für skype" ... Mon choix s'est arrêté sur la QuickCam E1000 de Logitech, dans un rayon qui semble comporter une douzaine d'autres webcam qui se ressemblent toutes, en ce qui me concerne, hormis peut-être leur prix.

Je branche ça sur mon portable linux ... et évidemment ça ne marche pas tout seul. Le CD ne comporte que des drivers pour windows, ce qui n'est pas une surprise non-plus. Haa... on a pas encore fini de changer le monde.

Bref. Un petit tour de google, et je tombe là-dessus : http://doc.kubuntu-fr.org/spca5xx "installer gspca sous ubuntu, la version facile" ... je prends. je suis les instructions à la lettre, le module (comprenez "le driveur" pour les windoziens) s'installe. c'est bien. Sauf que point de webcam.

I just blindly bought the Logitech QuickCam E1000 this week-end (since it was the cheapest webcam around) and of course realised that it did not came with any Linux driver (not that it's surprising in any way) nor does it seems to be supported by any "out-of-the-box" driver for Ubuntu gutsy (unless i'm proved wrong). Hacking around, checking lsusb and reading the sources of the gspca driver, i figured out that it was yet-another-generic-driver that has a "white list" of supported devices. I thus added the product-id to that white list and now proudly have a working webcam. See compiled driver (which might no longer work with Labtec Webcam Pro, because i've really been *hacking* instead of *patching*) and modified sources down the page.

Un petit "lsusb" me donne au moins la référence "technique" du produit : Bus 001 Device 012: ID 046d:08af Logitech, Inc.

Ces deux numéros magiques (vendor-id=046d et product-id=08af) me permettent de voir (dans les sources du driver, en bas à gauche de l'image) que si pas mal d'autres webcam logitech sont supportées, par contre, la mienne n'est visiblement pas là. Comme le "gspca" est un driver "générique" (à savoir qu'il est en fait valide avec toutes les webcams 'standard'), j'ai 9 chances sur 10 pour que le code puisse effectivement faire fonctionner la webcam si j'arrive à expliquer au driver que "si, si, je t'assure, tu la connais aussi, celle-là". Un peu comme si votre clé-télécommande devait reconnaître la plaque minéralogique de votre voiture pour pouvoir la faire démarrer.

Bref. Premier jeu, donc, ajouter dans gspca_core.c l'identité de notre caméra. Perso, je parasite n'importe quelle entrée dans device_table[], mais il serait plus propre d'y ajouter {USB_DEVICE(0x046d, 0x08af)}, /* Logitech QuickCam E1000*/ et d'éditer en conséquence clist[] et l'énumération des caméras.

Avec ça, le driver peut dire au noyau que la webcam est pour lui, mais ça ne suffit pas. La fonction spcaDetectCamera() est appelée chaque fois qu'une nouvelle webcam est branchée, histoire de lui souhaiter la bienvenue, de prendre un verre avec les autres périphériques USB ... euh ... ou pas. C'est là que l'on va retrouver un gros "switch" qui va règler les options de notre driver générique pour chaque modèle de caméra (peut-être pas si générique que ça, donc, en fait :P) Je fais bêtement le pari que ma caméra "8af" sera probablement juste une réédition de la "8ae" (QuickCam for Notebooks), et donc :

   case 0x08ae:
case 0x08af: // uber-experimental.
    spca50x->desc = QuickCamNB;
    spca50x->bridge = BRIDGE_ZC3XX;
    spca50x->sensor = SENSOR_HDCS2020;
    break;
Et hop! ça marche! J'adore linux!

le module recompilé pour gutsy : gspca_e1000.ko le fichier gspca_core modifié pour la QuickCam E1000 : gspca_core_e1000.c (soyons open-source jusqu'au bout ;)

Et pour ceux qui trouvent que "Aarhgh! Skype, c'est le mal", je propose la lecture de l'édifiant "Castle in the Skype" de Fabrice DESCLAUX, puis je leur dirai que MSN, c'est pas forcément mieux ;)

edit: cette manipulation est valable sur Gutsy uniquement. Sous Hardy Heron (et probablement les versions ultérieures), les drivers pré-compilés supportent directement la caméra.

Friday, October 10, 2008

mon routeur à un DNS qui rame ...

Bon, avec ces routeurs Wifi qui deviennent de plus en plus fréquents, j'imagine ne pas être le seul à avoir le problème : ce genre de routeur se renseigne généralement comme "serveur" DNS local (en gros, c'est lui qui se chargera de savoir qui est "google.com" et tous les autres sur le réseau), supplantant le serveur de votre ISP ... Ce qui ne serait pas bien grave si ce brave petit routeur WiFi avait la puissance et la mémoire nécessaire pour faire ce boulot ...

Résultat: une navigation ralentie par de longues attentes sur des noms par rapport à une connexion directe avec le modem de l'ISP. Que faire ?
Première chose, apprendre l'adresse du fameux serveur DNS (serveur de nom) de votre ISP. Jetez un coup d'oeil au fichier /etc/resolv.conf ... s'il renseigne "nameserver 192.168..." ou "nameserver 10.0..." (qui sont des adresses IP "locales", utilisées uniquement derrière ce genre de routeur-pare-feu), c'est qu'effectivement le routeur sert de serveur de noms. Réessayez alors sans le routeur, et vous aurez peut-être droit à quelque-chose comme "nameserver 123.56.1.1", que vous vous empresserez de copier sur un post-it (c'est le serveur de nom de votre ISP ... le vrai). (PS: vous pouvez sans doute aussi apprendre ça en interrogeant l'interface Web de votre routeur ou en retrouvant dans votre fouilli le contrat de l'ISP ;)

Rebranchons notre routeur, maintenant, et une fois le réseau prêt à fonctionner, éditons comme un grand sauvage le fichier /etc/resolv.conf (à coup de sudo, bien sûr) pour remplacer "nameserver 192.168.1.1" par "123.56.1.1", par exemple ... Est-ce que la connexion a l'air de se faire mieux ? Si oui, c'est qu'il y avait bien un soucis de DNS ...

Evidemment, ce serait trop simple que cela suffise. /etc/resolv.conf est un de ces fichiers qui est écrasé à chaque démarrage par le client DHCP (celui qui demande au routeur gentillement de lui donner une adresse et de s'ajuster au réseau et qui vous permet du coup de vous ballader du bureau à la maison sans vous poser trop de questions). On va donc devoir aller éditer cette fameuse config DHCP (dans /etc/dhcp3/dhclient.conf sur mon ubuntu), le truc étant d'utiliser la commande "prepend" pour forcer une configuration statique à prendre le pas sur la config automatique.

send host-name "";
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
prepend domain-name-servers 123.56.78.1;
prepend domain-name-servers 123.56.1.1;

et voilà. Les "sudo /etc/init.d/networking restart" n'auront plus raison de notre beau resolv.conf ...

PS: c'est geek, hein ;) oui, je sais, c'est plus simple quand il y a des cases à cocher, mais à défaut, on a un peu appris comment ça marchait ;)
PPS: oui, j'ai finalement moins bricolé ma DS pendant ma première semaine en Suisse que je ne l'aurais cru ... et je n'ai pas senti le besoin de blogger les petits progrès qui avaient quand-même été réalisés ... d'où un blog un peu plus calme, ne vous en déplaise.

Friday, September 26, 2008

Screwed up terminals: the solution

Anyone who has been doing C programming on Linux has encountered this at least one, or is a very rigourous programmer. A certain binary sequence (that you normally never encounter in ASCII text, but that might be present in that binary file you accidentally dumped on your terminal) will switch you to the "graphical and lines" character set where everything gets completely unreadable.

Si vous programmez sous Linux ce genre d'écran illisible ne vous est forcément pas inconnu. Tôt ou tard, vous (ou un de vos collègues) a forcément malencontreusement envoyé un fichier mp3 ou une image ou un programme sur la sortie du terminal et pas de chance: il contenait cette petite séquence ANSI qui force la console à passer sur le jeu de caractères graphiques, utilisé entre autres par ncurses pour dessiner ses boites et ses menus.

It was fairly easy to fix under SuSE and RedHat back in Y2K as a simple "reset" command typed on the terminal restored the display. Unfortunately, ubuntu Linux distributions do not seem to think a terminal reset should include reset the character set to its default value...

It occurred once again today. Once too much. I dug the ANSI commands set and wrote a small perl tool that let me toy with ANSI escape codes. Here it comes: ANSIHACK.PL (in uppercase so that you can recognize it even when your terminal is screwed :P)

#!/usr/bin/perl
print "\x1b($1\nMODE $1 ENABLED.\n" if $ARGV[0]=~/\-\-SET([0-9A-B])/;
print "\x1bc\x1b(A" if $ARGV[0] eq '--RESET';
shift @ARGV if $ARGV[0]=~/^\-\-/;
print "\x1b[$ARGV[0]\n";
print "done/DONE.\n";
exit(0);
Actually, the commands that trigger a charset switch are Esc(x and Esc)x. Charset A is our default, regular 'ascii' charset (used in --RESET form) but you can also toy with other charsets (B, 0, 1 and 2) with e.g. ANSIHACK.PL --SET0 (that screws things up) and ANSIHACK.PL --SETA (which restores things to normal).

C'était assez simple à résoudre du temps de SuSE et RedHat (tapez 'reset' en aveugle, puis appuyez sur ENTER les doigts croisés en sautant sur un pied un soir de pleine lune avec un baton de réglisse entre les dents). Mais sous ubuntu. Rien. reset efface le contenu du terminal, mais ne résoud pas le problème qui nous occupe. D'où ce petit script pour jouer avec les commandes ANSI. Les vieux de la vieille pourront se faire un alias reset='bin/ANSIHACK.PL --SETA' ;)

|-|oPe !7 |-|e|_p$ ;)

edit: the real explanation is that a '0x0e' character (shift out) had been issued and only a '0x0f' character (shift in) would bring the default charset. The ANSI hack almost works, but it screws up the '#' character into some £...

Thursday, April 10, 2008

Buggy Beetle

un bug vraiment très bête, en fait. Genre, deux lignes inversées dans un module noyau, et vlan, tout plante ... Je ne suis pas trop rouillé en Assembleur et en noyau linux, heureusement. A partir du crashdump sur le terminal (zd1201_usbrx+0x717), j'ai réussi malgré tout à retrouver le bout du driver pour ma clé wifi USB qui a provoqué un beau gros plantage de Gutsy Gibbon, la release ubuntu installée sur mon nouveau beetle. Il aura fallu attendre le passage à Hardy Heron pour que la correction arrive dans Ubuntu. Je suis aussi arrivé à la conclusion (après un peu plus de chipotage), que la ligne
 skb->dev->last_rx = jiffies; 
supposée indiquer dans l'état du driver l'instant où le dernier paquet avait été reçu tentait de modifier un "device" qui n'a jamais été initialisé auparavant ("thou shall not follow thee NULL pointer", comme dirait Cyril). J'aurais bien rajouté à la main un "skb->dev = zd->dev", mais j'ai fini par faire une petite recherche google qui m'a appris beaucoup plus rapidement qu'en fait, ce champs-là est initialisé par la fonction appelée juste en-dessous (eth_type_trans, pour les intimes) :P Le code correct lit donc
  memcpy(skb_put(skb, len), data, len);
  skb->protocol = eth_type_trans(skb, zd->dev);
  skb->dev->last_rx = jiffies;
  zd->stats.rx_packets++;

Bon, par contre, pas trouvé le moyen de recompiler juste le module foireux (voir plus bas). Il est teatime, et je lance ma première recompilation de noyau sur mon dual-c0re tout neuf à 4GB de RAM... ... 1/2 heure plus tard, la recompilation est terminée, mais évidemment, les batteries de ma DS n'ont pas attendu jusque là. 'faudra essayer tout ça demain :P here's a recompiled zd1201.ko module for the default gutsy kernel reusing local configuration (dual core, just in case). 

Install in /lib/modules/2.6.22-14-generic/kernel/drivers/net/wireless/ and make sure you have fresh firmware files (available on http://linux-lc100020.sourceforge.net/, to be installed in /lib/firmware/2.6.22-14-generic/) 2.6.22-14-generic/kernel/drivers/net/> md5sum wireless/zd12* 5e109dc87a1fa80d7c67834ce0d7a11c wireless/zd1201.ko 0ed15b4dab3e4f52f978a031ae102e02 wireless/zd1201.ko.original (i'd suggest that you *don't* replace your wireless/zd1201.ko unless with mine unless you happen to have the same md5 as wireless/zd1201.ko.original) edit: ça marche. c'est reparti pour le homebrew du temps de midi ^_^ edit+: oh, au fait: tout ça parce que je voulais vérifier que mon installation du dernier devkitpro (r21) était au poil... edit: Thanks to this post by linuxtilti, i figured out how to make a small Makefile that lets me rebuild just the module i need

obj-m = zd1201.o
KVERSION = $(shell uname -r)

all:
 make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
 make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
Okay, that was damn obvious, but i'm always confused by kernel makefiles, somehow. They export all their regular duties to those called builders, just pointing out "here is where i stand". I suspect that only obj-m is then imported by the builder ...

Tuesday, March 11, 2008

Offending Key

Un petit ssh de plus, et je me retrouve de nouveau avec le message pénible:

Warning: the RSA host key for 'ladybug' differs  
from the key for the IP address '39.42.24.35'
Offending key for IP in /home/sylvainulg/.ssh/known_hosts:32
Are you sure you want to continue connecting (yes/no)?
Eeeh oui: on a réinstallé quelques machines dans le labo, leurs identité ont changé, et plus rien ne va ... Et pour simplifier les choses, contrairement à mes "bonnes vieilles SuSE", ubuntu ne stocke *rien* en clair dans le fichier "known_host". Avant, j'aurais ouvert le fichier avec jed/emacs, recherché l'adresse IP en question et supprimé la ligne, mais là ...

Seule technique valable pratiquée jusqu'ici: supprimer complètement le fichier (mais alors toutes les machines sont de nouveau inconnues, etc.) Eh bien, il y a mieux, bien sûr. Pas d'idée, allez, je vous le refait
Warning: the RSA host key for 'ladybug' differs 
from the key for the IP address '39.42.24.35'
Offending key for IP in /home/sylvainulg/.ssh/known_hosts:32
Are you sure you want to continue connecting (yes/no)?
Bin oui. Un numéro de ligne. Reste à retirer juste cette ligne là avec votre éditeur texte favori, et rou(il)lez jeunesse! Oh, au passage, hors des partitions NFS, le .known_host ... okay ? okay.

Wednesday, November 14, 2007

LBM & Linux

Je suis un vieux de la vieille qui a commencé ses pixels sous MS-DOS. Et de temps en temps, j'aime pouvoir récupérer mes vieux dessins tout pixelisés. Mais voilà, bien peu de programmes supportent les fichiers .LBM de mon ancien Deluxe Paint II enhanced :(

Sous ubuntu, pourtant, le package netpbm fournit un outil ilbmtopbm qui servira à ImageMagick (les programmes 'display' et 'convert', entre-autres) pour passer du format LBM au format PBM (Portable Bit Map) -- inconnu de tous, sauf de la bibliothèque ImageMagick qui peut pratiquement tout faire à partir de là.

Reste que imagemagick persiste dans l'idée que mes fichiers Deluxe Paint devraient s'appeler ".ilbm" et pas ".lbm". Comme c'est pénible et que je suis geek, j'édite le fichier /usr/lib/ImageMagick-6.2.4/config/delegates.xml et là ou on voyait une ligne "decode 'ilbm', je passe à

  <delegate decode="lbm" command='"ilbmtoppm" "%i" &gt; "%o"' />
<delegate decode="ilbm" command='"ilbmtoppm" "%i" &gt; "%o"' />


Bref, voilà comment mon frère a maintenant mes petits sprites de Kid Paddle pour les envoyer sur le forum de Midam ^_^

(packages à installer: libimlib2, imagemagick et netpbm/libnetpbm10)

Sunday, October 14, 2007

/dev/tcp ou netcat ?

En réaction au blog de bodman, qui nous présentait une manière élégante (tirée d'un autre blog: unixjunkie) capable de lancer des requêtes HTTP armé du seul shell "BASH":

exec 3<> /dev/tcp/www.google.com/80
printf "GET / HTTP/1.0\n\n" >&5
cat <&5
exec 5>&-


qui se soldait sur mon ubuntu invariablement par un "bash: /dev/tcp/www.google.com/80: No such file or directory". Intrigué, j'ai un peu cherché sur les forums, puis j'ai téléchargé les sources, et dans le README, je trouve ceci:

9. Why is bash configured with --disable-net-redirections?

It can produce completely unexpected results. This kind of
feature should not be part of a shell but a special. tool. And
that tool has existed for years already, it's called netcat.



aha. man netcat, alors ...


netcat is a simple unix utility which reads and writes data across net-
work connections, using TCP or UDP protocol. It is designed to be a
reliable "back-end" tool that can be used directly or easily driven by
other programs and scripts.
In the simplest usage, "nc host port" creates a TCP connection to the
given port on the given target host. Your standard input is then sent
to the host, and anything that comes back across the connection is sent
to your standard output.


ma réponse de TCSHeur sera donc:
debian> echo "get / http/1.0\n\n" | nc www.google.com 80


Je vous laisse juge ^_^

Wednesday, May 16, 2007

What's wrong with software ?

Xorg session grew to +400MB of space ... thunderbird is slowly reaching +200MB, firefox is regularly killed by the "Out of Memory" daemon while both physical and swap memory are full.

Okay, maybe trying to run Ubuntu Linux in 2007 on a 1GHz-512MB is a bad idea, but honnestly, i don't see why it shouldn't work. Even my media player tend to consume more and more memory as times goes.

I remember the time where this machine was running SuSE Linux 8.x and when i could happily run my X session for nearly one year without having to restart anything. And i'm not even using any resource-demanding desktop like Gnome or KDE, neither am i using fancy XGL effects. Is *that* the price to pay for anti-aliased fonts ?

Some days, i think i'll never completely drop Operating System Development.

Monday, January 08, 2007

mozzibird, thunderfox et firezilla


Avant, j'étais un brave utilisateur de Mozilla. Puis, les améliorations se faisant de plus en plus lentes à venir, j'ai bien dû évoluer (faute de disparaître, comme me rappelait mon père quand je faisait la fine bouche pour le fromage) et passer à Firefox/Thunderbird.

Eh bien, parmi la foule d'améliorations, il y a quand même une chose que je regrette amèrement: l'intégration. L'extension "biff" me permet à peine de savoir que j'ai un mail dans ma boîte via une icône dans Firefox ... Avec mozilla, je pouvais basculer vers mes mails rien qu'en cliquant dessus. Fini. Je pouvais aussi éditer n'importe quelle page Web avec un simple "CTRL+E" et le "composeur" de mozilla... j'ai toujours ce composeur sur ma machine (un des meilleurs "notepad" pour Linux, si vous voulez mon avis), mais ni Firefox ni Thunderbird n'ont envie d'en tenir compte.

Et pire encore: thunderbird s'obstine à utiliser konqueror plutôt que Firefox pour suivre les liens dans les e-mails...

On est pas sorti de l'auberge... J'imagine que tout est beaucoup plus simple pour ceux qui installent d'emblée une Ubuntu toute propre ... mais comme je suis un g33k pervers, j'ai juste fais des apt-get upgrade et téléchargé un fichier d'installation binaire pour avoir firefox 2.0 (une sombre histoire de plugins)

Bref. Si vous utilisez encore Internet Exploser, passez bien vite à firefox. C'est mieux! archi-mieux. Si vous essayez de mettre à jour MSIE pour windows XP, mais que (pour une raison ou l'autre), l'installation est refusée: passez à firefox. Tout ce qui est "nouveau" dans MSIE était déjà dans Firefox un an avant.

Si vous êtes content de votre mozilla : restez sous mozilla, y'a pas d'urgence. Surtout si, comme moi, vous étiez près de 50% de votre temps électronique dessus :P

Friday, September 22, 2006

WiFi pour ma carte mère

Roulement de tambour et plein feu sur les poursuites: j'ai réussi à connecter ma DS au reste du monde! Une vraie aventure ... D'abord parce que les réseaux sécurisés de l'Unif ne laissent évidemment que peu de chance à un jeu fait-maison, et également parce qu'aucun des jeux officiels que j'ai ne sont prévus pour se connecter à un portail.

Mais bon, j'avais quelques atouts: Donc, première étape: faire fonctionner la clé WiFi en mode "access point" plutôt que "client" ... c'est aussi simple que de charger le module avec "ap=1", ç.a.d.
sudo rmmod zd1201
sudo rmmod firmware_class
sudo modprobe zd1201 ap=1

Comme c'est un peu lourd à la longue de retirer les modules après avoir inséré la clé pour les re-charger avec le nouveau paramètre, on peut aussi éditer n'importe quel fichier dans /etc/modprobe.d pour lui ajouter

#this is in /etc/modprobe.d/wlan.conf
options zd1201 ap=1
Si ça a marché, l'interface est listée avec Mode:Master plutôt que Mode:Managed. Ensuite, on démarre la nouvelle interface avec
sudo iwconfig wlan0 essid "gamerz" sudo ifconfig wlan0 192.168.6.1 netmask 255.255.255.0
Ca fait bizarre de blogger ça comme ça. A ma dernière conférence, j'y connaissait encore rien à tous ces brols de WiFi, n'ayant jamais joué avec ... De nouveau, on peu règler tout ça dans un fichier de config une fois que ça marche bien:
# add this into /etc/network/interfaces
iface wlan0 inet
 address 192.168.6.1
 netmask 255.255.255.0
 network 192.168.6.0
 wireless_essid gamerz
ESSID, c'est le "nom" de notre réseau, que l'on verra dans les outils de détections ... Mettez ce que vous voulez, pourvu que ce soit original ... et évitez "tsunami", tant qu'à faire...
Bon, à ce stade-ci, on peut déjà ouvrir un ethereal et voir ce qui se passe quand une DS essaie de se connecter chez nous ... c'est à dire pas grand-chose... Elle va essayer d'obtenir une adresse IP, mais à moins qu'on ne lui en donne une, c'est rapé. donc, faisons un sudo apt-get install dhcpd (dhcpd, c'est le nom barbare du programme qui donne les adresses réseau :P), et offrons-nous un petit fichier /etc/default/dhcp:
INTERFACES="wlan0"
Seule l'interface wifi doit être listée, évidemment ... pas question de venir offrir une nouvelle adresse IP à votre routeur ADSL ^_^. Ensuite, il faut un peu de config:
# this is /etc/dhcpd.conf
option domain-name-servers 123.45.67.89;

subnet 192.168.6.0 netmask 255.255.255.0 {
 option routers 192.168.6.1;
 group {
   host myDS {
    fixed-address 192.168.6.3;
    hardware ethernet 00:ca:fe:ba:be:00;
   }
   host friendDS {
    fixed-address 192.168.6.4;
    hardware ethernet 00:de:ad:be:ef:00;
   }
 }
}
Bon, si vous n'avez jamais ouvert le panneau de contrôle pour les cartes réseau, on est mal parti, mais rapidement, 123.45.67.89 est l'adresse de votre serveur de nom. Demandez-le gentiment à votre PC (e.g. "dig google.com", puis lisez la ligne ";;SERVER: 123.45.67.89") et utilisez le même. 192.168.6.1, ce sera l'adresse côté WiFi de votre PC, et c'est lui qui devra relayer les paquets... Les consoles DS auront par exemple les adresses 192.168.6.3 et 192.168.6.4 (oui, tous les numéros en 192.168.*, vous pouvez les reprendre tels quels)

Restent les fameuses "hardware ethernet", aussi connues sous le nom d'adresses MAC ou adresses physiques. Chaque carte réseau (sur un routeur, un PC, une DS, clé USB, etc.) a la sienne et elle est unique. Avec wifi_lib_test de Stephen Stair, il suffira de demander "DS infos", mais avec un jeu comme mario Kart DS, pas le choix: vous devez épier la source des paquets DHCP et reprendre la même valeur.

Si tout c'est bien passé, tapez
sudo /etc/init.d/dhcp3-server start
Et vous êtes prêt à donner une adresse IP à votre DS ... à ce stade, ça vaut la peine de laisser tourner tail -f /var/log/messages ou tail -f /var/log/syslog.0 dans un autre terminal pour voir comment les choses se passent ...

Attention: tout ceci n'est pas sans risque: en suivant tous ces conseils, vous venez d'ouvrir une porte sur votre PC, que des hackers du voisinage pourrait bien utiliser vos dépens. Si vous tenez vraiment à continuer sur cette voie et activer le "forwarding" de paquets par le noyau Linux (et ainsi vous connecter à Internet depuis votre DS à travers votre PC), documentez-vous d'abord sur les firewalls linux, et soyez sûr de votre coup... un filtrage des adresses MAC serait un minimum, mais configurer un firewall proprement, c'est tout un art et ça dépend de votre réseau

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

Enfin, guidedog peut s'avérer bien utile pour vous aider à mettre en place le NAT sur votre PC linux ^_^