2022/11/19

Wine 7.0.1 et Debian 11

Mon premier ordinateur était un Compaq Presario. Il venait avec des CDs d'installation que j'ai utilisé quelques fois pendant la vie de l'ordinateur. Presque 20 ans plus tard, je n'ai plus l'ordinateur, mais j'ai encore les CDs. En fouillant, j'ai trouvé un exécutable dans un dossier nommé « wallpaper ». Près de ce dossier, il y a un fichier qui montre comment lancer l'exécutable pour installer les fonds d'écrans qui venaient avec cet ordinateur.

Je me suis souvenu de Wine. Je l'ai installé sur mon Debian 11 et j'ai réussi à retrouver les fonds d'écrans.

Voici les commandes pour installer Wine:
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bullseye/winehq-bullseye.sources
sudo apt-get update
sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
sudo apt-get update
sudo dpkg --add-architecture i386
sudo apt-get dist-upgrade
sudo apt-get install wine-stable-amd64
sudo apt-get update
sudo apt-get clean
sudo apt-get autoremove
sudo apt-get install wine-stable-i386
sudo apt install --install-recommends winehq-stable
wine --version


Après avoir copié l'exécutable dans /home/votre_utilisateur/.wine/drive_c/, on peut ouvrir un terminal et:
cd /home/votre_utilisateur/.wine/drive_c/
wine appl.zip/wallpaper/setup.exe -s
find . -name *.BMP

Dans un futur message, j'aimerais compléter l'installation du runtime de C# à partir des instructions sur ce site:
https://wiki.winehq.org/Mono

Liens qui m'ont aidés (en anglais):
https://wiki.winehq.org/Debian

Créer des gifs avec gifine sous Debian 11

Si vous avez une zone intéressante sur votre écran que vous voulez capturer, vous pouvez avec gifine!Créer des gifs avec gifine sous Debian 11

J'ai utilisé les commandes suivantes pour l'installer sous Debian 11.

sudo apt-get install libx11-dev
sudo apt-get install ffmpeg
sudo apt-get install graphicsmagick
sudo apt-get install gifsicle
sudo apt-get install luarocks
sudo luarocks install --server=https://luarocks.org/dev gifine
git clone https://github.com/ropery/xrectsel.git
cd xrectsel/
./bootstrap
./configure --prefix /usr
make
sudo make DESTDIR="$directory" install
gifine


Le make install doit être exécuté avec sudo parce que le programme sera installé dans /usr/bin.

Après le lancement, utiliser le bouton Record rectangle pour ensuite sélectionner une portion de l'écran et l'enregistrer.



Un exemple:


Liens qui m'ont aidé (en anglais):
https://www.howtoforge.com/tutorial/record-screen-to-animated-gif-on-linux/
https://github.com/ropery/xrectsel
https://luarocks.org/

2022/11/13

Écouter de la musique à partir du terminal

Avec un vieil ordinateur comme un ASUS 1001PX, on peut essayer d'utiliser une interface graphique, mais c'est assez lent. J'ai essayé Ubuntu 20.04 et je suis tout de suite passé à un des terminaux auxquels on peut accéder avec CTRL + ALT + F2 et les autres touches de fonction.


 Avec tmux on peut avoir plusieurs terminaux dans le même terminal en connaissant les raccourcis clavier. On l'installe facilement avec sudo apt-get install tmux.

Ensuite, amixer permet de changer le volume. Par exemple, amixer set Headphone playback 100% unmute peut être utile si on a branché des hauts-parleurs dans la sortie audio du portable. Si on veut utiliser les hauts-parleurs normaux, amixer set Speaker playback 50% unmute. Il existe aussi le volume global qui affecte tous les autres soit Master.

Admettons un dossier musique qui contient des fichiers audio. On peut utiliser nvlc musique dans le terminal pour jouer ces fichiers. On peut installer vlc et nvlc avec sudo apt-get install.

Parfois, on peut s'emêler avec les commandes amixer et ne plus être capable d'entendre de musique. On peut facilement s'en sortir avec l'interface graphique de nouveau en y retournant avec CTRL + ALT + F1.

