AviGNU - Mot-clé - GSettingsGroupe d'utilisateurs de logiciels libres du Grand Avignon2024-01-02T17:40:01+01:00Administrateururn:md5:8ed776652564792dba453bac492a5a6cDotclearInstaller manuellement la distribution Debianurn:md5:36c48a944b0e4c32fb10ea85dff183462020-09-21T11:03:00+02:002020-09-21T11:35:57+02:00Olivier DuchateauLinuxDebianDebootstrapGNOMEGSettingsHowtoUEFI<p>Dans ce billet, nous allons voir comment installer la distribution <a href="https://www.debian.org/index.fr.html">Debian</a> de manière manuelle (uniquement en ligne de commande) grâce à l'utilitaire <strong><a href="https://wiki.debian.org/Debootstrap">debootstrap</a></strong>.</p> <p>Nous n'allons pas partir de l'installateur de Debian, mais utiliser plutôt le « liveCD » <a href="https://www.finnix.org/">Finnix</a>.</p>
<p>1. Modifier (temporairement) l'agencement du clavier, en particulier si l'on a la disposition <strong>AZERTY</strong></p>
<pre>
loadkeys azerty
</pre>
<p>Il faut bien sûr taper <code>loqdkeys qwerty</code>.</p>
<p>2. Partitionner le disque dur. L'ordinateur dispose d'un <em>boot</em> UEFI, par conséquent il faudra une table de partitions en <strong>GPT</strong>.</p>
<pre>
parted /dev/sda
mklabel gpt
unit mb
mkpart primary 1 501
set 1 boot on
set 1 esp on
mkpart primary 501 82421
name 2 debian_root
mkpart primary 82421 85493
name 3 swap
mkpart primary 85493 258037
name 4 debian_home
quit</pre>
<p>Ce qui donne le résultat suivant :</p>
<pre>
Model: ATA WDC WD5000LPCX-6 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 501MB 500MB fat32 primary boot, esp
2 501MB 82,4GB 81,9GB ext4 debian_root
3 82,4GB 85,5GB 3072MB linux-swap(v1) swap
4 85,5GB 258GB 173GB ext4 debian_home</pre>
<p>Ensuite on s'attaque au formatage, tout d'abord la swap :</p>
<pre>
mkswap /dev/sda3
swapon /dev/sda3</pre>
<p>Ensuite aux autres partitions, en commençant par celle qui sera « montée » dans <code>/boot/efi</code>.</p>
<pre>
mkfs.fat -F32 /dev/sda1
mkfs.ext4 -L debian_root /dev/sda2
mkfs.ext4 -L debian_home /dev/sda4</pre>
<p>3. On prépare le <strong>chroot</strong>.</p>
<pre>
mkdir /mnt/debian
mount /dev/sda2 /mnt/debian
</pre>
<p>On peut désormais lancer la commande <code>debootstrap</code> :</p>
<pre>
debootstrap --arch amd64 testing /mnt/debian http://ftp.fr.debian.org/debian/
</pre>
<p>Ensuite on « monte » les autres partitions et certains fichiers spéciaux.</p>
<pre>
mkdir /mnt/debian/boot/efi
mount /dev/sda1 /mnt/debian/boot/efi
mount --bind /dev /mnt/debian/dev
mount -t devpts /dev/pts /mnt/debian/dev/pts
mount -t proc proc /mnt/debian/proc
mount -t sysfs sysfs /mnt/debian/sys
mount -t tmpfs tmpfs /mnt/debian/tmp
</pre>
<p>Finallement on peut exécuter la commande <code>chroot /mnt/debian</code>. À partir d'ici, nous sommes dans le futur système (nous sommes dorénavant sur le disque dur). On va pouvoir commencer à installer des paquets et configurer notre système.</p>
<pre>
apt install locales
dpk-reconfigure locales</pre>
<p>Personnellement je choisis <strong>fr_FR.UTF-8</strong>, on peut vérifier le fichier <code>/etc/default/locale</code> pour s'assurer que notre choix à bien été sauvegardé.</p>
<pre>
source /etc/default/locale
</pre>
<p>On continue,</p>
<pre>
apt install man-db
apt install keyboard-configuration console-setup
dpkg-reconfigure keyboard-configuration
apt install tzdata
dpkg-reconfigure tzdata</pre>
<p>Dans un <a href="https://framagit.org/olivierd/dotfiles/">dépôt</a>, je dispose de fichiers de configuration, donc il me faut <a href="https://git-scm.com/">Git</a>.</p>
<pre>
apt install git</pre>
<p>Comme je préfère Vi(m) à nano, je l'installe également :</p>
<pre>
apt install vim-nox</pre>
<p>Je sélectionne cet éditeur (il s'agit de la version en console) grâce à l'utilitaire <a href="https://avignu.wiki.tuxfamily.org/doku.php?id=documentation:linux:debian:update_alternatives">update-alternatives</a>.</p>
<p>Je peux appliquer mes propres réglages. Il faut faire attention quand on va cloner le dépôt, on est situé à la racine !</p>
<pre>
cd ~
git clone ....
</pre>
<p>Pour que ces fichiers soient également accessibles aux autres utilisateurs (pour l'instant nous sommes <strong>root</strong>), je les copie dans le répertoire <code>/etc/skel</code>.</p>
<p>J'aime bien personnaliser <code><a href="https://avignu.wiki.tuxfamily.org/doku.php?id=documentation:linux:ubuntu#configurer_apt">apt</a></code>. Ensuite je rajoute <strong>contrib</strong> et <strong>non-free</strong> au fichier <code>/etc/apt/sources.list</code> (<em>Cf.</em> le fichier en annexe).</p>
<p>Suivit de :</p>
<pre>
apt update && apt upgrade</pre>
<p>Avant d'installer le noyau et les différents <em>firmwares</em>, il faut créer le fichier <code>/etc/fstab</code> (<em>Cf.</em> le fichier en annexe).</p>
<pre>
apt search linux-image
apt install linux-image-....
apt install firmware-linux firmware-linux-nonfree firmware-misc-nonfree bluez-firmware firmware-amd-graphics
apt install network-manager</pre>
<p>Il est temps de passer au chargeur de démarrage :</p>
<pre>
apt install grub-efi
grub-install --efi-directory=/boot/efi --bootloader-id=debian
update-grub</pre>
<p>On vérifie l'ordre de démarrage avec l'utilitaire <code>efibootmgr</code>.</p>
<p>Il est temps de définir le mot de passe pour le compte <strong>root</strong> :</p>
<pre>
passwd</pre>
<p>On peut sortir du <em>chroot</em> et redémarrer pour vérifier que le système est correctement installé.</p>
<pre>
exit
umount -R /mnt/debian
shutdown -r now</pre>
<p>Si tout se passe bien, on va pouvoir finaliser notre installation. Dans le <em>chroot</em> systemd n'était pas lancer, mais cette fois-ci, il l'est, donc on peut <a href="https://avignu.wiki.tuxfamily.org/doku.php?id=documentation:linux:systemd#changer_le_nom_de_l_ordinateur">modifier le nom de la machine</a>, ajuster <a href="https://avignu.wiki.tuxfamily.org/doku.php?id=documentation:linux:systemd#changer_la_disposition_du_clavier">l'agencement du clavier</a>.</p>
<p>Il est préférable d'avoir un compte classique (<strong>root</strong> sert à administrer le système). On finit par l'installation de son <a href="https://wiki.debian.org/fr/DesktopEnvironment">bureau</a> préféré.</p>Envie d'un diaporama comme fond d'écran ?urn:md5:723390ba7f405471733955dcbb2fe0b32018-08-18T14:24:00+02:002018-08-18T13:55:02+02:00Olivier DuchateauProgrammationGLibGObjectGSettingsPyGObjectPython3XML<p>Où comment faire défiler une série de fond d'écran pour les environnements de bureau tels que <a href="https://www.gnome.org/">GNOME</a>, <a href="https://mate-desktop.org/">MATE</a>, ou <a href="https://github.com/linuxmint/Cinnamon">Cinnamon</a>.</p> <p>Si vous utilisez un environnement de bureau dont les préférences sont gérées par <a href="https://developer.gnome.org/gio/stable/GSettings.html">GSettings</a>, j'ai la solution pour réaliser facilement cette tâche.</p>
<h3>Le principe</h3>
<p>Il nous faut :</p>
<ul>
<li>Un ensemble d'images (généralement la plupart des distributions proposent un paquet contenant des fonds d'écran)</li>
<li>Définir un temps d'affichage (il s'agit de la durée pendant laquelle le fond d'écran sera affiché)</li>
<li>Définir la durée de la transition entre deux fonds d'écran</li>
<li>Modifier la propriété adéquate</li>
</ul>
<p>Les trois premiers éléments de la liste ci-dessus doivent être stockés dans un fichier <abbr title="Extensible Markup Language">XML</abbr>, ce qui peut être fastidieux si l'on a un grand nombre d'images. Il faut répéter un certains nombres d'opérations, pouvant entraîner des erreurs, d'où l'idée d'automatiser le processus.</p>
<p>Je suis parti à la recherche d'un programme en Python (supportant Python3 et ne faisant pas appelle au module <a href="https://docs.python.org/3/library/subprocess.html">subprocess</a>). Je n'ai rien trouvé qui me satisfasse, j'ai donc décidé de créer le mien, <a href="https://bitbucket.org/olivierduchateau/backgrounds-slideshow">backgrounds-slideshow</a>.</p>
<h3>Comment il s'utilise ?</h3>
<p>On doit tout d'abord « cloner » le dépôt (on va récupérer les sources du programme <sup>[<a href="http://avignu.tuxfamily.org/index.php?post/2018/08/18/Envie-d-un-diaporama-comme-fond-d-%C3%A9cran#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup>).</p>
<pre>
cd ~/Documents/
git clone https://bitbucket.org/olivierduchateau/backgrounds-slideshow.git
</pre>
<p>Un nouveau dossier <code>backgrounds-slideshow/</code> sera créer dans <code>~/Documents/</code>.</p>
<p>Il faut vérifier les dépendances. Le script utilise en grande partie les modules de la bibliothèque standard de Python. Cependant il nous faut également les <em>bindings</em> pour la bibliothèque <a href="https://developer.gnome.org/gobject/stable/">GObject</a> et notamment la partie <strong>instrospection</strong> à <a href="https://developer.gnome.org/glib/2.54/">GLib</a> (le paquet <sup>[<a href="http://avignu.tuxfamily.org/index.php?post/2018/08/18/Envie-d-un-diaporama-comme-fond-d-%C3%A9cran#wiki-footnote-2" id="rev-wiki-footnote-2">2</a>]</sup> porte un nom différent suivant la distribution).</p>
<p>Quand tout est en place, on peut tester le programme. On va afficher les différentes options :</p>
<pre>
python3 backgrounds-slideshow -h
usage: backgrounds-slideshow.py [-h] [-e FILE] [-R] [-r] [-t MIN] directory
positional arguments:
directory directory to scan
optional arguments:
-h, --help show this help message and exit
-e FILE, --exclude FILE
file to exclude (can be specified multiple times)
-R, --recursive scan a directory recursively
-r, --random shuffle elements
-t MIN, --time MIN how long image is going to be displayed (default
15min)
</pre>
<h4>Un aperçu des différentes options</h4>
<p>On constate qu'il y a deux sortes d'options, facultatives (celles situées entre les crochets) et celles obligatoires.</p>
<p>Il faut obligatoirement spécifier le chemin vers un dossier contenant des images, par exemple :</p>
<pre>
python3 backgrounds-slideshow.py /usr/share/backgrounds/
</pre>
<p>Ci-dessus, il s'agit du cas le plus simple.</p>
<p>Par défaut le script s'arrête uniquement aux fichiers contenus dans le répertoire en question. Si il existe des sous-dossiers, ils ne sont pas traités, pour y remédier, il faut utiliser l'option <strong>-R</strong>.</p>
<pre>
python3 backgrounds-slideshow.py -R /usr/share/backgrounds/
</pre>
<p>Le programme ne comptabilise pas les liens symboliques, c'est pourquoi, il faut un minimum de <strong>deux fichiers</strong> (sinon un message d'erreur va s'afficher).</p>
<p>On peut vouloir exclure un (ou plusieurs) fichier(s), cela se fait à l'aide de l'option <strong>-e</strong>. Par exemple, si l'on ne souhaite pas voir s'afficher les images <code>symbolics-1.png</code> et <code>blue-dark.jpg</code> :</p>
<pre>
python3 backgrounds-slideshow.py -R -e symbolics-1.png -e blue-dark.jpg /usr/share/backgrounds/
</pre>
<p>Si tout se passe bien, un fichier XML sera créer dans le répertoire <code>~/.cache/</code>, et il a comme suffixe <strong>-slideshow.xml</strong>.</p>
<p>Le programme met à jour automatiquement la propriété correspondant à la valeur du fond d'écran, pour les bureaux qui sont supportés. Pour finir, une version <abbr title="Graphical User Interface">GUI</abbr> est en cours de développement.</p>
<div class="footnotes"><h4>Notes</h4>
<p>[<a href="http://avignu.tuxfamily.org/index.php?post/2018/08/18/Envie-d-un-diaporama-comme-fond-d-%C3%A9cran#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] Il est gérer par <a href="https://git-scm.com/">Git</a>, donc il faut l'installer au préalable.</p>
<p>[<a href="http://avignu.tuxfamily.org/index.php?post/2018/08/18/Envie-d-un-diaporama-comme-fond-d-%C3%A9cran#rev-wiki-footnote-2" id="wiki-footnote-2">2</a>] Consultez le fichier <code>README.rst</code> du dépôt.</p></div>