Maniatux's Blog

Welcome to the internet

Planet-Libre

mkjl : Créez facilement des jails FreeBSD - Debian GNU/kFreeBSD - ArchBSD sous FreeBSD.

Rédigé par Xavier - - Aucun commentaire

Je développe un petit script sans prétentions qui permet de créer facilement des jails de type FreeBSD, Debian GNU/kFreeBSD et ArchBSD sur un hôte FreeBSD. Il est écrit en sh mais ne concurrence pas ezjail ou vmrc. En revanche il fait gagner pas mal de temps si votre besoin est de déployer facilement des jails autres que FreeBSD.

Pré requis

Il vous faudra installer les paquets suivants (à partir de pkgng ou des ports) :

  • perl5 (pour debootstrap)
  • debootstrap (pour le template debian)
  • pacman (pour le template archbsd)
  • git (pour récupérer mkjl, optionnel)
  • rsync (dépendance à mkjl)

Et pour faire tourner les jails Debian, il vous faudra charger les modules fdescfs et linprocfs.

Installation des pré requis

Installation des paquets :

# pkg update && pkg install git perl5 debootstrap rsync pacman

Charger les modules pour Debian :

# kldload fdescfs
# kldload linprocfs

Ou, de manière persistente :

# echo fdescfs_load="YES" >> /boot/loader.conf
# echo linprocfs_load="YES" >> /boot/loader.conf

Récupération de mkjl.sh

Avec git :

# git clone https://github.com/src386/mkjl

Sans git :

Simplement avec l'archive compressée :

fetch --no-verify-peer https://github.com/src386/mkjl/archive/master.zip
unzip master.zip

Utilisation

Utilisez la syntaxe suivante :

# ./mkjl.sh $name $template

Exemple, pour une jail de type ArchBSD nommée www :

# ./mkjl.sh www t_archbsd

Ensuite il ne vous reste qu'à éditer /etc/jail.conf pour déclarer vos jails. Un fichier jail.conf.example est fourni mais vous pouvez également vous aider de cet article..

Templates disponibles

  • t_freebsd10 : FreeBSD 10-RELEASE
  • t_debian7 : Debian GNU/kFreeBSD Wheezy
  • t_debian8 : Debian GNU/kFreeBSD Jessie
  • t_archbsd : ArchBSD

Consulter le README.md

Liens

Tablette tactile + ubuntu

Rédigé par Xavier - - Aucun commentaire

J'ai actuellement entre les mains une tablette Samsung ATIV7. Elle fonctionne sous une plateforme Intel Core i5 et est équipée de Windows 8. Avec son clavier dockable c'est donc plus un PC qui se fait passer pour une tablette, mais c'est assez réussi. Windows 8 est plutôt bien adapté à un usage tactile, mais pour savoir si cela est la même chose avec Linux, j'ai démarré Ubuntu 14.04 en LiveUSB dessus et je vais livrer rapidement mes impressions.

Ubuntu propose un clavier visuel ce qui est bien pratique pour pouvoir frapper son texte directement sur l'écran, sans devoir utiliser le dock. Il faut tout de même prendre le soin de le paramétrer, ainsi je lui demande de se montrer automatiquement quand je sélectionne une zone de texte, mais aussi de se placer en bas de l'écran et non en position libre ce qui est plutôt gênant. Voilà ce que ça donne :

C'est plutôt bien fait, sauf dans le menu de lancement Unity où là le clavier ne se montre pas. Pas de panique, le clavier est en fait rangé dans la zone de notification à côté de l'heure et on peut alors le déplier à la main. L'écran tactile répond bien et la localisation des points est très précis.

Concernant l'affichage on remarque rapidement un problème : c'est ridiculement petit. En effet on dispose d'un écran 11 pouces mais avec une résolution de 1920x1080. Donc c'est très fin. Windows 8 adapte automatiquement son DPI, et même si le système est perfectible, il a le mérite d'exister. Ubuntu en revanche ne le fait pas. Il faut aller dans l'outil de configuration de l'affichage et passer à 1,5 ou plus la taille des éléments. Voilà, beaucoup mieux !

Les boutons de volume situés sur le côté sont bien reconnus, ce qui est un bon point. Pas de gestion de la luminosité malheureusement, que ce soit en automatique ou avec les touches raccourcis. Le bouton de verrouillage ne permet pas de mettre en veille rapidement la tablette non plus. Cela n'est pas particulièrement bloquant car j'avais l'habitude de laisser la luminosité à fond et pestais même contre le réglage automatique toujours trop sombre.

