Derniers articles

Je me suis pas mal battu pour y arriver, alors si ça peut servir à quelqu’un d’autre…

Le contexte :

  • Le serveur hôte est sous Ubuntu 14.04
  • Le conteneur est aussi sous Ubuntu (template download, paramètres « -d ubuntu  -r trusty -a amd64″)
  • Un périphérique USB est connecté sur l’hôte (un jeelink pour être précis) il apparait en tant que /dev/ttyUSB0
  • Je veux monter ce périphérique dans le conteneur

En premier lieu on doit trouver le numéro majeur et mineur du périphérique USB, pour cela un simple ls suffit sur l’hôte :

$ sudo ls -la /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 sept.  1 16:08 /dev/ttyUSB0

Le périphérique a ici le numéro 188,0

 

Il faut ensuite autoriser ce périphérique dans le conteneur (cgroups), cela se fait dans le fichier de config de ce dernier (/var/lib/lxc/[conteneur]/config).

On ajoute simplement la ligne suivante :

lxc.cgroup.devices.allow = c 188:0 rwm

On peut dès lors démarrer le conteneur et monter le périphérique dans le conteneur avec la commande suivante :

sudo lxc-device -n [conteneur] add /dev/ttyUSB0

C’est déjà pas mal mais on peut faire mieux et monter automatiquement le périphérique au démarrage du conteneur, pour cela au fichier de config du dit conteneur on ajoutera :

lxc.autodev = 1
lxc.hook.autodev=/var/lib/lxc/[conteneur]/autodev

On appelle un script (nommé autodev) en se branchant sur un hook de LXC, ce script contient les commandes nécessaire pour monter le périphérique :

#!/bin/bash
cd ${LXC_ROOTFS_MOUNT}/dev
mknod ttyUSB0 c 188 0
chmod 0666 ttyUSB0

Il faut rendre ce script exécutable :

$ sudo chmod +x /var/lib/lxc/[conteneur]/autodev

 

Et à chaque démarrage le script est joué (au bon moment) et le périphérique monté dans le conteneur.

Pour une raison de disponibilité de disque on peut vouloir créer un miroir ZFS avec un seul disque, voici comment procéder :

Créer un fichier de type bloc simulant le disque manquant :

sudo dd if=/dev/zero of=/zfs1 bs=1 count=1 seek=1024G

(j’aurai tendance à dire que la taille du fichier, seek doit être égal à la taille du disque manquant, dans le pool ZFS, mais je n’ai pas testé plus que cela)

Création du pool ZFS miroir avec le disque que l’on a et le fichier bloc.

sudo zpool create -f tank mirror /zfs1 /dev/sdd

(si le pool existe déjà on utilisera la commande zpool add -f pour ajouter un nouveau miroir)

On enlève le périphérique bloc et on le supprime.

sudo zpool offline tank /zfs1
sudo rm /zfs1

Vérification :

 

sudo zpool status
 
  pool: tank
 state: DEGRADED
status: One or more devices has been taken offline by the administrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using 'zpool online' or replace the device with
        'zpool replace'.
  scan:
config:
 
 NAME                                 STATE     READ WRITE CKSUM
 tank                                 DEGRADED     0     0     0
   mirror-0                           DEGRADED     0     0     0
     /zfs1                            OFFLINE      0     0     0
     sdd                              ONLINE       0     0     0

Le miroir est bien présent, le pool est dégradé car il manque un disque.

Je me vois obligé de fermer les commentaires de ce blog, en effet Free m’a déjà suspendu 2 fois à la troisième ce sera définitif.

J’ai bien tenté le plugin Askimet mais ce dernier ne fonctionne pas/plus chez Free (qui bloque toutes les connexions sortantes), j’ai ensuite réussi à bloquer les spam pendant pas mal de temps via l’ajout d’un champs caché mais les spammeur s’adaptent (c’est à ce moment que je me suis fait suspendre la première fois).

Ma dernière tentative à donc été le plugin Antispam Bee qui a fonctionné environ 15-30 jours et là il ne bloque plus rien (contre plus de 400 spams/jour au début).