Enregistrer des VHS sous Ubuntu avec VLC

Ayant des cassettes VHS chez mes parents, j'ai trouvé cette manière pour les enregistrer avec VLC 3.0.9.2. J'utilise Ubuntu 20.4 LTS. Il faut avoir sous la main un dispositif WinTV fabriqué par Hauppauge. J'utilise un WinTV-HVR-950Q qui se connecte en USB.

Étape 1 : Installer Hauppauge 

Il faut ajouter le répertoire de hauppauge sous linux. Il faut aussi installer VLC et installer linux-mediatree et linux-firmware-hauppauge qui permettent de communiquer avec le périphérique WinTV.

sudo add-apt-repository ppa:b-rad/kernel+mediatree+hauppauge
sudo apt-get update
sudo apt-get install linux-mediatree
sudo apt-get install vlc
reboot
sudo apt-get install linux-firmware-hauppauge
reboot

Étape 2 : Trouver le bon périphérique video et le bon périphérique audio

Une fois l'ordinateur configuré pour Hauppauge et redémarré avec la clé USB WinTV-HVR-950Q connectée, on peut utiliser VLC pour enregistrer. J'ai connecté le VHS avec un câble coaxial et j'ai aussi connecté les fils audio blanc et rouge sur le WinTV.

Il faut tester les options un peu pour trouver le bon périphérique vidéo et le bon périphérique audio. Le plus simple pour ça est d'ouvrir un média et de sélectionner l'onglet carte de capture. Dans nom d'un périphérique, sur les deux ordinateurs que j'ai essayé (HP DV6700 et ASUS 1001PX) le bon périphérique est /dev/video2. Pour le DV6700, le bon périphérique audio est hw:1,0. Pour le 1001PX, c'est hw:2,0.

Pour terminer la configuration video, il faut choisir le standard vidéo NTSC et entrer une fréquence de 61 250 kHz.

Pour terminer la configuration audio, il faut cocher afficher plus d'options et ajouter à la main alsa:// devant hw dans la zone de text éditer les options. Sinon, lorsqu'on démarrera le flux, VLC se plaindra qu'il ne peut pas ouvrir le périphérique audio. Ça me semble être un bogue de VLC.

Étape 3 : Enregistrer

Une fois que la vidéo est visible et que le son est bon, on peut aller dans le menu playback de VLC et cliquer sur record. Par défaut, la vidéo s'enregistre dans /home/utilisateur/videos.

Après avoir enregistré un court segment, on peut le rejouer dans VLC et aller voir les informations sur le média (une des options dans le menu outils de VLC si je me souviens).

Dans mon cas, j'ai du Packed YUV 4:2:2, U:Y:VY à 720*480 à environ 30 images par seconde pour la vidéo. J'ai du araw, stéréo, 48 000 Hz, 16 bits pour l'audio.

Attention à l'espace disque! Une minute d'enregistrement est d'une taille d'environ 1 Go. Sur le HP DV6700 avec un SSD ceci fonctionnait bien, mais sur le ASUS 1001PX avec un disque mécanique, le fichier avi résultant était brisé. Peut-être que le disque était trop lent.

Option 3.1 : Enregistrer et convertir

Au lieu d'ouvrir un média, on peut choisir l'option de convertir dans VLC. J'ai essayé de choisir un codec H.264 + MP3, mais l'ordinateur ne semble pas assez performant pour bien afficher la vidéo tout en la convertissant. J'utilise d'assez vieux ordinateurs portables alors c'est peut-être ça. Avec un meilleur matériel, la conversion en direct devrait bien se passer j'imagine

On veut voir la vidéo pendant qu'elle se converti pour s'assurer que la vidéo et le son sont bons. Souvent, en ouvrant le flux vidéo, la couleur de l'image sera mauve et verte et très difficile à regarder. Pour régler ça, fermer et réouvrir le flux jusqu'à ce que l'image soit de la bonne couleur. Ça semble être un autre bogue qui vient de je ne sais où.

