Le Blog Utux

HTTP 200 GET /

A quoi ressemble Ubuntu dans Windows 10 ?

Rédigé par uTux 2 commentaires

Depuis la mise à jour anniversary de Windows 10, il est possible d'installer un sous-système ubuntu 14.04 et de lancer bash (et d'autres logiciels), ça ressemble à ça :

Impressionné ? Non ? Moi non plus, on a déjà vu ça avec Cygwin (qui existe depuis 1995 d'après Wikipedia), la différence est que c'est supporté par Microsoft et que l'on a accès aux dépôts de ubuntu. Et comme il s'agit de la 14.04, pas de systemd, dommage cela aurait pu donner lieu de bons à trolls.

Tous ces efforts de Microsoft pour se rapprocher de Linux montrent à quel point ils sont largués. Bien que Windows soit solidement implanté dans le grand public (grâce à la vente liée) et le monde professionnel (A.D, Exchange qui sont plutôt de bons outils) c'est toujours Linux qui est en tête sur les serveurs présents sur internet (web et messagerie pour ne citer que deux domaines). En tant que sysadmin je ne peux pas faire mon métier depuis Windows, cet OS n'est pas conçu pour cela : où sont dig, tcpdump, ssh , grep ? Et pourquoi est-ce que je choisirais IIS qui nécessite d'acheter une licence Windows Server ainsi qu'une machine correctement dimensionnée (gros CPU, 4GB de RAM, 80GB de disque) tout ça pour avoir moins de souplesse et de performances que Debian + Nginx qui tiennent sur 256MB de RAM et 8GB de disque ?

Dans le monde du devops, là encore Microsoft est à la ramasse. Par exemple Ansible et Docker sont des outils libres, gratuits, communautaires, documentés et simples qui ont le vent en poupe et s'appuient sur des composants qui n'existent pas sur Windows : ssh pour le premier, les containers pour le second. Et c'est génial.

En conclusion ce sous-système ubuntu dans Windows ne révolutionne rien mais vient combler un manque de Windows et il en avait grandement besoin. Reste à voir comment il se comporte et s'administre, avec le temps.

Canonical, c'est comme Microsoft, mais en lowcost

Rédigé par uTux 17 commentaires

Voilà un slogan qui va bien à Canonical et qui décrit les problèmes de qualité sur Ubuntu desktop.

Ils ont en particulier des soucis avec nm-applet, vous savez le petit applet réseau dans le systray. Outre le fait qu'il plantait quasiment tous les jours les premiers mois après la sortie de la 16.04LTS (il a bien fallu 4 mois pour que ce soit corrigé), suite à une mise à jour ce dernier m'affiche aujourd'hui n'importe quoi.

Les réseaux WiFi ont disparu... et pourtant je suis connecté quand même :

Plus aucun réseau WiFi listé, et pourtant je suis bien connecté.

Ce n'est pas la première fois que je tombe sur ce genre de coquille, c'est systématique, et c'est toujours chez Ubuntu. J'ai en parallèle une debian testing depuis 2 ans et je n'ai jamais rien vu de tel.

Ubuntu 16.04 est une LTS, vous pouvez me rétorquer que ça veut pas dire que c'est stable mais qu'il y a du support plus longtemps, mais si, désolé, ça devrait être stable. LTS c'est ce que Canonical recommande aux entreprises et aux utilisateurs exigeants. Il ne devrait pas y avoir ce genre de bug. Imaginez un peu si Microsoft pétait le réseau dans Windows 10 suite à une mise à jour, le tollé que ce la provoquerait.

D'après les chiffres Steam (que je trouve un peu plus représentatifs que distrowatch) ubuntu est la distribution la plus utilisée avec 30% des utilisateurs. Cela veut dire qu'on véhicule une image d'un Linux pas stable, avec des défauts de contrôle qualité, et une précipitation ridicule pour sortir dans les temps à tout prix.

N'installez pas Ubuntu à votre entourage, installez Debian, la seule, l'unique distribution qui devrait avoir le droit de représenter Linux et son écosystème. Les versions un peu datées des logiciels ne sont souvent pas un problème et peuvent au pire se contourner avec les backports. Tant que Canonical ne changera pas de politique concernant le rythme de sortie des version de Ubuntu, il restera beaucoup trop de bugs inacceptables pour les utilisateurs auxquels cette distribution s'adresse.

Docker >_<

Rédigé par uTux 12 commentaires

Je ne vais pas me faire des amis, mais j'ai un problème avec Docker et je vais l'illustrer en le comparant avec ezjail qui permet de gérer les jails sous FreeBSD.

Pour afficher la liste des containers dans Docker :

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
c516f8fcbc57        httpd:v5            "/bin/bash"         9 minutes ago       Up 2 seconds        80/tcp              tender_mirzakhani

Attendez, c'est pas fini ! Cette commande ne va afficher que les containers en cours d'exécution. Si on veut tout :

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
c516f8fcbc57        httpd:v5            "/bin/bash"            9 minutes ago       Up 22 seconds              80/tcp              tender_mirzakhani
974607db9cb7        httpd:v5            "apache2-foreground"   18 minutes ago      Exited (0) 8 minutes ago                       gigantic_engelbart

Et pour entrer dans un container :

$ docker exec -t -i gigantic_engelbart /bin/bash
root@974607db9cb7:/var/www/html#

Ok. Maintenant voyons comment on fait pour lister des containers avec ezjail sous FreeBSD :

ezjail-admin list
STA JID  IP              Hostname                       Root Directory
--- ---- --------------- ------------------------------ ------------------------
DR  1    127.0.1.1       jls-web-10                     /usr/jails/jls-web-10
    1    em0|192.168.0.50
DS  N/A  127.0.1.2       jls-mail-01                    /usr/jails/jls-mail-01
    N/A  em0|192.168.0.60

Et pour entrer dans un container avec ezjail :

ezjail-admin console jls-web-10
FreeBSD 10.3-RELEASE (GENERIC) #0 r297264: Fri Mar 25 02:10:02 UTC 2016

root@jls-web-10:~ #

Voilà, une seule commande simple à retenir et pas d'options superflues.

Pourquoi les commandes Docker sont-elles aussi imbuvables ? C'est un problème courrant dans l'environnement des logiciel sous Linux, on ne sait pas faire de choses simples. git est un autre exemple symptomatique, nous sommes obligés d'avoir sous la main une anti-sèche pour ne pas nous tromper dans les commandes.

Docker étant relativement récent, pourquoi ne s'est-il pas inspiré des commandes ezjail, iohyve, iocage ou lxc qui sont beaucoup plus simples et intuitives ?

MATE c'est bien

Rédigé par uTux 11 commentaires

GNOME2 fut mon premier et seul véritable amour en matière de desktop Linux. C'est l'aboutissement de plus de 10 ans de développement, un ensemble cohérent et stable, simple et intuitif. Ce n'est pas une copie de l'interface de Windows mais ce n'en est pas non plus éloigné ce qui fait qu'on trouve rapidement nos repères. De plus il y a des thèmes de bureau jolis avec beaucoup d'éléments personnalisables.

Mais il a fallu que la catastrophe GNOME3 arrive, un bureau qui prend soin de déconstruire tout ce qui a été accompli avec GNOME2, comme si tout était calculé pour tromper et perdre les utilisateurs en se basant sur leurs habitudes. Par exemple il a fallu harceler les développeurs de GNOME au fil de plusieurs versions pour avoir enfin un bouton d’extinction. C'est con mais quand on se retrouve à chercher pendant des heures comment éteindre l'ordinateur, on se pose des questions sur l'avenir de Linux sur le desktop.

Après un passage sur KDE qui a fini par me lasser à cause de sa lourdeur visuelle et de ses mini bugs qui une fois mis bout à bout se révèlent pénibles, je me suis stabilisé pendant un moment sur Xfce. Pourquoi ? Parce qu'au fond ce n'est pas si éloigné de GNOME2 même si c'est moins bien car le rythme de développement est lent et l'ensemble manque de cohérence. Pourquoi est-ce que je n'ai jamais essayé MATE ? Parce que je ne pensais pas que le projet persisterait longtemps. Mais en fait si, le projet vit et un portage vers GTK3 est même en cours. Et il est proposé dans beaucoup de distributions, plus que Unity d'ailleurs.

Après 2 ans d'utilisation de Manjaro Xfce, poussé par le besoin de réinstaller mon OS afin d'activer le chiffrement et l'envie de tester autre chose, j'ai installé Ubuntu Mate. Et c'est drôle car ça me rappelle vraiment les anciennes versions de Ubuntu, celles avec GNOME2 et ça me file même un coup de vieux. La distribution est plutôt réussie puisque fournie avec un minimum de logiciels c'est à dire sans excès comme Manjaro par exemple qui embarque Steam sans que l'on sache réellement pourquoi.

Capture d'écran tirée du site officiel.

Utiliser MATE c'est retrouver l'ergonomie de GNOME2, c'est un retour aux sources que j'apprécie beaucoup. Les desktop qui demandent un Core i7 avec 8GB de RAM et une GTX980Ti pour afficher l'animation d'un menu sont une plaie tout comme ceux qui essaient sans cesse de réinventer la roue en s'inspirant plus ou moins de l'ergonomie des tablettes en pensant que ça va être "cool" sur desktop. Un bureau ne devrait pas demander beaucoup de ressources ni prendre de la place à l'écran parce qu'après tout on s'en sert pour lancer des applications et manipuler des fenêtres.

Si vous aussi vous êtes un vieux con qui trouve que "c'était mieux avant" essayez MATE.

systemd, c'est bien.

Rédigé par uTux 22 commentaires

Systemd est un système d'init "moderne" qui remplace le vieillissant sysvinit. L'init c'est le premier process qui démarre après le boot et qui va "orchestrer" le lancement des services : réseau, logs, ssh ... Mais wikipedia explique cela mieux que moi.

Dire que systemd a provoqué de nombreuses polémiques et levées de boucliers de la part des utilisateurs est un euphémisme, c'est un beau bazar dans lequel des troll s'affrontent au lance-flammes. On lui reproche de nombreuses choses : réinventer l'eau chaude alors que sysvinit marche bien, être monolithique et donc contraire à la philosophie UNIX, être le cheval de troie de Red Hat pour à terme remplacer de plus en plus de composants dans Linux, ne pas être portable sur les autres OS, etc. Je pense que la plupart des critiques sont vraies et que dans quelques années nos distributions ne seront plus GNU/Linux mais SystemD/Linux. Néanmoins il est intéressant d'observer qu'après 6 ans d'existence, systemd s'est imposé partout à l'exception de Gentoo (+et Slackware) et ce n'est pas par hasard.

Je ne vais pas énumérer point par point les fonctionnalités de systemd, je vais me contenter d'en présenter deux aspects que je trouve intéressants : création d'un service et d'un containers (nspawn).

Création d'un service

Avez-vous déjà écrit des scripts d'init pour un logiciel sur Linux ? Moi oui. Et entre sysvinit et systemd, c'est le jour et la nuit. Prenons pour exemple Nginx :

C'est quand même beaucoup plus simple avec systemd puisqu'une grosse partie du boulot est faite nativement, par exemple la gestion du pid et des logs. Pour sysvinit par contre c'est au développeur du script de prévoir tous les cas, de coder la vérification du pid, des logs, bref c'est long et pas forcément utile puisque même sur Windows on ne fait plus ça depuis 20 ans.

Création d'un container

Systemd est très lié à Linux et aux cgroups, il est possible d'isoler des processus dans leur propre contexte, de là à créer des containers avec une application ou un système entier il n'y a donc qu'un pas qui a été franchit. Pour l'exemple on va créer un container ubuntu-server-16.04 à partir d'une image cloud (pour nous épargner les étapes debootstrap qui n'ont pas vraiment d'intérêt dans cet article) :

root@localhost:~# wget https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-root.tar.gz
root@localhost:~# mkdir /srv/containers/xenial01
root@localhost:~# tar -xf xenial-server-cloudimg-amd64-root.tar.gz -C /srv/containers/xenial01

Note : sur les versions plus récentes de systemd (non disponible sur Debian Jessie), l'utilitaire machinectl permet de télécharger et déployer une image automatiquement. Voir la section Examples de la documentation machinectl.

Puis démarrer un shell dans le container afin de pouvoir créer un mot de passe root :

root@localhost:~# systemd-nspawn -D /srv/containers/xenial01/
Spawning container xenial01 on /srv/containers/xenial01.
Press ^] three times within 1s to kill container.
/etc/localtime is not a symlink, not updating container timezone.
root@xenial01:~# passwd
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@xenial01:~# exit

