Salut;
Bonjour;
Pour l'installation de la rpi, je privilégie la raspbian netinstall, qui pour un usage serveur n'installe que le minimum (ssh), et non tout le tra-la-la, le graphique, etc..
https://github.com/debian-pi/raspbian-ua-netinst/releases/latest
Explications et PWD ici:
https://github.com/debian-pi/raspbian-ua-netinst
Comme pour l'image classique, il suffit de l'écrire sur la SD, lancer la rpi, laisser faire 10 à 30 mn selon la connexion, chercher ensuite sur son réseau local avec nmap par exemple l'ip de la pi, s'y connecter, paramétrer "/etc/network/interfaces" pour une ip fixe....
Ensuite, pour l'installation du rootfs (système sur DD de 2 To chez moi), j'avais fait un petit script (datant d'au moins 2 ou 3 ans) qui permettait de configurer le cmdline.txt en boot par uuid avec l'avantage par rapport au boot via "sda, sdb,...), de ne pas être dépendant de l'ordre d'insertion des périphériques usb si plusieurs de connectés.
Le script à lancer en root, qui va vous demander de préciser le disque dur détecté sur lequel installer le rootfs, et la taille à réserver pour cette partition (4 à 6 Go suffisent pour une raspbian netinstall; 8 à 10 max pour une raspbian classique), le reste du DD servant pour "/home"; naturellement le DD doit être vierge car comme formatage en ext4, toutes les données seront perdues:
#!/bin/bash
clear
LC_ALL=fr_FR.UTF-8 &
if [ $(id -u) -ne 0 ];then echo "Ce script doit être execute sous root ou lancé avec sudo";sleep 5;exit;fi
de=$(lsblk | grep sd.*disk |awk '{print $1}')
if [ "$de" = "" ];then echo "Aucun disque usb de détecté !!, rebranchez en un et relancer le script.";sleep 5;exit;fi
while true;do
echo "Disque(s) usb externes(s) présent(s): "$de
read -p "Sur quel disque effectuer l'installation ? " sd
if grep -q "$sd" <<<"$de";then if [ -e "/dev/$sd" ];then break;fi;fi
done
while [ "$rep" = "" ];do
read -p "Choisir une taille entre 4 et 10 Go pour le système (nombre entier, pas de décimales ni d'unités) :" rep
if ! [ "$rep" -ge 4 -a "$rep" -le 10 ];then rep="";fi
done
if [ $( mount | grep "/dev/mmcblk0p2" | wc -l ) == 1 ] ; then
until [[ ${rep2} =~ ^[o,n,O,N]+$ ]];do
clear
echo "Votre installation va se faire sur $sd ..attention toutes les donnees de $sd seront supprimees..."
echo "Voulez vous vraiment continuer ??? o/n O/N ..."
read rep2
done
if [ "$rep2" == "o" ] || [ "$rep2" == "O" ]
then
rep=$(echo "$((rep * 2097152))");rep1=$((rep+1))
apt-get update --fix-missing;apt-get upgrade -y;apt-get autoremove -y;apt-get autoclean -y;apt-get clean -y
if ! [ -f /etc/locale.gen.old ];then cp /etc/locale.gen /etc/locale.gen.old;fi
echo 'fr_FR ISO-8859-1
fr_FR.UTF-8 UTF-8
fr_FR@euro ISO-8859-15'>/etc/locale.gen
locale-gen
echo 'LANG=fr_FR.UTF-8
LANGUAGE=fr_FR:fr' >/etc/default/locale
echo 'LANG=fr_FR.utf8
LANGUAGE=FR
LC_CTYPE="fr_FR.utf8"
LC_NUMERIC="fr_FR.utf8"
LC_TIME="fr_FR.utf8"
LC_COLLATE="fr_FR.utf8"
LC_MONETARY="fr_FR.utf8"
LC_MESSAGES="fr_FR.utf8"
LC_PAPER="fr_FR.utf8"
LC_NAME="fr_FR.utf8"
LC_ADDRESS="fr_FR.utf8"
LC_TELEPHONE="fr_FR.utf8"
LC_MEASUREMENT="fr_FR.utf8"
LC_IDENTIFICATION="fr_FR.utf8"
LC_ALL=' >/etc/environment
echo 'Europe/Paris'>/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
if ! which gdisk >/dev/null;then apt-get install -y gdisk;fi
if ! which parted >/dev/null;then apt-get install -y parted;fi
if ! which rsync >/dev/null;then apt-get install -y rsync;fi
parted -s /dev/${sd} mklabel gpt
parted -s -a none /dev/${sd} mkpart primary 0 ${rep}s
parted -s -a none /dev/${sd} mkpart primary ${rep1}s 100%
clear
echo "Formatage en ext4 des partitions..Patientez...peut etre assez long...voir tres long..selon la capacite du disque... et votre version de rpi";sleep 5
mkfs.ext4 /dev/${sd}1 >/dev/null
mkfs.ext4 /dev/${sd}2 >/dev/null
echo "Formatage en ext4 termine..."
PARTUUID=$(blkid -o export /dev/${sd}1 | grep PARTUUID)
UUID1=$(blkid -o export /dev/${sd}1 | grep ^UUID)
UUID2=$(blkid -o export /dev/${sd}2 | grep ^UUID)
mkdir -p /mnt/mm1;mkdir -p /mnt/mm2;mkdir -p /mnt/sd1;mkdir -p /mnt/sd2
mount /dev/mmcblk0p1 /mnt/mm1;mount /dev/mmcblk0p2 /mnt/mm2;mount /dev/${sd}1 /mnt/sd1;mount /dev/${sd}2 /mnt/sd2
if [ $( mount | grep "/mnt/mm1" | wc -l ) == 1 ] ; then test=1; fi
if [ $( mount | grep "/mnt/mm2" | wc -l ) == 1 ] ; then test=$((test+1)); fi
if [ $( mount | grep "/mnt/sd1" | wc -l ) == 1 ] ; then test=$((test+1)); fi
if [ $( mount | grep "/mnt/sd2" | wc -l ) == 1 ] ; then test=$((test+1)); fi
if [ "$test" == "4" ]
then
clear
echo "Copie de la partition systeme ROOTFS..soyez patients..";sleep 5
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/home/*"} /* /mnt/sd1
cp -f /mnt/sd1/etc/fstab /mnt/sd1/etc/fstab.sd;sed -i -e 's/.*mmcblk0p2.*$/#&/g' /mnt/sd1/etc/fstab
echo $UUID1" / ext4 defaults 0 1" >>/mnt/sd1/etc/fstab
echo $UUID2" /home ext4 defaults 0 2" >>/mnt/sd1/etc/fstab
cp -f /mnt/sd1/etc/fstab /mnt/sd1/etc/fstab.hd
if [ "$(ls -A /home)" ];then cp -Rfp /home/* /mnt/sd2;fi
cp -f /mnt/mm1/cmdline.txt /mnt/mm1/cmdline.sd
if [ -f /mnt/mm1/initrd.img* ];then sed -i "s/\/dev\/mmcblk0p2/$UUID1/g;" /mnt/mm1/cmdline.txt;else sed -i "s/\/dev\/mmcblk0p2/$PARTUUID/g;" /mnt/mm1/cmdline.txt;fi
cp -f /mnt/mm1/cmdline.txt /mnt/mm1/cmdline.hd
tune2fs -m 0 /dev/${sd}2
echo 'nameserver 208.67.222.222
nameserver 208.67.220.220
nameserver 8.8.8.8'>/mnt/sd1/etc/resolv.conf;chattr +i /mnt/sd1/etc/resolv.conf
echo ': ${LANG:=fr_FR.UTF-8}; export LANG
: ${LANGUAGE:=fr_FR:fr}; export LANGUAGE'>>/mnt/sd1/etc/profile
echo ': ${LANG:=fr_FR.UTF-8}; export LANG
: ${LANGUAGE:=fr_FR:fr}; export LANGUAGE'>>/mnt/sd1/etc/bash.bashrc
if ! [ -f /mnt/sd1/var/swap ];then fallocate -l 1024m /mnt/sd1/var/swap;chmod 600 /mnt/sd1/var/swap;mkswap /mnt/sd1/var/swap;echo "vm.swappiness=20" >>/mnt/sd1/etc/sysctl.conf; echo "/var/swap none swap sw 0 0" >>/mnt/sd1/etc/fstab;fi
cat <<'EOF' >/mnt/sd1/usr/local/bin/bootsd.sh
#!/bin/bash
if [ $(id -u) -ne 0 ];then echo "Ce script doit être execute sous root ou lance avec sudo";sleep 5;exit;fi
mount /dev/mmcblk0p1 /mnt
cat /mnt/cmdline.sd >/mnt/cmdline.txt
umount /mnt
echo "Redemarrage...";sleep 5
reboot
EOF
cat <<'EOF' >/mnt/mm2/usr/local/bin/boothd.sh
#!/bin/bash
if [ $(id -u) -ne 0 ];then echo "Ce script doit être execute sous root ou lance avec sudo";sleep 5;exit;fi
mount /dev/mmcblk0p1 /mnt
cat /mnt/cmdline.hd >/mnt/cmdline.txt
umount /mnt
echo "Redemarrage...";sleep 5
reboot
EOF
chmod +x /mnt/mm2/usr/local/bin/boothd.sh;chmod +x /mnt/sd1/usr/local/bin/bootsd.sh;rm -f /mnt/sd1/usr/local/bin/installpi.sh
umount -l /mnt/mm1;umount -l /mnt/mm2;umount -l /mnt/sd1;umount -l /mnt/sd2
find /mnt/* -type d -empty -delete
echo "Installation terminee....reboot de la machine...";sleep 5;reboot
fi;fi
else
echo "Cette installation ne peut se faire qu'a partir de la carte SD ...";sleep 5
fi
exit
Laisser faire, une fois fini, la rpi reboot en utilisant le rootfs du DD.
Si vous désirez revenir au rootfs sur la sd, saisir:
bootsd.sh
dans la console
Pour revenir au roofs sur le DD à partir de la sd:
boothd.sh
Si, ça peut servir...