Archlinux made simple
Archlinux est réputée être une distribution Linux très complexe a installer et a maintenir.
Je vais tenter ici de vous convaincre que ce n'est pas le cas, et qu'elle peut se monter très intéressante et très instructive a installer tout autant qu'a utiliser.
Il convient tout d'abord de rappeler a quels principes obéit Arch:
-
Le KISS : Keep It Simple and Stupid, Archlinux tente de faire des programmes simples et utilisables par tous. Avec comme base de simplicité les utilisateurs de LFS... Mais il n'empêche qu'avec un peu de bonne volonté, la configuration n'est pas si compliquée!
-
La philosophie UNIX : chaque programme est prévu pour ne remplir qu'une seule tâche. Bien entendu, cela ne concerne que les programmes conçus pour s’insérer dans la philosophie UNIX, et les installations de dépendances avec le gestionnaire de paquet d'Arch fonctionnent superbement bien.
De plus, posons les bases d'Arch : le gestionnaire de paquets s'appelle pacman, et les commandes de base sont :
-
recherche d'un paquet :
pacman -Ss paquet
-
installation d'un paquet :
sudo pacman -S paquet
-
désinstallation d'un paquet :
sudo pacman -R paquet
-
mise a jour de tous les paquets installés :
sudo pacman -Syu paquet
Archlinux est une distribution dite "rolling release", ce qui signifie qu'il n'y a pas de version a proprement dites, et que les paquets se mettent a jour en permanence, sans jamais changer la "version" d'Arch. Il n'y a d'ailleurs qu'une seule version de l'installeur sur le site, puisqu'une version plus ancienne n'aurait aucun sens.
Arch n'offre pas d'interface graphique par défaut : après avoir installé le système, vous n'aurez qu'une invite de commande. Heureusement, je vais ici vous guider a travers l'installation d'une interface graphique (mate, le fork de gnome 2)
L'installation d'Arch se fait par le réseau, veillez a avoir une connection WiFi ou filaire a proximité avant de suivre ce guide.
Ce guide utilise SystemV, alors qu'Arch va prochainement passer sous systemd. N'ayant pas encore eu le temps d’expérimenter assez avec ce dernier, je ferais un tutoriel pour passer votre Arch a systemd bientôt.
Bon, passons a l'explication de l'installation proprement dite :
Tout d'abord, téléchargeons l'iso d'arch la plus récente :
wget http://mir.archlinux.fr/iso/2012.09.07/archlinux-2012.09.07-dual.iso
Ensuite, gravons cette image sur un disque USB :
dd if=archlinux-2012.09.07-dual.iso of=/dev/sdX
Après reboot de la machine sur l'iso en question et choix de l'architecture, nous sommes accueillis par un shell root.
La première chose a faire est de paramétrer le clavier :
loadkeys fr
Puis nous pouvons passer a l'installation proprement dite. Partitionnement :
cfdisk # cfdisk est suffisamment clair pour ne pas nécessiter d'explications
formatage des partitions :
mkfs.ext4 /dev/sda1 # partition root
pacman -Syu btrfs-progs && mkfs.btrfs /dev/sda2 # partition home
mkswap /dev/sda3 && swapon /dev/sda3 # partition de swap
Montons les partitions nouvellement créées, puis installons le système :
mount /dev/sda1 /mnt
mkdir /mnt/home && mount /dev/sda2 /mnt/home
dhclient eth0 # si vous utilisez une connection filaire, sinon voire http://wiki.archlinux.fr/Wifi#Configuration
pacstrap /mnt base base-devel
genfstab -p /mnt > /mnt/etc/fstab
Allons prendre un café le temps que ça charge, puis installons les quelques paquets nécessaires a notre installation et au premier démarrage:
pacstrap /mnt syslinux btrfs-progs wireless_tools dhclient
Maintenant, passons sur notre install toute fraîche d'Arch :
arch-chroot /mnt bash
configurons les bases :
echo HOSTNAME > /etc/hostname
ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
date MMJJhhmmAAAA
hwclock --systohc
vim /etc/locale.gen # Décommentez les lignes correspondant au français : fr_FR.UTF-8 et fr_FR.ISO-8859-1
echo 'LANG="fr_FR.UTF-8"' > /etc/locale.conf
locale-gen
mkinitcpio -p linux
Enfin, vérifions que syslinux est correctement configuré :
vim /boot/syslinux/syslinux.cfg # il devrait y avoir "append root=/dev/sda1"
Si tout est correct, installons syslinux, et paramétrons un mot de passe root :
syslinux-install_update /dev/sda -mia
passwd root
Et voila, l'installation est terminée! Plus qu'a quitter la session et a redémarrer l'ordinateur!
exit
umount /mnt/home
umount /mnt
reboot
Fini!
Prenons une petite pause. La partie suivante de ce tutoriel consister en un paramétrage des principaux services nécessaires a l'utilisation d'un OS, disons, moyen :
-
Installation de MATE, le gestionnaire de bureau (voir http://mate-desktop.org/)
-
Installation de sudo et de networkmanager pour faire fonctionner les composants essentiels du système sans avoir a tout activer a la main a chaque démarrage
-
Installation de SLiM comme gestionnaire de login graphique, pour présenter une interface plus accueillante que la console, et configuration de celui-ci
-
Installation des principaux logiciels utiles non inclus dans mate ni base (yaourt, chromium, thunderbird, etc...).
Ce guide est bien sur optionnel, si vous souhaitez utiliser Arch avec un gestionnaire de bureau autre que mate, ou sans, vous pouvez vous arrêter ici.
Bon, reprenons.
Nous sommes donc sur une demande de mot de passe. Entrez donc le mot de passe paramétré plus haut pour le root, puis retapez la commande utilisée plus tôt pour vous connecter a internet.
Il convient d'ajouter le dépôt de MATE pour installer ce dernier, puis d'effectuer l'action en question :
vim /etc/pacman.conf
Ici, ajoutez les lignes suivantes :
[mate]
Server = http://repo.mate-desktop.org/archlinux/$arch
Installons maintenant les paquets :
pacman -Syu mate mate-extras dbus dbus-core alsa networkmanager sudo
Ajoutons un compte utilisateur pour utiliser les composants du système sans tout crasher a chaque fois :
useradd -g users -G wheel,audio,optical,lp,scanner,log,power,floppy,storage,games,video -m -s /bin/bash *votrenom*
passwd *votrenom*
su *votrenom*
Il faut maintenant éditer le fichier \~/.xinitrc pour préciser a X.org ce que l'on veut utiliser :
echo "exec ck-launch-session mate-session" > ~/.xinitrc
Profitons en pour ajouter les démons système au lancement :
vim /etc/rc.conf
Ajoutez donc dbus, alsa. hwclock
et networkmanager
dans la section
DAEMONS (entre les parenthèses, après crond normalement)
DAEMONS=(syslog-ng network crond dbus alsa hwclock networkmanager)
Pour éviter un reboot, il est ici possible de faire un
su
Puis un
/etc/rc.d/dbus start && /etc/rc.d/alsa start && /etc/rc.d/networkmanager start
Sinon, il est possible de juste redémarrer.
Une fois cela fait, profitez de ce moment pour vous autoriser vous même
a utiliser sudo. Loggez vous en root, et :
vim /etc/sudoers
Décommentez la ligne qui commence par # %wheel ALL=(ALL)
Sauvegardez le fichier, puis, après un su *votrenom*
, tentez de faire
un sudo ls /
Normalement, vous devriez avoir un listing du dossier /
Bon, maintenant, pourquoi ne pas tenter de lancer MATE?
C'est simple comme bonjour :
startx
Et PAF! Voila un MATE desktop flambant neuf a configurer!
Avant de faire ça, retournez sur un TTY (CTRL+ALT+Fx), loggez vous,
puis installez SLiM (sudo pacman -Syu slim
).
Configurons le:
echo "exec dbus-launch mate-session" > ~/.xinitrc && vim /etc/slim.conf
Éditez la ligne
"sessions xfce4,icewm-session,wmaker,blackbox
" de facon a
ce qu'elle ressemble a "sessions mate-session
"
Puis ajoutez slim dans /etc/rc.conf, dans la section DAEMONS.
Normalement, tout devrait fonctionner!
Ah oui, et pour installer thunderbird, firefox, chromium, etc...
sudo pacman -Syu chromium thunderbird xchat firefox rhythmbox pidgin transmission-gtk vlc
Voila! Et comme dirait @Spartition, c'est sale, mais qu'est-ce que c'est
bon!
A plus~
Les systèmes de fichiers
Un système de fichiers. Vous en avez surement déjà entendu parlé si vous avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous connaissez surement NTFS, EXT4, ou encore FAT32.
Ces différents noms désignent en effet des systèmes de fichiers. Mais qu'est-ce qu'un système de fichiers?
Pour comprendre cela, il faut déjà savoir ce qu'est exactement un fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio (kibioctet), en fonction du système de fichier utilisé.), qui est donc composé de bits, interprétés différemment en fonction du type de fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent, ou il commence ni où il s'arrête (je schématise un peu, mais c'est l'idée).
Ainsi, le système de fichier donne un cadre et un standard à l'arborescence des fichiers. Par exemple, le système de fichier ext4 utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio et mesurer la taille des fichiers en blocs de cette façon. Les systèmes de fichiers nécessitent l'inclusion de drivers dans le noyau pour pouvoir être pris en compte.
Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs, reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu près tout type de partition récente.
Il convient de bien faire la différence entre le système de fichier et l'arborescence des fichiers. Si l'arborescence des fichiers est en fait une entité virtuelle englobant la racine / et tous les fichiers et dossiers contenus dedans, le système de fichier permet a votre système GNU/Linux de distinguer les différents fichiers composants cette arborescence.
Détaillons maintenant les types de fichiers les plus répandus:
-
FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table, soit la définition d'un système de fichier), remplissent leur rôle le plus simplement possible. Ne permettant (historiquement) que des noms de 8 caractères (plus extension de trois caractères), ni chiffrement, ni système de distinction d'utilisateurs (DOS étant un système mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32, utlisants respectivement des blocs de 16 et 32 Kio.
-
NTFS :. Le NTFS (pour New Technology File System, rapport a Windows NT) est un système de fichier qui est apparu avec Windows XP, et qui était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a FAT différentes capacités dont le chiffrement, les liens symboliques, la compression et les quotas pour les volumes, permettant de limiter la taille maximum occupée dans une partition.
-
ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012. Ne différant pas énormément de NTFS, je le mentionne principalement parce qu'il est prévu qu'il soit le défaut pour Windows 8. Il apporte principalement la redondance, c'est a dire que chaque fichier possède une somme de contrôle en 64 bits stockée dans un fichier séparé pour éviter les corruption de disque.
-
Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers les plus utilisés sous linux pour le grand public. (Je traiterai ici d'ext4, puisque c'est le plus récent.) Il dispose de toutes les fonctions que l'on peut attendre d'un système de fichiers moderne, ni plus ni moins. Ainsi, ext4 est un système de fichiers journalisé, acceptant les capacités jusqu’à 1 Exioctet, et utilise l'allocation dite "par extent", ce qui signifie que la création d'un fichier réserve automatiquement les zones contiguës de façon a réduire la fragmentation.
-
ReiserFS : ce système de fichiers, créé par le (légèrement mégalo) programmeur Hans Reiser, est a retenir pour avoir été le premier système de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des 4 milliards. Le but de ce système est de créer un système polyvalent, a la fois système de fichiers et base de donnée (de part sa grande capacité en terme de nombre de fichiers et de l'utilisation d'un journal.)
-
Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi l'allocation par extent, mais possède de plus un système de sous-volumes, qui permet d’accéder a plusieurs arborescences de fichiers montées en même temps (système pratique et utile pour faire des snapshots de systèmes.). Il permet aussi de redimensionner a chaud la taille des partitions, en les agrandissant ou en les rétrécissant, est compatible avec LVM, a un système de checking intégré (btrfsck), et utilise un algorithme de compression appelé LZ4, qui accélère les accès aux fichiers compressés d'environ 30% par rapport a LZO, le système utilisé dans ext4.
-
HFS+ : le système de fichier présent sur tous les macs a des capacités relativement standards, et ressemble énormément a l'ext3. Il supporte cependant les liens directs vers les dossiers, fonction rare sur les systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau dans les années a venir
-
ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux et *BSD, est, tel Btrfs, a la fois un système de fichier et un remplaçant/compatible avec LVM, C'est un système de fichiers conçu principalement pour les serveurs, et il intègre ainsi un système de redondance des données pour éviter les corruptions, un mode RAID-Z (apparenté au RAID5), des checks d’intégrité en continu, des snapshots, etc...
Comme on a pu le voir, les systèmes de fichiers disponibles sont légions. Cependant, le plus adapté a Linux et a une utilisation grand public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier n'est pas aujourd'hui proposé par défaut sur les distributions les plus utilisées, au profit de l'ext4, qui commence a accuser son âge...
Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au fonctionnement du système, sont en fait de première importance, et ce choix ne devrait pas être laissé au hasard, et être mis a jour régulièrement (pour éviter les failles de sécurité...)
Bon courage, et bon choix pour votre prochain système.
Le Quenya - Épisode ø
Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusqu’à il y a peu...), le nom que donnait Tolkien au dialecte principal parlé par les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte avant de commencer cet article que l'une des œuvres les plus impressionnantes de Tolkien, si ce n'est la plus grande, est l'impressionnant travail linguistique passé sur les différentes langues présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya, la langue des nains, qui est appelé le khazalide, etc.
En effet, a contrario des "langues" développées dans d'autres œuvres littéraires telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot de français (ou d'anglais) a un mot de sa "langue", les langues de l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des racines logiques, des systèmes de grammaire et de conjugaison propres, une logique inhérente dans la prononciation ou l'orthographe, et ainsi de suite.
Un véritable rêve de linguiste donc, puisque ces langues sont pratiquement entièrement documentées par Tolkien lui même (voir l'appendice E du SdA, particulièrement instructif a ce sujet.)
J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster ici des résumés des cours que je suis ( disponibles ici , une traduction en français est disponible la en pdf ), et des infos ici toutes les deux semaines.
Si ce sujet vous intéresse, le compte twitter @Quenya101 poste régulièrement des informations sur le sujet, et pour plus d'infos sur le sujet, vous pouvez en trouver par ici.
Et en tant que première leçon, vous pouvez apprendre que ce mot que vous avez prononcé comme le Kenya tout le long de cet article se prononce en fait [Kwenïa], ou bien Qwenya!
Update a propos du blog
Bonsoir! Un petit post pour faire un peu le point sur ce blog.
Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais
que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y
avoir un tantinet réfléchi, ceci est du a deux points principaux :
-
Tout d'abord, le manque d'inspiration, tout simplement. C'est assez compliqué de trouver des sujets intéressants liés a l'informatique, et qui méritent un article. Je vous invite d'ailleurs a me suggérer des sujets via les commentaires ou twitter (@Wxcafe)
-
Ensuite, le délai de 8 jours est trop court pour me permettre de faire les recherches nécessaires, tout en manageant mes cours et mon temps libre.
A cause de cela, j'ai pris la décision de changer le rythme de parution des articles a un *minimum* d'un post tous les 10 jours. Bien entendu, si j'ai de l'inspiration en trop, plus de posts sont envisageables.
Voila. A part ca, je tiens a vous remercier de me lire (c'est assez étonnant de voir ca...), et je précise que je vais ajouter une page About Me, qui bien entendu rassemblera des informations sur moi, ma vie, mon oeuvre :P
Ceci dit, je vais bosser un peu sur le prochain article.
A plus tard!
Introduction a bash en tant que language de programmation.
L’interpréteur de commandes bash (Bourne Again SHell) est possiblement le shell le plus connu, notamment grâce a son intégration en tant que shell par défaut dans les distributions Linux les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva - Mageia, etc...).
Cependant, il n'est souvent connu qu'en tant qu’interpréteur de commande. Alors qu'en réalité, le bash est un langage de programmation (presque) complet! Ainsi, il intègre les structures de contrôle habituelles ( pour mémoire, les structures de contrôle comprennent les conditions (les ifs), les boucles (les while), et les choix (les case), entre autres.), et est donc ce que l'on pourrait appeler un langage de script, interprété, de la même façon que python, a la difference près qu'il contient un prompt (un système d'entrée de commande interactif) bien plus complet et développé que python.
Cependant, les programmes en bash ne sont executables que dans un environnement de type UNIX, et donc pas sous Windows (cygwin (cygwin.com) propose ceci dit un système permettant d'utiliser bash sous windows. Il faut malgré tout convenir que cet environnement est bien plus compliqué a manipuler, et globalement ne permet pas d'acceder a des portages de qualité satisfaisante.)
Ainsi, il est possible de créer des fichiers .sh, contenant des instructions bash mises a la suite (de la même façon qu'un script BATCH Windows .bat), et faisant appel autant aux commandes internes de bash, aussi bien que les commandes externes mises en place par les programmes installés sur le système, exactement comme dans une invite de commande. Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit panda roux directement dans la boite magique, tandis qu'un if [condition] suivi d'un then (quelque chose) lancera le fameux quelque chose suscité si la condition est vérifiée. Un peu comme en C, quoi.
De cette façon, et avec quelques informations et connaissances, il est facile de comprendre le fonctionnement de la programmation en bash. Quelques exemples commentés:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/bin/bash
# La ligne du dessus est très importante, c'est elle qui dit a bash quel doit être
# l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'interpréter
# lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire
# executer du python, par exemple, en mettant #!/usr/bin/python a la place.
echo "this is a test of bash as a simple script manager" # echo est une commande d'affichage de message.
echo "what's your name, user?"
read your_name # la commande read permet de demander a l'utilisateur de donner une
# information, stockée dans la variable en paramètre.
echo $your_name "is your name" # echo permet aussi d'afficher la valeur de variables.
# Ici, on renvoie la variable remplie précédemment, suivie d'un message.
exit # cet appel a exit n'est pas obligatoire, mais donne un aspect plus
# propre au code. Il ne quittera pas la session de terminal, cependant.
|
Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite d'être clair quand aux capacités et a la simplicité du bash en tant que language de programmation. Alors en effet, nous n'avons ici absolument pas utilisé les capacités de bash en lui même, et n'avons fait que le renvoyer a des programmes externes (sauf read, il est vrai). Voyons maintenant la syntaxe de bash quand il s'agit d'utiliser les structures de contrôle:
1 2 3 4 5 6 7 8 9 10 | #!/bin/bash
echo "welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?"
read host_name
if [ $host_name == $HOSTNAME ] ## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système.
then echo "you told the truth!"
fi ## le fi est la commande fermant le if, tout comme le EndIf en basic. C'est un peu vieillot, mais important en bash.
if [ $host_name != $HOSTNAME ] ## l'opérateur != est l'inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes.
then echo "you lied!"
fi
exit
|
Voila un petit programme permettant d'apprendre la syntaxe du if en bash. comme vous pouvez le voir, le language est plutôt lite, et la structure if n'est pas très difficile a prendre en main.
Passons maintenant au while:
1 2 3 4 5 6 7 | #!/bin/bash
echo "what is your name?"
read name
while [ 1 < 10 ] ## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.
do echo "i love" $name
done
exit
|
Ce petit programme permet d'observer les bases de while (qui est la boucle de base en bash).
Le troisième opérateur de bash est case. Voyons:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #!/bin/bash
echo "please enter a number between one and five"
read number
case $number in
1)
echo "the choosen number was one"
;;
2)
echo "the choosen number was two"
;;
3)
echo "the choosen number was three"
;;
4)
echo "the choosen number was four"
;;
5)
echo "the choosen number was five"
;;
*)
echo "this number is not correct"
;;
esac
exit
|
case est un opérateur plus complexe a utiliser a bon escient, et sert a
faire des ifs multiples sans avoir a taper des dizaines de lignes de
code.
(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre
que le code vérifie chacune des conditions : le 1) est validé si la
valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc..
le *) désigne toutes les valeurs, et est donc validé si aucune autre
valeur n'a précédemment acceptée.
Quelques notions manquent ici:
- les nombres aléatoires sont générés par un appel a la variable
\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a
16 bits donc). il est possible de faire des invocations a des nombres
aléatoires plus grands, mais les méthodes permettant de faire cela sont
plus complexes, et je ne les aborderai donc pas ici.
- comme vous avez pu le constater, les variables sont désignées en tant
que telles par l'utilisation d'un symbole \$ au début de leur nom.
Ainsi, echo number renverra "number", tandis que echo \$number renverra
le résultat de la variable \$number.
être utilisées dans un programme bash.
- comme vous avez pu le constater, les commandes doivent tenir en
théorie en une ligne. Cependant, le caractère \ permet de retourner a
la ligne en faisant considérer a bash qu'il s'agit de la même ligne.
Globalement, il faut admettre que bash n'a pas vocation a être un
langage de programmation extrêmement développé. Sans framework
graphique, avec peu de manières d'utiliser de grandes variables, ou
encore une gestion de la mémoire risible, bash n'a rien d'un langage de
développement professionnel.
Cependant, le simple fait qu'il soit considéré comme un langage de
programmation a part entière font de lui un langage de script d'une
puissance incontestable, et sa simplicité et sa grande popularité font
de lui un langage de choix pour apprendre la programmation simplement et
sans trop se prendre la tête.
J'espère que cet article aura été utile a certain-e-s, et je vous souhaite bonne chance dans votre découverte de la programmation (n'allez pas voir ceux qui font de l'orienté objet, c'est des méchants :3)
Les différentes couches d'un système d'exploitation
Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques années (plus ou moins, parce que j'ai toujours un Windows en dual boot, principalement pour les jeux (possiblement plus pour longtemps, avec l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou moins bien mon système. Or il y a plusieurs choses a savoir sur les systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est le système de couches.
Un système d'exploitation (de type UNIX, \<troll>enfin un vrai système quoi. \</troll>) incorpore plusieurs systèmes de couches.
Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique, c'est a dire que tous les composants sont intégrés au kernel. Ce qui signifie que rien ne peut être ajouté au noyau sans recompiler celui ci. Or, quand on sait que le noyau comprend entre autres les drivers du matériel et des systèmes de fichier, cela peut poser des problèmes quand a la taille du kernel et a la licence libre de ce dernier.
Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui signifie que des modules peuvent être chargé a tout moment en cours d’exécution, ce qui permet l'utilisation de nouveaux systèmes de fichiers a chaud, ou l'insertion de matériel et l'installation de drivers sans interrompre l’exécution du système (Windows utilise un système de fausse installation de drivers pour le matériel externe, et un système de pré-installation des drivers pour les périphériques dits "plug and play")
Après le noyau intervient le système. Or, au tous premiers instants du boot, les systèmes GNU/Linux utilisent un système permettant de limiter l'utilisation de ressources systèmes si elles ne sont pas nécessaires, et incorpore ainsi un système dit de "runlevels"
Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce runlevel permet de tester le bon démarrage du système sans avoir a effectuer de manipulation pour le ré-éteindre
Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté étant donné que ce runlevel donne accès a un système en étant automatiquement loggé en tant que root, avec tous les autres utilisateurs désactivés, de même que tous les systèmes de réseaux
Le runlevel 2 est appelé mode multi user, et vous mets en face d'un système classique. en ligne de commande, mais avec tous les systèmes de réseau désactivés.
Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux activés.
Le runlevel 4 n'est pas officiellement défini, et est censé être activable en fonction des besoins de l'utilisateur. Sur la plupart des distributions grand public, ce runlevel est lié au...
Runlevel 5! Multi-user, networking, with working GUI! c'est le système tel que vous le connaissez, avec l'interface graphique et le système de login graphique.
Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine quand il devient le runlevel courant.
(Il est a noter que Debian, et donc toutes les distribs qui en sont dérivées, ne font pas de distinction entre les differents runlevels du 2 au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login et une interface graphique, et un mode réseau fonctionnel, bref avec des fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)
Il est possible de changer de runlevel grâce a la commande runlevel (oui, c'est évident...)
Les systèmes Linux utilisent aussi un système dit de SandBox , qui en informatique est un système permettant d'isoler les processus les uns des autres. Ainsi, la pile réseau, qui est le système auquel les différents processus envoient les différents paquets qui doivent sortir de la machine , et qui redistribue ces paquets, est isolée du reste du système, en cela qu'aucun des autres processus ne peuvent modifier cette pile hors du runlevel 1 ou 2.
De la même façon, le navigateur chrom/ium fait fonctionner tous les onglets, ainsi que toutes les extensions, dans des processus différents. Certaines distributions linux implémentent un système de cette sorte pour toutes les applications, ou seulement pour certaines. ainsi Chakra Linux a un système d'installation d'applications dans des disques virtuels, ce qui permet une sécurité totale du processus.
Voila, j'espère vous en avoir appris un peu sur le fonctionnement des différentes couches de linux, et j'espère que cet article vous poussera a tester un peu votre système et a vous amuser avec les différents runlevels
La programmation expliquée simplement
Salut!
Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire
récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé
pas mal de temps assez occupé.
Enfin, après un certain temps a farfouiller au millieu des connecteurs
SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques
durs, je suis de retour pour un court article.
Du coup, je m'étais dit que j'allais reprendre sur le thème de
l'informatique expliquée au grand public, en tentant d'aller un peu plus
loin que la dernière fois sur le thème de la programmation
Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur.
Si a peu près tout le monde sait que "les ordinateurs, ils ne
comprennent que les 1 et les 0!", peu de gens savent comment cela
fonctionne en détail.
Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà
des notions de base en informatique. Ainsi, vous savez surement que les
ordinateurs fonctionnent avec des programmes, qui sont composés de
code.
Ainsi, il faut comprendre que le code (source) est "compilé" en un
fichier "binaire". Un fichier binaire est un fichier comprenant les
instructions telles qu’exécutées par le processeur, et donc absolument
illisible pour un humain.
La compilation est le processus qui transforme le code source en
binaire executable. Les binaires ont, sous Windows, l'extension .exe,
tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension
particulière.
Ceci étant dit, il faut comprendre que certains langages sont plus
proches que d'autres du langage processeur, les langages les plus
proches sont dits de "bas niveau". Les langages les plus éloignés sont
donc dits de haut niveau.
Par exemple, l'assembleur est l'un des languages de plus bas niveau, tandis que python par exemple est un langage de plus haut niveau. Les langages de haut niveau sont souvent bien plus simples a comprendre et a apprendre que les langages de bas niveau
Ainsi, en C, un langage de niveau relativement bas, pour afficher "hello world" sur l'écran, le code nécessaire est :
#include
void main() {
printf("hello world");
return 0;
}
le même programme en python s'écrit :
print "hello world"
et n'a pas besoin d'être compilé , puisqu'il peut être intepreté directement.
Python utilise en effet un système similaire a Java en ayant un interpréteur dit "runtime" ou "temps réel", qui interprète le programme sans le compiler. Java utilise un système légèrement différent, puisque le code a besoin d'être compilé, mais est interpreté par un interpréteur et non par le processeur.
Cette méthode permet le fameux "code once, run everywhere", ce qui signifie que le même code est exécutable sur quasiment tous les systèmes d'exploitation (en fait, tous ceux sur lesquels l’interpréteur est disponible.)
Voila, je vous laisse sur le fonctionnement de Java et de Python, et je
vais me coucher.
A bientôt!
GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère
GNU/Linux est un vaste et extraordinaire territoire technologique, mais je ne vais pas m'attarder ici sur les aspects profondément techniques de ce territoire pour faire plutôt une sorte d'introduction a ce qu'est vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de connaissances en informatique.
GNU/Linux, que j’abrégerai ici en Linux pour plus de simplicité, est un Système d'Exploitation. Un système d'exploitation est, pour simplifier, un ensemble d'outils informatiques qui vous permettent d'utiliser votre ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation de système d'exploitation (Operating System en anglais) est OS. Les 4 principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et Solaris. Les trois derniers sont issus d'un autre système, plus ancien, nommé UNIX.
De ce fait, on pourrait penser que Linux remplace complètement Windows une fois installé, et comprend une interface graphique, et toutes sortes d'utilitaires permettant a l'utilisateur d'utiliser le système (sous Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer. Pour l'interface graphique, pensez a... Pensez que votre système affiche autre chose que des lignes de commande.) Or non, une fois installé, Linux en lui même ne vous afficherait aucune interface graphique, et s'il est effectivement livré avec des utilitaires, ils ne sont que des programmes en ligne de commande. Autant les utilisateurs avancés sauront s'en servir, et pourront argumenter que c'est plus efficace ou plus rapide, autant les utilisateurs basiques préfèrent une interface graphique. Alors comment en obtenir une?
Ici, il convient de faire une précision importante. Si il n'existe qu'une seule version de Windows, ou de Mac OS, il existe en fait plusieurs centaines de "versions" différentes de Linux. Appelées distributions, ces dernière sont développées par des groupes complètement séparés, et se basent sur le fait que Linux soit entièrement placé sous licence libre (ce qui leur permet de l'utiliser a leur guise, a condition que leur travail soit lui aussi placé sous licence libre). De ce fait, de nombreuses distributions existent et se développent en parallèle. On peut ainsi citer Debian, qui est l'une des distributions les plus importantes, ou encore Ubuntu, qui est l'une des plus connues et des plus simples a utiliser.
Ainsi, ces distributions intègrent une interface graphique. Cependant, grâce a la liberté dont bénéficient les développeurs sous Linux, il existe de nombreuses interfaces graphiques différentes : Unity, la nouvelle interface d'Ubuntu; GNOME , une interface qui vise a la simplicité; ou encore KDE, une interface utilisateur ressemblant a Windows 7.
Ainsi, le choix astronomique de distributions Linux a bien un sens : chacune d'entre elle intègre des outils différents. Par exemple, Debian intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend particulièrement stable. Ubuntu intègre Unity, ce qui en fait une distribution particulièrement intuitive. Linux Mint intègre Cinnamon, qui est une version dérivée de GNOME 3, ce qui permet encore une autre expérience. Et Arch Linux n'intègre pas d'interface graphique du tout, ce qui permet a l'utilisateur de choisir entre les multiples interfaces existantes.
Ce qu'il est important de retenir de cela, c'est que Linux est un OS complètement libre, ce qui signifie que n'importe qui peut modifier et utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi, Linux est un OS qui est véritablement créé par des passionnés, pour tous et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus. Cependant, Linux donne la possibilité a l'utilisateur de le rendre affreusement complexe, mais aussi de le rendre adapté a ses besoins, quels que soient ceux ci. Et c'est la que réside l'incroyable puissance de ce Système d'Exploitation. Il est extraordinairement adaptable.
N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas technophiles. Ils pourraient adorer, et peut être même le devenir :)
A bientôt!
Débuts, présentation, etc...
Bonjour!
Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur Twitter, mais aussi sur IRC (Je traîne pas mal sur irc.freenode.net/##nolife et #debian-fr)
J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je fais partie de ce genre de personne qui sont capables d'investir tout leur temps et leur énergie a s’intéresser a un sujet en particulier, et qui ne peuvent pas vivre sans leurs passions, avec une petite différence cependant, qui est que je m’intéresse a plusieurs choses : l'informatique, qui est un champ tellement large qu'on peut passer une vie a apprendre des choses dessus, et plus particulièrement à l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres {bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les trolls seront a partir de maintenant indiqués avec le tag [tr]] du libre, je préfère utiliser de l'open-source si c'est possible}, programmation en C, python et java, etc...) , mais aussi a l’électronique.
Dans un tout autre registre, je m’intéresse aussi beaucoup aux différents aspects du féminisme et des égalités sexuelles (anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) , et a la culture dite "geek" en général.
Je tenterai de poster ici le plus souvent possible, mais j'ai de gros problèmes en terme de régularité de post, donc ne vous inquiétez pas si vous ne voyez rien pendant deux semaines.
Merci beaucoup de votre attention, et a bientôt!