Maintenant on peut - si on veut - démarrer complètement le container :

root@localhost:~# systemd-nspawn -bD /srv/containers/xenial01/
Spawning container xenial01 on /srv/containers/xenial01.
Press ^] three times within 1s to kill container.
/etc/localtime is not a symlink, not updating container timezone.
systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR
+SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ 
-LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN)
Detected virtualization systemd-nspawn.
Detected architecture x86-64.

Welcome to Ubuntu 16.04 LTS!

Ensuite la séquence de démarrage s'affiche et il est possible de se loguer, puis d'arrêter le container avec la commande poweroff :

Ubuntu 16.04 LTS ubuntu console

ubuntu login: root
Password: 
Last login: Mon May 23 09:12:29 UTC 2016 on console
run-parts: /etc/update-motd.d/98-fsck-at-reboot exited with return code 1
root@ubuntu:~# poweroff

Si on ne spécifie aucune option au niveau du réseau, le container utilisera l'interface de l'hôte. Attention donc aux services qui écoutent sur les mêmes ports, typiquement SSH, le mieux est encore d'utiliser une interface réseau virtuelle. Je ne rentre volontairement pas dans les détails afin de ne pas faire un article indigeste, mais il est possible d'aller plus loin notamment au niveau des interfaces réseau (bridge, macvlan, veth), des limitations du système (mémoire, cpus...) ou encore de l'intégration avec SELinux. On peut aussi utiliser debootstrap, dnf ou pacstrap pour créer un container (pas besoin d'une image cloud). Pour cela voir la documentation systemd-nspawn et systemd.resource-control (elles ne sont pas si indigestes que ça).