Sur le ASUS 1001PX, je n'avais de choix que de convertir. Je redémarrais l'ordinateur avant chaque nouvelle conversion pour m'assurer d'éviter l'écran mauve. Aussi, quand on part la conversion (en ayant choisi d'afficher la vidéo pendant qu'elle est convertie) on a le droit à 2 ou 3 images vidéo. C'est normalement suffisant pour s'assurer que le flux est de la bonne couleur.

Quelques détails de performance supplémentaires :

En convertissant en mp4, j'ai eu 135 Mo pour 9 minutes.

Si l’image est vert et mauve dans VLC, ça va enregistrer avec ces couleurs là.

J’ai essaye H.264+MP3 320 kbs. Apres 37 minutes, j'avais 646 Mo, le son commençait à être distortionné en direct, mais dans l'enregistrement, tout était beau finalement.

Quelques liens en anglais qui ont été utiles pour moi : 

https://forum.videolan.org/viewtopic.php?t=103343
https://www.hauppauge.com/pages/support/suppor_linux.html

https://www.youtube.com/watch?v=_rMYICzKS0k
https://en.wikipedia.org/wiki/Television_channel_frequencies

Quelques paramètres que j'ai copié des options avancées de VLC sur l'ASUS 1001PX :

v4l2:///dev/video0

:v4l2-standard=NTSC:v4l2-tuner-frequency=61250 :input-slave=alsa://hw:1,0 :live-caching=300

La fréquence de 61 250 kHz est la fréquence de l'onde porteuse de la vidéo du canal 3 en amérique du nord. Je me souvenais très bien du canal 3 quand j'essayais de regarder des VHS étant enfant.

 

2022/11/06

Sauvegarder, charger et écrire une image de disque dur avec dd, losetup et mount

Après IBM 560Z, SSD M.2 NGFF et FreeDos 1.3, j'ai continué à pousser un IBM 600X (Pentium III 495? MHz 576 MB de RAM, disque dur de 20Go) à ses limites.

L'ordinateur fabriqué en 1999 a un lecteur disque et deux ports PCMCIA et est venu avec Windows 2000 Professionnel. J'ai utilisé une carte Wifi PCMCIA D-Link et je me suis connecté à mon réseau local pour atteindre internet pour installer Debian 9.13.0 i386.

J'allège le texte en assumant que vous savez certaines choses. Si quelque chose n'est pas clair, allez voir les notes supplémentaires plus bas.

Étapes:

1. Sauvegarder le vieux disque dur mécanique de 20Go.

2. Monter l'image dans un autre ordinateur pour l'inspecter.

3. Mettre l'image sur le nouveau SSD. Attention! Il doit être déjà initialisé.

4. Installer Debian 9.13.0 i386. 


Étape 1 : Sauvegarder le vieux disque dur mécanique de 20Go.

On garde le disque dur dans le portable. On met le CD de Damn Small Linux dans le lecteur CD. On ouvre un terminal, on sudo su pour avoir les privilèges administrateurs (root).

On utilise un disque dur externe qu'on peut connecter avec un fil micro USB. Même un disque dur externe récent USB3.0 devrait supporter micro USB et fonctionner dans un ancien mode USB.

Utiliser fdisk -l pour s'assurer que le disque USB est reconnu et pour s'assurer que le disque dur est présent. Le disque dur était à /dev/hda pour moi et le disque USB était à /dev/sda et la partition ext2 à /dev/sda1. Tout ça peut changer selon votre matériel.

Il faut monter le disque USB avec mkdir mon_dossier et mount /dev/sda1 mon_dossier.

Entrer dd if=/dev/hda of=./mon_dossier/600x1.dd conv=sync,noerror bs=65536. Pourquoi bs=65536? Initialement, j'ai eu des  problèmes à copier à partir d'un adapteur IDE à USB semi-défectueux. Je suis seulement capable d'initialiser de nouveaux disques avec. J'ai ensuite réalisé que je pouvais utiliser un disque USB moderne et j'ai gardé cette même valeur. La sauvegard m'a pris environ 9 heures 30 minutes.


