Script bash pour partionner & formater plusieur DD

Fermé
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 - Modifié le 9 août 2018 à 05:44
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 - 17 août 2018 à 14:14
Bonjour,

J'ai besoin de réaliser un script bash pour l'installation de disque dur pour Raspberri-PI 3 basé sur Raspbian de Debian a l'aide de cette documentation
http://papy-tux.legtux.org/doc1064/index.php
Ayant plusieurs raspberry PI et disque dur identique.
J'ai besoin de votre avis pour savoir si c'est correct niveau partitionnement et formatage ?

Voici les information actuelle sur le disque
serveur@raspberrypi:~ $ df
Sys. de fichiers blocs de 1K Utilis� Disponible Uti% Mont� sur
/dev/root            7548728 6419096     760144  90% /
devtmpfs              470116       0     470116   0% /dev
tmpfs                 474724       0     474724   0% /dev/shm
tmpfs                 474724   12620     462104   3% /run
tmpfs                   5120       4       5116   1% /run/lock
tmpfs                 474724       0     474724   0% /sys/fs/cgroup
/dev/mmcblk0p1         42137   22419      19718  54% /boot
tmpfs                  94944       0      94944   0% /run/user/1000
tmpfs                  94944       0      94944   0% /run/user/1001
serveur@raspberrypi:~ $ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb           8:16   0 931,5G  0 disk 
`-sdb1        8:17   0 931,5G  0 part /media/pi/Maxtor
mmcblk0     179:0    0   7,4G  0 disk 
|-mmcblk0p1 179:1    0  41,8M  0 part /boot
`-mmcblk0p2 179:2    0   7,4G  0 part /
serveur@raspberrypi:~ $ sudo parted -l
Model: Seagate M3 Portable (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 
                                                                                                                                                                                                                                            
Number  Start   End     Size    Type     File system  Flags                                                                                                                                                                                 
 1      32,8kB  1000GB  1000GB  primary  ntfs         boot                                                                                                                                                                                  
                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                            
Model: SD SD08G (sd/mmc)                                                                                                                                                                                                                    
Disk /dev/mmcblk0: 7969MB                                                                                                                                                                                                                   
Sector size (logical/physical): 512B/512B                                                                                                                                                                                                   
Partition Table: msdos                                                                                                                                                                                                                      
Disk Flags:                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                            
Number  Start   End     Size    Type     File system  Flags                                                                                                                                                                                 
 1      4194kB  48,0MB  43,8MB  primary  fat32        lba                                                                                                                                                                                   
 2      48,2MB  7969MB  7921MB  primary  ext4                                                                                                                                                                                               
                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                            
serveur@raspberrypi:~ $ free -h                                                                                                                                                                                                             
              total        used        free      shared  buff/cache   available                                                                                                                                                             
Mem:           927M        191M        425M         27M        310M        655M                                                                                                                                                             
Swap:           99M          0B         99M                                                                                                                                                                                                 
serveur@raspberrypi:~ $


Voici mon script :

#!/bin/bash
echo "Objectifs : protéger la carte SD en écriture (cycle de vie restreint), et profiter des avantages d'un disque dur externe de 500 Go...

* Partitionner et formater le disque dur externe USB (en quatre partitions) en plusieurs étapes :
  Matériel : Disque Dur USB 3.0 Maxtor 1 To
  - Effacement des partitions existantes
  - Création d'une table msdos
  - une partition de 512 Mio - fat32 (démarrage)
  - une partition de 2 Gio (swap)
  - une partiton de 16 Gio - Linux ext4 : système du R-Pi, stockage de fichiers système (/)
  - une partiton de 932 Gio  - Linux ext4 : Dossier des utilisateurs (/home) 

* RAPPEL : Un disque ne peut avoir plus de 4 partitions primaires. Pour augmenter le nombre de partitions, on introduit (au-delà de 3 partitions primaires) une partition étendue qui contiendra les partitions suivantes, dites logiques.

Les partitions : sur disque dur sdb qui vont être créées

+--------------+--------------+-------------+------------+
|              |              |             |            |
|  sda1        |              |  sda2       |  sda3      |
|  fat32/vfat  |  linux-swap  |  ext4       |  ext4      |
|  /boot/efi   |              |  /          |  /home     |
|  512 Mio     |  2 Gio       |  16 Gio     |  932 Gio   |
|  boot        |              |             |            |
|              |              |             |            |
+--------------+--------------+-------------+------------+
"

echo "Commençons par supprimer la partition existante : /dev/sdb1 (le disque neuf étant formaté par défaut pour Windows)"
dd if=/dev/zero of=/dev/sdb bs=1M count=5 #effaçage préalable de traces de partitionnement, formatage, cryptage, volumes logiques existantes est parfois nécessaire. Il est généralement suffisant 
wipefs -af /dev/sdb #effacer certaines informations du système de fichier ..

echo "Création des partitions"
echo "-----------------------"
echo "Création d'une table de partition msdos ou gpt"
sudo parted -s /dev/sdb mklabel msdos
#sudo parted -s /dev/sdb mklabel gpt
echo
echo "Création de la 1er partition de 512 Mio (boot)"
#mkpart primary 0.00TB 300.00TB
parted -s /dev/sdb mkpart primary fat32 2MiB 514MiB 
echo
echo "Création de la 2em partition de 2Go (Swap)"
#sudo mkswap -U <l UUID desirée> /dev/<votre partition>
mkpart primary linux-swap 514MiB 2GiB
echo
echo "Création de la 3em partition de 16Go (/)"
#mkpart primary 0.00TB 300.00TB
mkpart primary ext4 2GiB 16GiB
echo
echo "Création de la 3em partition alouant la taille maximum restante (/home)"
#mkpart primary 0.00TB 300.00TB
mkpart primary ext4 16GiB 100% set 1 boot on #aloue la taille maximum restante et indicateur de boot sur la partition 1

echo
echo "Formatage des partitions"
echo "------------------------"
echo "Formatage de la 1er partition"
mkdosfs -F32 /dev/sdb1 -L boot
echo
echo "Formatage de la 2em partition"
sudo mkswap -c /dev/sdb2  -L swap
sudo swapon partition
echo
echo "Formatage de la 3em partition"
sudo mkfs -t -c ext4 /dev/sdb3 -L systeme
echo
echo "Formatage de la 4em partition" 
sudo mkfs -t -c ext4 /dev/sdb4 -L home

exit 0


Merci.

A voir également:

1 réponse

mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
17 août 2018 à 14:14
Bonjour,

Ça a l'air de tenir la route, je m'interroge juste sur l'utilité de la partition en FAT32 (tu veux faire une installation EFI + secure boot ?).

Autre stratégie, vu que les disques sont tous identiques : tu fais une installation normale sur un des disques (e.g.
/dev/sdb
). Puis tu branches un disque à préparer (e.g.
/dev/sdc
) et tu copies bit à bit (
dd if=/dev/sdb of=/dev/sdc
).

Attention cependant : quelle que soit la stratégie retenu, il faut faire attention à mettre les bons identifiants de devices ! Par exemple si quelqu'un lance ton script en ayant branché une clé USB en plus du disque à préparer, il serait dommage d'altérer la clé !

Bonne chance
0