From 01ee7b64db59cd77c6346b6b4e4173900deebc33 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Fri, 26 May 2023 09:31:53 +0200 Subject: [PATCH] init --- archInstall.sh | 270 +++++++++++++++++++++++++++++++++++++++++++++++++ linux.rc | 38 +++++++ 2 files changed, 308 insertions(+) create mode 100644 archInstall.sh create mode 100644 linux.rc diff --git a/archInstall.sh b/archInstall.sh new file mode 100644 index 0000000..40df413 --- /dev/null +++ b/archInstall.sh @@ -0,0 +1,270 @@ +#!/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 +# +# installer ce script sur l'installeur : +# +# lol +# +# 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 ./archAtHome.sh +# ./archAtHome.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=1 # 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 + echo "TODO : gui lol" +fi + +next "reboot" +echo apuyer sur entrez pour redemarrer le pc, noubliez pas de retirez la clé +read +reboot diff --git a/linux.rc b/linux.rc new file mode 100644 index 0000000..7107e4f --- /dev/null +++ b/linux.rc @@ -0,0 +1,38 @@ +#!/bin/bash + + +# installation paquet + + +# base +pacman -S xorg-server xorg-xinit xterm neofetch git +# fonts +pacman -S ttf-linux-libertine ttf-inconsolata +# dependence suckless tools +pacman -S libx11 libxft libxinerama freetype2 fontconfig + + +# configuration + + +localectl set-x11-keymap fr + + +# installer suckless truc (temps pas besoin plus tard) +git clone https://git.suckless.org/dwm +git clone https://git.suckless.org/st +git clone https://git.suckless.org/dmenu + +cd .suckless +cd dwm +make +sudo make clean install +cd.. +cd st +make +sudo make clean install +cd .. +cd dmenu +make +sudo make clean install +cd