Étape 2 : Inspecter l'image.

Avec fdisk -l, on peut voir les détails de l'image faite avec dd. Les détails devraient être très similaires à ce qu'on voit pour le disque dur d'origine. Voici un exemple :

# fdisk -l 600x1.dd
Disk 600x1.dd: 18.63 GiB, 20003880960 bytes, 39070080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x899e899e

Device     Boot Start      End  Sectors  Size Id Type
600x1.dd1  *       63 39070079 39070017 18.6G  c W95 FAT32 (LBA) 

On voit que les secteurs sont de 512 octets. On voit la taille de la première partition et son format de fichier. Je voyais le même arrangement au niveau binaire pour le disque dur. On calcule le début de la partition avec 63 x 512 = 32256 octets à partir du début de l'image. La grandeur de la partition est de 39070017 x 512 = 20003848704 octets.

Ensuite, on utilise losetup -v -r -f -o 32256 --sizelimit 20003848704 600x1.dd. La partition FAT32 dans l'image sera montée dans un des répertoires /dev/loop. Pour trouver lequel, losetup -r -f --show 600x1.dd. Dans mon cas, c'était /dev/loop0 c'est ce que j'utilise dans les commandes suivantes. À vous d'ajuster!

Ensuite, on utilise mkdir mon_dossier_2 et mount /dev/loop0 mon_dossier_2 pour monter la partition.

 Si vous vous retrouvez avec une erreur du genre «wrong fs type, bad option, bad superblock on /dev/loop5, missing codepage or helper program, or other error», ça m'est arrivé lorsque je suis passé en mode root avec su - et j'ai réglé mon problème en repassant à mon utilisateur normal et en utilisant sudo pour rouler la commande. Si ça ne fonctionne toujours pas, sudo losetup -l pour voir la liste des loop devices. Peut-être que votre image a été montée plusieurs fois. Ça semble être un bogue. On peut essayer de monter la première loop dev dans ce cas et ça a fonctionné pour moi. Exemple d'une partition montée 3 fois:

NAME        SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                        DIO LOG-SEC
/dev/loop1 7920912384  32256         0  1 /media/user/image.dd   0     512
/dev/loop2          0      0         0  1 /media/user/image.dd   0     512
/dev/loop0 7920912384  32256         0  1 /media/user/image.dd   0     512

On peut vérifier que quelques fichiers sont présents et c'est assez. On peut aussi faire des recherches avec un script (voir la section des notes supplémentaires). On peut ensuite démonter l'image avec umount /dev/loop0 et losetup -d /dev/loop0.


Étape 3 : Écrire l'image sur le nouveau SSD.

Il suffit d'éteindre le portable, de retirer le disque dur mécanique original et d'insérer le disque IDE avec un SSD M.2 sur lequel on écrira l'image. Une fois le SSD installé, dd if=./mon_dossier/600x1.dd of=/dev/hda conv=sync,noerror bs=65536. Cette partie a pris 8 heures environ pour se compléter.

 

Étape 4 : Installer Debian 9.13.0 i386

Pourquoi Debian 9.13.0? Son support s'est arrêté en juin 2022. Il dispose the paquets suffisamment récents pour être intéressant à utiliser. Il s'installe contrairement à Debian 11.5 qui « panique ». 

Il faut partitionner manuellement le disque parce que le partionnement guidé échouera avec une erreur qui indiquera qu'on essaiera de lire à l'extérieur de hd0. J'utilise un SSD de 500 Go ici. Le fait qu'un disque dur IDE soit de 500 Go sur un IBM 600X doit confondre le programme guidé qui a rarement vu une telle configuration probablement. On évite facilement cette situation en créant :

1. Une partition primaire de 1024 Mo avec le point de montage /boot et le drapeau d'amorçage (boot flag).