Bref j’en ai marre, dommage pour l’interaction mais je n’ai pas de temps à consacrer à ce problème.

Pour ceux qui voudraient me contacter il ne reste plus que mon email : voidandany arobase free point fr

Le but étant d’installer un système ne content que le nécessaire on commence par installer une version ligne de commande d’Ubuntu, c’est à dire sans bureau (Gnome / KDE / Unity) et donc sans tous les logiciels qui l’accompagne (LibreOffice, Firefox, etc), bref comme un serveur mais avec un kernel desktop (une veille habitude chez moi suite à des problèmes remontant à la 07.10 avec le kernel serveur..)

Rque : rien de bien révolutionnaire dans ce post, c’est plus un pense-bête pour moi (surtout la partie partitionnement)

 

Depuis cette page télécharger l’ISO du CD alternate (en 32 ou 64 bits au choix)

Créer une clé USB bootable d’installation depuis un autre poste Ubuntu (logiciel « Créateur de disques de démarrage ») ou graver l’ISO sur un CD

Booter le nouveau PC sur le CD ou la clé USB

Choisir la langue  : Français

Se placer sur la ligne « Installer Ubuntu », appuyer sur F4 et sélectionner « Installer un système en ligne de commande »

Répondre aux questions :

  • Pays : France
  • Détecter l’agencement du clavier : Non
  • Pays d’origine du clavier : Français
  • Disposition du clavier : Français – Français (variante)

L’installeur démarre et configure le réseau…

  • Nom de la machine : narya
  • Nom complet de l’utilisateur : …
  • Identifiant de l’utilisateur : …
  • Mot de passe : … (2 fois), si votre mot de passe est trop court/simple, l’installeur vous avertira et vous demandera si vous voulez l’utiliser tout de même.
  • Chiffrer votre dossier personnel : Non
  • Timezone : Europe / Paris – Is this timezone correct ? : Oui (cette écran à échappé à la traduction…)

Vient la partie la plus compliquée, le partitionnement.

  • Choisir « Assisté – utiliser tout un disque avec LVM »
  • « Disque à partitionner », sélectionner le disque (par précaution j’en ai mis qu’un…)
  • « Les tables de partitions de périphérique suivants seront modifiées (…) Écrire les modifications sur les disques et configurer LVM » : Oui
  • « Quantité d’espace sur le groupe de volume pour le partionnement assisté : [taille totale du disque] » : Continuer

Le programme de partition créé un volume avec l’espace total du disque et propose de créer 2 volumes logiques swap_1 et root, de les formater respectivement en swap et ext4.

On refuse cette répartition (sélectionner Non)

  • Dans la fenêtre suivante, dans le menu sélectionner « Configurer le gestionnaire de volume logique (LVM) »
  • Les tables de partitions de périphérique suivants seront modifiées (…) Écrire les modifications sur les disques et configurer LVM : Oui (de nouveau)
  • Supprimer un volume logique, sélectionner le root qui prend toute la place

On peut alors créer chaque volume logique :

  • Créer un volume logique
  • Groupe de volume, sélectionner le seul existant
  • Nom du volume logique : root
  • Taille du volume logique : 10 GB
  • Créer un volume logique
  • Groupe de volume, sélectionner le seul existant
  • Nom du volume logique : home
  • Taille du volume logique : 50 GB
  • Créer un volume logique
  • Groupe de volume, sélectionner le seul existant
  • Nom du volume logique : data
  • Taille du volume logique : tout le reste

On sort alors du partitionnement LVM : Terminer

La liste des partitions LVM est alors affichée, on les sélectionne les une après les autres pour sélectionner le système de fichier (Utiliser comme) et le point de montage.

  • 10GB           Système de fichier journalisé ext4          / Système de fichier racine
  • 50 GB         Système de fichier journalisé ext4           /home Répertoires personnels des utilisateurs
  • 1.9 TB          Système de fichier journalisé ext4          Autre : /data

Terminer le partitionnement et appliquer les changements

L’écran suivant récapitule les partitions, « Faut il appliquer les changements sur le disque » : Oui

Le formattage des partitions commence puis l’installation proprement dite.