Avec Ubuntu on a quelques défauts, mais globalement la tablette est utilisable. L'affichage est bon, l'écran tactile est supporté, le wifi, un clavier visuel, et un bon réglage de taille des éléments. L'environnement Unity est à mon sens un excellent compromis Desktop / Tablette.

ArchBSD dans une jail FreeBSD 10

Rédigé par Xavier - - Aucun commentaire

ArchBSD peut être installé dans une jail sur un hôte FreeBSD très facilement car très proche. En effet, là où Debian GNU/kFreeBSD est une Debian utilisant un noyau FreeBSD, ArchBSD peut se résumer à l'équation suivante : ArchBSD = FreeBSD + pacman. En effet sur ArchBSD on retrouve un rc.conf (avec des daemon_enable="YES") et le fonctionnement ne nécessite pas de couche de compatibilité Linux.

Création de la jail

Malheureusement ArchBSD ne propose pas d'image tout prête qu'il suffirait de décompresser. Il va falloir utiliser pacman et bidouiller un peu pour le faire fonctionner.

# pkg install pacman

Ensuite créez un fichier pacman.conf (dans le répertoire courant) avec le contenu suivant :

[options]
SigLevel = Never
[core]
Server = ftp://ftp.archbsd.net/core/os/x86_64

Note : x86_64 est à remplacer par i686 si votre système est 32 bits.

Créez le répertoire de la jail ainsi que deux répertoires nécessaires à pacman :

# mkdir /usr/jails/archbsd
# mkdir -p /usr/jails/archbsd/var/lib/pacman
# mkdir -p /usr/jails/archbsd/var/cache/pacman/pkg

Procédez maintenant à l'installation :

pacman -Sy base \
-r /usr/jails/archbsd \
--cachedir /usr/jails/archbsd/var/cache/pacman \
--arch x86_64 \
--config pacman.conf

Configuration de la jail

Editez votre /etc/jail.conf pour y ajouter votre jail archbsd. Exemple :

# DEFAULT PARAMETERS
#
exec.start      = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
mount.devfs;
path = "/usr/jails/$name";
host.hostname = "$name";

# INDIVIDUAL JAIL PARAMETERS
#
archbsd {
        ip4.addr = re0|192.168.0.13;
        persist;
}

Ensuite démarrez la jail :

# service jail start

Configurer ArchBSD

Entrez dans la jail ArchBSD :

# jexec archbsd bash

Premièrement, nous avons un souci avec pacman. En effet la détection de l'architecture ne fonctionne pas bien (FreeBSD utilise amd64 pour les systèmes 64 bits, alors que sur les dépôts de ArchBSD c'est x86_64), il faut donc la forcer. Editez le fichier /etc/pacman.conf et modifiez comme suivant :

Architecture = x86_64

Note : Bien entendu si vous êtes sur du 32 bits, c'est i686 qu'il faut saisir.

Ensuite il faut initialiser le keyring de pacman, avec les commandes suivantes :

# pacman-key --init
# pacman-key --populate archbsd

Et voilà, ArchBSD est prêt !

Update : Installer Archlinux ARM la Toshiba Folio 100

Rédigé par Xavier - - Aucun commentaire

J'installe actuellement Archlinux ARM sur ma tablette Toshiba Folio 100. Cela fait l'objet d'articles en plusieurs parties dont la partie 1 a été publiée. J'ai promis une partie 2, je bosse dessus, mais ce n'est vraiment pas simple. En effet si j'ai bien compris, pour la partie Xorg, on peut utiliser 4 pilotes au choix :

  • Le pilote vesa, c'est à dire le générique qui permet d'avoir un affichage mais pas d'accélération 2D ni 3D, pas de gestion de l'énergie non plus
  • Le pilote tegra, qui est propriétaire à nvidia et offre toutes les fonctionalités
  • Le pilote fbdev, aucune idée de son utilité
  • Le pilote opentegra, qui est un peu similaire à nouveau (pilote libre réalisé à partir de rétro ingénierie) mais destiné à tegra.