2. Une seconde partition primaire de 65 536 Mo avec le point de montage /. C'est la racine du disque et c'est là que le système d'exploitation sera installé.

3. Une dernière partition logique de 5120 Mo utilisé pour la zone d'échange mémoire (swap area). 

Durant l'installation, grub2 sera installé. Il détectera automatiquement Windows 2000 et à la fin de l'installation de Debian après avoir redémarré l'ordinateur, Windows 2000 sera disponible au côté de Debian dans le menu de chargement au tout début du démarrage après l'écran du BIOS.


Notes supplémentaires

Pour initialiser le nouveau disque dur, j'ai utilisé Windows 10. Clic-droit sur le menu démarrer et ouvrir le gestionnaire de disques. Ensuite clic-droit sur le nouveau disque et initialiser. Choisir MBR pour une plus grande compatibilité avec de vieux ordinateurs.

J'ai utilisé une partition ext2 pour être certain d'être compatible avec DSL qui est vieux de plusieurs années et la sauvegarde s'est bien passée. J'ai créé et formatté la partition avec GParted dans Debian 11.5 AMD 64.

À l'étape de l'inspection, si vous avez copié l'image sur un autre ordinateur plus performant (j'utilisais mon Debian 11.5 AMD 64 pour cette étape) je vous conseille le script suivant si vous vous y connaissez un peu avec python.

from datetime import datetime
import glob
import os
from pathlib import Path
import shutil

type_fichier = input("Entrer un type de fichier: ")
maintenant = datetime.now().isoformat()
dossier = Path(f"{maintenant}_{type_fichier}")
os.mkdir(dossier)
with open(f"{maintenant}_resultat_recherche_{type_fichier}.txt", "a+", encoding="utf-8") as resultats:
    resultats.write(f"Résultats pour destination {dossier}:")
    for chemin in glob.glob(f"./monter/**/*.{type_fichier}", recursive=True):
        chemin = Path(chemin)
        print(chemin)
        fichier_final = dossier / chemin.name

        compte = 1
        while fichier_final.exists():
            fichier_final = dossier / (str(compte) + chemin.name)
            compte += 1

        shutil.copy2(chemin, fichier_final)
        resultats.write(f"{chemin}, {fichier_final}")

Il permet de facilement de trouver et copier des jpg ou des gif ou tout autre type de fichier qui vous intéresse. Dans une vieille installation de Windows, on peut en sortir les vieux fonds d'écrans!


Liens externes qui m'ont aidés (en anglais) :

1. Pour comprendre losetup, les décallages dans les images disques et monter les bonnes partitiions: https://www.suse.com/c/accessing-file-systems-disk-block-image-files/
2. Plus de détails sur l'erreur de grub rescue. https://copyprogramming.com/tutorial/what-to-do-when-i-get-an-attempt-to-read-or-write-outside-of-disk-hd0-error-and-boot-repair-does-not-solve-the-problem

Configurer le Wifi sous Debian 9.13.0

Debian 9.13.0 i386 détecte automatiquement la carte D-Link WNA-1330 durant l'installation. À la suite de l'installation, si aucun bureau/interface graphique n'a été installé, on se retrouve dans le terminal sans réseau IP. La commande ip a le confirme. J'y ai trouvé mon interface Wifi (wlp6s0 dans mon cas) qui était désactivée.

On peut exécuter nano /etc/network/interfaces et ajouter les lignes suivantes pour automatiquement se connecter à un réseau au démarrage de l'ordinateur:

allow-hotplug wlp6s0
iface wlp6s0 inet dhcp
wpa-ssid "mon réseau"
wpa-psk "le mot de passe de mon réseau" 

Ensuite, ifup wlp6s0 pour activer le réseau sans redémarrer. iw wlp6s0 link pour se connecter et obtenir une adresse IP. Il est possible de confirmer l'adresse obtenue avec ip a.

Notes supplémentaires:

On peut éteindre l'interface avec ifdown wlp6s0.

On peut voir une liste des réseaux à notre portée avec iwlist scan.

J'ai testé avec un IBM 600X.