Systemd-nspawn est une alternative intéressante à LXC permettant de gérer des containers thin (on lance uniquement une application) ou thick (on lance tous les services) sans avoir à installer quoi que ce soit.

BONUS : sous debian, ça ne change rien pour les utilisateurs

Si je peux comprendre que beaucoup de gens n'aiment pas systemd et ne souhaitent pas l'utiliser, en revanche je ne comprends pas pourquoi cette grogne est focalisée chez les utilisateurs de debian au point de créer le fork devuan. Parce que si vous êtes utilisateur de debian, systemd ne change rien pour vous. Tout d'abord le boulot est fait par les mainteneurs des paquets, vous n'avez jamais touché à un système d'init de votre vie, et avec systemd vous n'y toucherez pas non plus. Ensuite, si vous faites un peu de sysadmin, là encore rien ne change pour la majorité des opérations.

Voici pour comparer la manière dont on démarre apache :

root@localhost:~# service apache2 start # avec sysvinit
root@localhost:~# service apache2 start # avec systemd

C'est pareil, parce que debian est une distribution pour fainéants (comme moi) très bien foutue. Même chose pour le réseau, ça se gère toujours dans /etc/network/interfaces rien ne change.

Sous Archlinux par contre tout change par exemple le fichier /etc/rc.conf a disparu au profil de fichiers éclatés pris en charge par systemd. Ce n'est pas méchant mais il a fallu réapprendre certaines choses. Malgré une grogne passagère la chose semble avoir bien été acceptée par les utilisateurs, en tous cas ils ne sont pas partis forker leur distribution.

Conclusion

Au final, après avoir lu tant de troll, tant de FUD sur systemd, je trouve que c'est plutôt bien. C'est simple à utiliser et c'est puissant puisqu'on peut imaginer un jour remplacer LXC et cela ouvre plein de possibilités au niveau des serveurs, par exemple avoir des instances apache et nginx isolées dans les containers thin, ou encore des applications portables à la manière de Snap ou xdg-app. Pour 99% des utilisateurs de Linux la transition est transparente puisque prise en charge en amont par les mainteneurs.

Je prends donc le risque d'invoquer une armée de troll dans les commentaires mais moi j'approuve systemd.

Fil RSS des articles de ce mot clé