---
title: "Parabola auto-install"
date: 2017-05-05T12:18:36-08:00
date_display: May 5, 2017
---

Objectif => Je branche la clé, j'allume le pc, je lui dit de boot sur la clé, je reboot et parabola linux est pret !

# Exemples
Au préalable il faut évidamment créer un ISO pour la mettre sur la clé.

Script d'install après le boot de la clé :

- [https://shirotech.com/linux/how-to-automate-arch-linux-installation](https://shirotech.com/linux/how-to-automate-arch-linux-installation)
- [https://github.com/ewancoder/eal](https://github.com/ewancoder/eal)
- [https://github.com/ewancoder/aui](https://github.com/helmuthdu/aui)

# Mes scripts

## PC portable

Il suffit simplement de lancer `install.sh` et de se faire un café.

Attention à une chose, il n'y a pas de gestion d'erreur, si une erreur est survenu, le pc reboot et peut donc potentiellement plenter.

- [install.sh](https://share.neodarz.net/install.sh)

``` sh
#/bin/sh

loadkeys fr
pacman-key --refresh-keys
pacman --noconfirm -Syu
pacman --noconfirm -S vim tmux

echo "Creation of the new MBR/msdos partition table"
parted /dev/sda mklabel msdos

echo "Creation of the / parition"
parted /dev/sda mkpart primary ext4 1MiB 30GiB
parted /dev/sda set 1 boot on

echo "Creation of the /home partition"
parted /dev/sda mkpart primary ext4 30GiB 100%

echo "Creation of the filesystems"
mkfs.ext4 -F /dev/sda1
mkfs.ext4 -F /dev/sda2

echo "mounting partitions"
mount /dev/sda1 /mnt
mkdir -p /mnt/home
mount /dev/sda2 /mnt/home
pacstrap -i /mnt base base-devel

echo "Generation of an fstab"
genfstab -U -p /mnt >> /mnt/etc/fstab
curl https://share.neodarz.net/chroot-install.sh > /mnt/chroot-install.sh
chmod +x /mnt/chroot-install.sh

echo "Enter in chroot mode"
arch-chroot /mnt /chroot-install.sh
echo "Done!"

echo "Unmounting all partition and reboot !"
umount −R /mnt
reboot
```

- [chroot-install.sh](https://share.neodarz.net/chroot-install.sh)

``` sh
#/bin/sh

echo "Editing locale file"
sed -i -e 's/#en_US.UTF-8/en_US.UTF-8/g' /etc/locale.gen
sed -i -e 's/#fr_FR.UTF-8/fr_FR.UTF-8/g' /etc/locale.gen

echo "Generating locales"
locale-gen

echo "Set correct lang & keymap"
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
echo KEYMAP=fr > /etc/vconsole.conf

echo "Set time zone & hardware clock"
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
hwclock --systohc --utc

echo "Set hostname"
echo march > /etc/hostname
sed -i -e 's/localhost$/march/g' /etc/hosts

echo "Configuration of the network"
systemctl enable dhcpcd.service

echo "Set root password"
passwd

echo "Installation of grub"
pacman --noconfirm -S grub os-prober
grub-install --target=i386-pc --recheck /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

pacman --noconfirm -S iw wpa_supplicant dialog python python-appdirs python-packaging python-pyparsing python-setuptools python-dbus dbus slim  git vim tmux qterminal openssh stow xorg xorg-xinit i3

echo "Disable fucking BEEEEP"
echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf

echo "Add neodarz user"
useradd -m neodarz
passwd neodarz

echo "Set correct xinit configuration"
echo "i3" > /home/neodarz/.xinitrc

echo "Configuration of sudoers"
sed -i -e 's/root ALL=(ALL) ALL/root ALL=(ALL) ALL\nneodarz ALL=(ALL) NOPASSWD:ALL/g' /etc/sudoers

echo "Configuration of slim"
sed -i -e "s/#default_user        simone/default_user neodarz/g" /etc/slim.conf
sed -i -e "s/#focus_password      no/focus_password yes/g" /etc/slim.conf
sed -i -e "s/# numlock             on/numlock on/g" /etc/slim.conf
xorgConf=/etc/X11/xorg.conf.d/10-evdev.conf
echo 'Section "InputClass"' > $xorgConf
echo '         Identifier "evdev keyboard catchall"' >> $xorgConf
echo '         MatchIsKeyboard "on"' >> $xorgConf
echo '         MatchDevicePath "/dev/input/event*"' >> $xorgConf
echo '         Driver "evdev"' >> $xorgConf
echo '         # Keyboard layouts' >> $xorgConf
echo '         Option "XkbLayout" "fr"' >> $xorgConf
echo 'EndSection' >> $xorgConf

systemctl enable slim.service

echo "Compiling i3pystatys"
cd /tmp
sudo -u neodarz git clone https://aur.archlinux.org/i3pystatus.git
cd i3pystatus
sudo -u neodarz makepkg --noconfirm -si
cd ..
sudo -u neodarz git clone https://aur.archlinux.org/ttf-font-awesome.git
cd ttf-font-awesome
sudo -u neodarz makepkg --noconfirm -si
cd ..
sudo -u neodarz git clone https://aur.archlinux.org/otf-fira-code.git
cd otf-fira-code
sudo -u makepkg --noconfirm -si
cd /home/neodarz

echo "Installing some python modules"
sudo easy_install netifaces colour dbus

echo "Installation my beautiful ascii theme"
sudo -u neodarz git clone https://git.neodarz.net/neodarz/scripts_shit/dotfiles_ascii.git
cd dotfiles_ascii
sudo -u neodarz git checkout t410
sudo -u neodarz stow i3
sudo -u neodarz stow i3pystatus
sudo -u neodarz stow qterminal.org

sed -i -e 's/neodarz ALL=(ALL) NOPASSWD:ALL/neodarz ALL=(ALL) ALL/g' /etc/sudoers

rm /chroot-install.sh

```

## Raspberry PI 2

Scripts d'installation auto pour ma rasp. Actuellement avec le rootfs d'archlinux.

### Installation · Configuration

Permet d'installer les programmes souhaiter et de de configurer la connexion auto.

``` sh
#!/bin/sh
pacman -Syu --noconfirm
pacman -S --noconfirm git vim gcc xfce4 xorg xf86-video-fbdev

pacman -S --noconfirm python-pip libudev0 gcc
pip install python-uinput pyudev

git clone https://github.com/NeodarZ/waveshare-7inch-touchscreen-driver.git
cd waveshare-7inch-touchscreen-driver
cp config.txt /boot/config.txt
cp touch.py /usr/bin/touch.py
chmod +x /usr/bin/touch.py
cp touch.sh /usr/lib/systemd/system/touch.service
systemctl daemon-reload
systemctl enable touch.service
echo 'if [ -z "$DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ]; then' >> /home/alarm/.bashrc
echo "        exec startxfce4" >> /home/alarm/.bashrc
echo "fi" >> /home/alarm/.bashrc
mkdir /etc/systemd/system/getty@tty1.service.d
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 alarm --noclear %I $TERM" >> /etc/systemd/system/getty@tty1.service.d/override.conf
systemctl daemon-reload
reboot

```

### Preparation 

Permet l'installation d'archlinux sur le support.

#### SD

Un second script qui prend en paramètre `<sdX>`.
Cette version ne permet uniquement de faire l'installation sur la carte SD.

- mount_SD.sh

``` sh
sudo update-binfmts --enable qemu-arm
sudo rm -r boot
sudo rm -r root
sudo rm -r pre
sudo mkdir root
sudo mkdir boot
sudo mkdir pre
# Décommenter la commande suivante pour pouvoir parramétrer la clé correctement.
#sudo fdisk /dev/$1
sudo mkfs.vfat /dev/$11
sudo mount /dev/$11 boot
sudo mkfs.ext4 /dev/$12 
sudo mount /dev/$12 root
sudo bsdtar -xpf ../ArchLinuxARM-rpi-2-latest.tar.gz.1 -C pre
sudo cp /usr/bin/qemu-arm-static pre/usr/bin
sudo cp ~/pi_install.sh pre
sudo chmod +x pre/pi_install.sh
sudo arch-chroot pre /pi_install.sh
sudo cp -rp pre/boot/* boot
sudo cp -rp pre/* root
sync
sudo umount boot root
```

#### SD + USB (ou HDD)

Une version alternative au second script cité plus haut, il prend en paramètre `<sdX>` ET `<sdY>` où `<sdX>` est la partion /root et `<sdY>` la partion /root.
Cette version permet de booter sur la carte SD puis de basculer sur la clé USB afin de ne pas trop faire soufrir la carte microSD.

- mount_USB.sh

``` sh
sudo update-binfmts --enable qemu-arm
sudo rm -r boot
sudo rm -r root
sudo rm -r pre
sudo mkdir root
sudo mkdir boot
sudo mkdir pre
# Décommenter la commande suivante pour pouvoir parramétrer la clé correctement
#sudo fdisk /dev/$1
sudo mkfs.vfat /dev/$11
sudo mount /dev/$11 boot
sudo mkfs.ext4 /dev/$21 
sudo mount /dev/$21 root
sudo bsdtar -xpf ../ArchLinuxARM-rpi-2-latest.tar.gz.1 -C pre
sudo cp /usr/bin/qemu-arm-static pre/usr/bin
sudo cp ~/pi_install.sh pre
sudo chmod +x pre/pi_install.sh
sudo arch-chroot pre /pi_install.sh
sudo cp -rp pre/boot/* boot
sudo cp -rp pre/* root
sync
sudo umount boot root
```