Au bout d’un certain temps, lorsque l’installation est terminée, on une nouvelle série de questions :

  • Installer le programme de démarrage GRUB sur le secteur d’amorçage : Oui
  • L’horloge système est elle à l’heure universelle UTC : Oui

Retire le CD lorsque c’est indiqué et « Continuer », le système reboot

Et hop un petit article rapide et oui je penses encore à ce blog…

Ajout du ppa virtualbox :

sudo vim /etc/apt/source.list.d/virtualbox.list

Y copier la ligne correspondant à votre version d’Ubuntu, dans mon cas la 12.04 :

deb http://download.virtualbox.org/virtualbox/debian precise contrib

Liste complète ici

Ajout de la clé virtualbox et installation :

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
sudo aptitude update
sudo aptitude install linux-headers-$(uname -r) build-essential virtualbox-4.2 dkms --without-recommends

Installation des additions clientes :

wget http://download.virtualbox.org/virtualbox/4.2.4/Oracle_VM_VirtualBox_Extension_Pack-4.2.4-81684.vbox-extpack
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.2.4-81684.vbox-extpack

Et voila virtualbox est installé, on pourrait s’arrêter ici et le commander en ligne de commande, mais pour plus de facilité on va installer phpvirtualbox qui comme son nom l’indique permet de piloter virtualbox via une interface web.

On partira du principe que vous avez déjà un serveur web (Nginx en l’occurrence, voir Installer Nginx, Paramétrer Nginx).

On pourra s’assurer que les paquet suivant sont installés :

php5-suhosin php-pear unzip

On va tout d’abord créer un utilisateur spécifique qui exécutera le service Vboxweb-service :

useradd -d /home/vbox -m -g vboxusers -s /bin/bash vbox
passwd vbox

On configure virtualbox pour lui indiquer que l’on doit utiliser l’utilisateur que l’on vient de créer :

vim /etc/default/virtuabox

On ajoute :

VBOXWEB_USER=vbox

On installe le service vboxweb-service et on le démarre :

update-rc.d vboxweb-service defaults 
/etc/init.d/vboxweb-service start

On récupère le code de phpvirtualbox et on l’installe :

cd /var/www/localhost
wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.2-4.zip
unzip phpvirtualbox-4.2-4.zip
mv phpvirtualbox-4.2-4 phpvirtualbox

Configuration de phpvirtualbox :

cd /var/www/localhost/phpvirtualbox/
cp config.php-example config.php
vim config.php

Et on modifiera les 2 lignes suivantes :

var $username = 'vbox';
var $password = '[Mot de passe de l'utilisateur vbox]';

Enfin en bonus voici ma config nginx :

 

server {
 listen       80;
 server_name  localhost, [IP locale];
 root         /var/www/localhost/phpvirtualbox;
 
 include         /etc/nginx/common.conf ;
 index           index.html index.php;
 access_log      /var/log/nginx/localhost.access.log;
 
 location ~ \.php$ {
 include         /etc/nginx/fastcgi_params;
 fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 fastcgi_pass    127.0.0.1:9000;
 }
}

 

On peut dès lors se connecter sur son serveur (login et mot de passe par défaut de phpvirtualbox : admin/admin)

A l’usage phpvirtualbox est comme virtualbox, c’en est bluffant.

Seul chose à savoir, lorsque l’on démarre une machine virtuel, on peut y accéder via l’onglet « Console » mais il faut changer l’adresse de connexion de null:9001 (ou tout autre port) en [IP locale du serveur virtualbox]:9001.

Enfin plus pratique que l’onglet console, on pourra utiliser rdestop sous Ubuntu (là aussi l’accès se fait via : [IP locale du serveur virtualbox]:9001.)

 

Sources :

http://www.howtoforge.com/vboxheadless-running-virtual-machines-with-virtualbox-4.1-on-a-headless-ubuntu-12.04-server

http://www.vionblog.com/virtualbox-4-2-and-phpvirtualbox-on-debian/

http://www.howtoforge.com/managing-a-headless-virtualbox-installation-with-phpvirtualbox-on-nginx-ubuntu-12.04