#!/bin/bash ################################### # SCRIPT D'INSTALATION ARCH LINUX # ################################### # COMMENT UTILISER CE SCRIPT # # booter la clé : # # brancher une clé avec arch linux dedans # vous pouvez le faire en telechargeant l'iso d'arch sur leur site oficiel # et umount /dev/sdX?* (remplacer X par la lettre attribué a la clé usb (faire lsblk -S)) # puis faire # sudo dd if=/chemin/vers/image.iso of=/dev/sdX bs=4M status=progress conv=fdatasync # attendre un peu sa va etre long puis pour ejecter la clé : # umount /media/nom-clé # sudo eject /dev/sdX # udisksctl power-off -b /dev/sdX # # lancer iso : # # brancher la clé sur votre pc et redemarrer le # pendant le lancement spammer la touche pour acceder au BIOS (F2/F12/F11/...) # une fois dans le bios lancer avec la clé # puis séléctionné install arch (ou un truc dans le genre) # # installer script : # # faite loadkeys fr-latin1 (ou autre) # pour faciliter l'ecriture des commandes qui suivent # car par defaut le clavier est en qwerty # # l'installation ce fait par git, donc il faut installer git: # pacman -Sy git # # git clone https://github.com/CaptainBoulbi/linuxrc.git # cd linuxrc # # le script est le archInstall.sh # # configurer script : # # modifier la valeur des variable ci dessous pour personaliser votre installation # chaque variable a son explication a coté # # une fois la configuration faite, faite : # chmod +x ./archInstall.sh # ./archInstall.sh # # attendez que l'instalation ce fini puis eteindre le pc (demander a la fin de l'install) # enlevez la clé et re allumer votre pc # # et voila. # VARIABLE DE CONFIGURATION DE L'INSTALATION # user HOSTNAME=pc # nom de la machine ROOTPWD=pass # mdp en root USRNAME=usr # nom de l'utilisateur principale USRPWD=$ROOTPWD # mdp utilisateur principale SUDOERS=1 # 1=droit sudo; 0=pas droit sudo SUDOSANSPASSWD=1 # sudo cmd sans mdp (1=true;0=false) LOGATBOOT=0 # au lancement se connecter automatiquement utile pour crypter # langue LANGUE_CLAVIER=fr-latin1 # liste langue clavier : ls /usr/share/kbd/keymaps/**/*.map.gz LANG=en_US # langue géneral : cat /etc/locale.gen POLICE=default8x16 # liste police dispo : ls /usr/share/kbd/consolefonts/ TIMEZONE=Europe/Paris # liste timezone : timedatectl list-timezones # disque DISKNAME=sda # nom du disque par defaut sda sinon lsblk ENCRYPTED=0 # crypte le disque (0=false;1=true) PASSPHRASE=$ROOTPWD # mdp pour decrypté la partition crypté SIZEBOOTPART=1 # taille boot partition conseiller 1G min SIZEHOMEPART= # `` home ``, si !defini : reste taille disque G at end OVERWRITEDISK=0 # ecrit random data sur part home (tres long) (0=false;1=true) # install STEPBYSTEP=0 # doit confirmer pour passer a etape suivante (debug mode) INSTALLGUI=1 # install config perso # FONCTION / VARIABLE DU PROG NEXT=0 next(){ NEXT=$(expr $NEXT + 1) echo step $NEXT : $* if [ $STEPBYSTEP -eq 1 ]; then read fi } if [ $SUDOSANSPASSWD -eq 1 ]; then SUDOSANSPASSWD="NOPASSWD: ALL" else SUDOSANSPASSWD=ALL fi # SCRIPT next "change la langue du claver" loadkeys $LANGUE_CLAVIER next "change police" setfont $POLICE next "met a jour lheure et date a la timezone" timedatectl set-timezone $TIMEZONE # synchronise hardware (mdr jsp ce que sa fait mais c'est bien de le faire askip) hwclock --systohc next "partitione disque differament si crypter activé ou pas" if [ $ENCRYPTED -eq 1 ]; then next "??? création table de partition ???" echo "w" | fdisk /dev/$DISKNAME next "partionne le disque en deux (boot et home)" echo ","$SIZEBOOTPART"G" | sfdisk /dev/$DISKNAME 1 # part pour boot (sda1) echo ","$SIZEHOMEPART | sfdisk /dev/$DISKNAME 2 # part pour home (sda2) next "formatte la partition pour le boot dans le format fat" mkfs.fat -F32 /dev/$DISKNAME"1" if [ $OVERWRITEDISK -eq 1 ]; then next "remplit le disque de donné random pour rendre ilisible les meta-donné" dd if=/dev/urandom of=/dev/$DISKNAME"2" fi next "active lencryption (jsp si cest un vrai mot) la partition sda2" echo $PASSPHRASE | cryptsetup luksFormat /dev/$DISKNAME"2" # open crypt part echo $PASSPHRASE | cryptsetup open /dev/$DISKNAME"2" lolol next "crée un file system" mkfs.btrfs /dev/mapper/lolol next "monte la partition crypté" mount /dev/mapper/lolol /mnt next "crée le dossier boot dans la part crypté et le monte sur la partition boot" mkdir /mnt/boot mount /dev/$DISKNAME"1" /mnt/boot next "cree var pour config decrypt" UUIDPART=$(lsblk -f | grep $DISKNAME"2" | awk '{print $4}') UUIDCRYPT=$(lsblk -f | grep lolol | awk '{print $3}') GRUBCONF="GRUB_CMDLINE_LINUX_DEFAULT=\\\"loglevel=3 quiet cryptdevice=UUID=$UUIDPART:cryptlvm root=UUID=$UUIDCRYPT\\\"" else next "??? création table de partition ???" echo "w" | fdisk /dev/$DISKNAME next "partionne le disque en deux (boot et home)" echo ","$SIZEBOOTPART"G" | sfdisk /dev/$DISKNAME 1 # part pour boot (sda1) echo ","$SIZEHOMEPART | sfdisk /dev/$DISKNAME 2 # part pour home (sda2) if [ $OVERWRITEDISK -eq 1 ]; then next "remplit le disque de donné random pour rendre ilisible les meta-donné" dd if=/dev/urandom of=/dev/$DISKNAME"1" fi next "formate file format disk" mkfs.ext4 /dev/$DISKNAME"1" mkfs.ext4 /dev/$DISKNAME"2" next "monte les partition" mount /dev/$DISKNAME"2" /mnt mkdir /mnt/boot mount /dev/$DISKNAME"1" /mnt/boot fi next "met a jour la mirrorlist pour mettre les liens les plus rapides en haut" mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.old reflector --country France --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist cat /etc/pacman.d/mirrorlist.old >> /etc/pacman.d/mirrorlist rm /etc/pacman.d/mirrorlist.old next "installer paquet de base dans partition" if [ $ENCRYPTED -eq 1 ]; then pacstrap -K /mnt base base-devel linux linux-firmware man-db man-pages grub cryptsetup lvm2 networkmanager vim neovim efibootmgr else pacstrap -K /mnt base base-devel linux linux-firmware man-db man-pages grub networkmanager vim neovim efibootmgr fi next "crée le script a lancé dans chroot" cat < /mnt/script.sh #!/bin/bash NEXTI=0 next(){ echo step chroot : \$* if [ $STEPBYSTEP -eq 1 ]; then read fi } next "etape du script chrooter" next "maj timezone" ln -sf /usr/share/zoneinfo/$TIMEZONE /etc/localtime # met a jour l'hardware sur la date hwclock --systohc next "configure la langue" sed -i "s/#$LANG/$LANG/g" /etc/locale.gen locale-gen echo "LANG=$LANG.UTF-8" > /etc/locale.conf next "configure la langue du clavier" loadkeys $LANGUE_CLAVIER echo "KEYMAP=$LANGUE_CLAVIER" > /etc/vconsole.conf next "definie le nom de la machine" echo $HOSTNAME > /etc/hostname next "fait des truc bizare avec lip et le nom de la machine, mais cest important" echo -e "\n127.0.0.1\tlocalhost\n::1\t\tlocalhost\n127.0.1.1\t$HOSTNAME.localdomain $HOSTNAME" >> /etc/hosts next "active le prog qui gere les connections internet" systemctl enable NetworkManager next "cree le mdp root" echo "root:$ROOTPWD" | chpasswd next "creer le compte user" useradd -m $USRNAME echo "$USRNAME:$USRPWD" | chpasswd if [ $SUDOERS -eq 1 ]; then sed -i "s/^# %wheel.*) $SUDOSANSPASSWD$/%wheel ALL=(ALL:ALL) $SUDOSANSPASSWD/g" /etc/sudoers usermod -aG wheel $USRNAME fi if [ $LOGATBOOT -eq 1 ]; then sudo mkdir -p /etc/systemd/system/getty@tty1.service.d/ echo "# /etc/systemd/system/getty@tty1.service.d/override.conf" >> /etc/systemd/system/getty@tty1.service.d/override.conf echo "[Service]" >> /etc/systemd/system/getty@tty1.service.d/override.conf echo "ExecStart=" >> /etc/systemd/system/getty@tty1.service.d/override.conf echo "ExecStart=-/usr/bin/agetty --autologin $USRNAME --noclear %I \$TERM" >> /etc/systemd/system/getty@tty1.service.d/override.conf fi if [ $ENCRYPTED -eq 1 ]; then next "active config pour decrypt au lancement" sed -i "s/^HOOKS.*$/HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block encrypt lvm2 filesystems fsck)/g" /etc/mkinitcpio.conf mkinitcpio -p linux next "config grub pour crypt" sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT.*$/$GRUBCONF/g" /etc/default/grub fi next "genere grug config" grub-install /dev/$DISKNAME # si ligne du dessus fonctionne pas : grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub grub-mkconfig -o /boot/grub/grub.cfg genfstab -U /mnt >> /mnt/etc/fstab EOF next "lance chroot avec la suite du script" arch-chroot /mnt chmod +x /script.sh arch-chroot /mnt /script.sh arch-chroot /mnt rm /script.sh if [ $INSTALLGUI -eq 1 ]; then next "intall gui config" cp linuxrc.sh /mnt/home/$USRNAME echo -e "script installation gui copier a / apres redemarrage executer le" fi next "reboot" echo apuyer sur entrez pour redemarrer le pc, noubliez pas de retirez la clé read reboot