Je bloque car jusqu'ici je n'ai réussi qu'à faire fonctionner vesa alors que mon objectif est d'avoir tegra ou opentegra afin d'espérer lire des vidéos de manière à peu près correcte et avoir une gestion de l'énergie. Mais ces pilotes ne veulent pas fonctionner :

  • tegra (propriétaire nvidia) est fourni sous forme binaire pour une ancienne version de Xorg (avec l'abi 14). Or Archlinux fourni un Xorg trop récent (abi 18) qui refuse de charger le pilote. Il existe une ligne à ajouter dans le xorg.conf pour bypasser cette vérification de version, mais cela aboutit sur un segfault.
  • opentegra, qui doit être compilé ainsi que libdrm, n'a pas ce problème d'abi en revanche j'obtiens à nouveau un segfault. Une petite recherche semble indiquer qu'il faut utiliser un kernel récent, or avec cette tablette je suis bloqué sur une version 3.1.10-betelgeuse (spécifique à ce matériel). J'ai tenté de compiler un 3.17-rc avec les mêmes options, voire avec le template tegra2, mais la tablette ne boote pas.

Pour le premier point je tente actuellement un downgrade de Xorg, mais ce n'est pas simple en raison des dépendances et du temps nécessaire à la compilation. Pour le second point j'aimerai trouver un moyen de booter un kernel plus récent, mais j'ai peu d'espoir. Le manque de standardisation des plate-formes ARM et leurs blobs propriétaires sont un véritable enfer.

Installer Archlinux ARM la Toshiba Folio 100 - Ep. 1 : Installation

Rédigé par Xavier - - Aucun commentaire

Ma tablette, ma précieuse tablette Toshiba Folio 100 qui prend la poussière depuis longtemps. Trop lente et buguée malgré les différentes ROM android testées. Six mois après leur sortie, les tablette sont laissées à l'abandon par leur constructeur, il n'y a plus de mises à jour, et lorsque la nouvelle version d'Android requiert deux fois plus de ram pour faire la même chose il devient alors impossible de l'utiliser. Achetez une nouvelle tablette et c'est tout. L'obsolescence programmée dans toute sa splendeur, aidée par la trop grande rigidité des plateformes ARM comme nous allons le voir.

Pour en revenir à la Toshiba Folio 100, il est apparemment possible de faire fonctionner Fedora dessus comme le montre cette vidéo. Sur le forum XDA d'autres se sont attaqués à Archlinux. Cela rend cette tablette un peu plus intéressante, on peut enfin y caser un vrai système Linux, mais c'est très compliqué.

Voici mes notes sur l'installation d'Archlinux ARM sur votre Toshiba Folio 100.

Note importante

Dans cette première partie nous n'installerons rien en dur sur la tablette, donc pas de risque de break. Nous nous contenterons de booter un kernel avec fastboot, et monter un système de fichiers présent sur une carte sd ou une clé USB.

Principe

On va démarrer la tablette en mode fastboot puis lui injecter un kernel Linux qui va booter avec pour instruction de monter son root depuis une carte sd ou une clé USB. Le kernel est la partie délicate car il faut une version patchée pour le matériel, c'est d'ailleurs là qu'on se rend compte qu'ARM est chiant. Le seul kernel utilisable pour le moment est le 3.1.10, nous verrons comment le compiler et le charger.

Concernant la partie distribution, c'est un peu plus permissif. Nous allons extraire l'arborescence d'Archlinux ARM sur une carte sd formatée en ext4.

Pré requis

  • Une tablette Toshiba Folio 100 rootée
  • Un clavier USB branché sur la tablette
  • Une carte sd ou une clé USB d'au moins 2GB
  • Un ordinateur sous Linux avec un lecteur de cartes sd (sauf si vous choisissez la clé USB)
  • Un câble USB pour connecter l'ordinateur à la tablette

Procédure

1. Installation du système sur la carte SD

Commencez par insérer la carte sd ou la clé USB dans votre ordinateur. Ensuite localisez-là avec dmesg ou fdisk. Dans mon cas c'est /dev/sdb1. On formatte la carte en ext4 :

# mkfs.ext4 /dev/sdb1

2. Télécharger Archlinux ARM :

Il existe plusieurs versions d'Archlinux ARM. La plus appropriée pour la tablette est trimslice :

# wget http://archlinuxarm.org/os/ArchLinuxARM-trimslice-latest.tar.gz

Malheureusement il manque quelques composants utiles notamment pour le WiFi. Pour cela on va télécharger des paquets additionnels à l'adresse suivante : http://au.mirror.archlinuxarm.org/armv7h/core/. Donc ouvrez un navigateur web et enregistrez les paquets suivants : dhcpcd, iw, wireless-tools, libnl et wpa_supplicant.

Maintenant on va monter la carte sd, extraire l'arborescence Archlinux ARM et copier les paquets que nous installerons plus tard :

# mkdir /mnt/mmc
# mount /dev/sdb1 /mnt/mmc
# tar -xvzf ArchLinuxARM-trimslice-latest.tar.gz -C /mnt/mmc/
# cp dhcpcd-6.4.3-1-armv7h.pkg.tar.xz /mnt/mmc/root/
# cp libnl-3.2.24-1.1-armv7h.pkg.tar.xz /mnt/mmc/root/
# cp wpa_supplicant-2.2-2-armv7h.pkg.tar.xz /mnt/mmc/root/
# cp wireless_tools-30.pre9-1-armv7h.pkg.tar.xz /mnt/mmc/root/
# cp iw-3.14-1-armv7h.pkg.tar.xz /mnt/mmc/root/

3. Compiler un kernel bootable

Commencez par installer les outils de compilation croisée ainsi que git :

Pour Arch / Manjaro :

# pacman -S git arm-none-eabi-gcc

Pour Debian, voir ici (non testé).

Utilisez git pour récupérer les sources du kernel pour Toshiba (et similaires) :

# git clone https://github.com/DerArtem/android_kernel_toshiba_betelgeuse

Ouvrez un navigateur web et rendez-vous sur cette page pour y télécharger le fichier config_patch.txt.

Entrez ensuite dans le répertoire des sources de ce kernel. Ensuite nous allons patcher le .config (qui contient la liste des choses à compiler/mettre en modules) :

# cd android_kernel_toshiba_betelgeuse
# patch -p0 .config config_patch.txt

Lancez la compilation :

# export ARCH=arm
# export CROSS_COMPILE=arm-none-eabi-
# make
# make modules

Important : Installez les modules sur le système cible :

# make modules_install INSTALL_MOD_PATH=/mnt/mmc

Nous en avons terminé avec la carte sd. Vous pouvez la démonter à l'aide de la commande suivante :

# umount /dev/sdb1

Booter la tablette avec un kernel Linux

A partir de là on peut enfin booter notre tablette sous Arch. Pour cela il va nous falloir les android-tools, qui fournissent fastboot. Installez donc android-tools :

# pacman -S android-tools

Démarrez la tablette, avec la carte sd dedans, et quand le logo Toshiba apparait appuyez 3x Power + 1x Vol Up. Le système va alors se mettre en attente de réception de données :

Starting Fastboot USB download protocol, please execute 'fastboot' command

Sur l'ordinateur, relié en USB à la tablette, entrez la commande suivante :

# fastboot -i 0x955 -c "mem=448M@0M nvmem=64M@448M vmalloc=192M video=tegrafb usbcore.old_scheme_first=1 tegrapart=recovery:122000:a00:800,linux:a0e00:1000:800,loader:300:400:800,mbr:700:200:800,system:900:20000:800,cache:20900:80000:800,misc:a0900:400:800,userdata:a1f00:80000:800 boardtype=PR root=/dev/mmcblk1p1 rw usb-storage.delay_use=0 rootdelay=3" boot arch/arm/boot/zImage

Cette commande va injecter notre kernel avec quelques instructions, notamment celle d'utiliser /dev/mmcblk1p1 (la carte sd) comme root. Note : si vous utilisez une clé USB et non une carte sd, remplacez mmcblk1p1 par sda1. Si cela ne marche pas, tentez sdb1 (non testé).

Configurer ArchARM

Si tout va bien devriez obtenir un prompt sur la tablette. Utilisez le clavier USB et ouvrez une session avec l'identifiant + mot de passe 'root'. Passez le clavier en français :

# loadkeys fr

Maintenant installez wpa_supplicant et dhcpcd via les paquets récupérés tout à l'heure :

# cd /root
# pacman -U *.xz

Et voilà. Si tout s'est bien passé, vous devriez pouvoir connecter la tablette au WiFi grâce à la documentation wpa_supplicant. Vous pouvez désormais utiliser pacman pour installer des paquets.

Nous verrons plus tard comment installer un environnement graphique.

Liens