init
This commit is contained in:
commit
01ee7b64db
|
@ -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 <<EOF> /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
|
|
@ -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
|
Loading…
Reference in New Issue