pull/1/head
beech 2 years ago
parent 68cb3d5c11
commit 9bae28bd6e
  1. 58
      README.md
  2. 93
      preinstall1.sh
  3. 35
      preinstall2.sh
  4. 67
      setup.sh
  5. 56
      software.sh

@ -1,3 +1,57 @@
# ArchScripts # ArchMatic Installer Script - VMWare
Scripts for full Arch Install My modified ArchMatic scripts for a full Arch install & configuration with DE, support packages, and apps. Forked for VMWare optimization.
---
## Setup Boot and Arch ISO on USB key
First, setup the boot USB, boot arch live iso, and run the `preinstall.sh` from terminal.
### Arch Live ISO (Pre-Install)
This step installs arch to your hard drive. *IT WILL FORMAT THE DISK*
```bash
curl https://git.boppdev.net/beech/ArchScripts/raw/branch/main/preinstall1.sh -o preinstall1.sh
sh preinstall1.sh
passwd
useradd -M -g users -G wheel,storage,power -S /bin/bash USERNAME
passwd USERNAME
sed -i 's/^# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/' /etc/sudoers
echo "Defaults rootpw" >> /etc/sudoers
ip link # Take note of your link name & edit in preinstall2.
# Run preinstall2.sh
curl https://git.boppdev.net/beech/ArchScripts/raw/branch/main/preinstall2.sh -o preinstall2.sh
nano preinstall2.sh
# Edit adapter name for dhcpcd service in script
sh preinstall2.sh
```
### After First Boot
```bash
pacman -S --noconfirm pacman-contrib curl git
git clone https://git.boppdev.net/beech/ArchScripts
cd ArchScripts
sh setup.sh
sh software.sh
```
### System Description
GNOME Desktop Enviornment
GDM Login Manager
Booting using `systemd`
Installs the LTS Kernel along side the rolling one, and configures the bootloader to offer both as a choice during startup. This allows you to switch kernels in the event of a problem with the rolling one.
### Credits
__[Credits to johnynfulleffect's fork of ArchMatic](https://github.com/johnynfulleffect/ArchMatic)__
__[Credits to rickellis - ArchMatic](https://github.com/ChrisTitusTech/ArchMatic)__

@ -0,0 +1,93 @@
#!/usr/bin/env bash
echo "-------------------------------------------------"
echo "Setting up partitions - DRIVE WILL BE WIPED"
echo "-------------------------------------------------"
# disk prep
sgdisk -Z /dev/sda # zap all on disk
sgdisk -a 2048 -o /dev/sda # new gpt disk 2048 alignment
# create partitions
sgdisk -n 1:0:1024M /dev/sda # partition 1 (boot)
sgdisk -n 2:0:4G /dev/sda # partition 2 (SWAP)
sgdisk -n 3:0:35G /dev/sda # partition 3 (root)
sgdisk -n 4:0:0 /dev/sda # partition 4 (home, remaining space)
# set partition types
sgdisk -t 1:ef00 /dev/sda
sgdisk -t 2:8200 /dev/sda
sgdisk -t 3:8300 /dev/sda
sgdisk -t 4:8300 /dev/sda
# label partitions
sgdisk -c 1:"boot" /dev/sda
sgdisk -c 2:"swap" /dev/sda
sgdisk -c 3:"root" /dev/sda
sgdisk -c 4:"home" /dev/sda
# make filesystems
echo "-------------------------------------------------"
echo "Creating Filesystems"
echo "-------------------------------------------------"
mkfs.fat -F32 /dev/sda1 # FAT32 boot partition
mkswap /dev/sda2 # create SWAP
swapon /dev/sda2 # enable SWAP
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4
# mount partitions
echo "-------------------------------------------------"
echo "Mounting Partitions"
echo "-------------------------------------------------"
mount /dev/sda3 /mnt
mkdir /mnt/boot
mkdir /mnt/home
mount /dev/sda1 /mnt/boot
mount /dev/sda4 /mnt/home
# set download mirrors
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup # backs up mirrorlist
sudo pacman -Sy pacman-contrib
rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist
# install arch
pacstrap -K /mnt base linux linux-firmware base-devel
echo "-------------------------------------------------"
echo "Arch Installed - Generating fstab and entering chroot"
echo "-------------------------------------------------"
# generate fstab
genfstab -U -p /mnt >> /mnt/etc/fstab
arch chroot /mnt # chroot
# generate locales
sudo pacman -S nano bash-completion
sed -i 's/^#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
# set timezone & link HW clock
ln -S /usr/share/zoneinfo/America/Chicago > /etc/localtime
hwclock --systohc --utc
# set hostname
echo archdesk > /etc/hostname
# Enable TRIM
systemctl enable fstrim.timer
echo "-------------------------------------------------"
echo "Create user accounts using commands in README, then proceed to 2nd installer."
echo "-------------------------------------------------"

@ -0,0 +1,35 @@
#!/usr/bin/env bash
# mount efivars
mount -t efivarfs efivarfs /sys/firmware/efi/efivars/
# install bootloader
bootctl install
touch /boot/loader/entries/arch.conf
echo "title Arch" > /boot/loader/entries/arch.conf
echo "linux /vmlinuz-linux" >> /boot/loader/entries/arch.conf
echo "initrd /initramfs-linux.img" >> /boot/loader/entries/arch.conf
echo "options root=PARTUUID=$(blkid -S PARTUUID -o value /dev/sda3) rw" >> /boot/loader/entries/arch.conf
# install dhcpd service
sudo pacman -S dhcpcd
sudo systemctl enable dhcpcd@ADAPTER.service # EDIT "ADAPTER" WITH YOUR ADAPTER IN IP LINK
# install NetworkManager
sudo pacman -S networkmanager
sudo systemctl enable NetworkManager.service
echo "-------------------------------------------------"
echo "Arch Linux Installed & Configured - Reboot & Proceed to setup scripts"
echo "-------------------------------------------------"
exit
umount -R /mnt

@ -0,0 +1,67 @@
#!/usr/bin/env bash
echo
echo "Installing Base System"
echo
PKGS=(
# --- VM Packages
'open-vm-tools'
# --- XORG Display Rendering
'xorg' # Base Package
'xorg-drivers' # Display Drivers
'xterm' # Terminal for TTY
'xorg-server' # XOrg server
'xorg-apps' # XOrg apps group
'xorg-xinit' # XOrg init
'xorg-xinput' # XOrg xinput
'xorg-twm' # XOrg twm
'xorg-xclock' # XOrg xclock
'xf86-input-vmmouse'
'xf86-video-vmware'
'mesa'
# --- Setup Desktop
'gnome' # GNOME
'xfce4-power-manager' # Power Manager
# --- Login Display Manager
'gdm' # Base Login Manager
# --- Networking Setup
'dialog' # Enables shell scripts to trigger dialog boxex
'networkmanager' # Network connection manager
'network-manager-applet' # System tray icon/utility for network connectivity
'dhclient' # DHCP client
'libsecret' # Library for storing passwords
'fail2ban' # Ban IP's after man failed login attempts
'ufw' # Uncomplicated firewall
# --- Audio
'alsa-utils' # Advanced Linux Sound Architecture (ALSA) Components https://alsa.opensrc.org/
'alsa-plugins' # ALSA plugins
'pulseaudio' # Pulse Audio sound components
'pulseaudio-alsa' # ALSA configuration for pulse audio
'pavucontrol' # Pulse Audio volume control
'pnmixer' # System tray volume control
# --- Bluetooth
'bluez' # Daemons for the bluetooth protocol stack
'bluez-utils' # Bluetooth development and debugging utilities
'bluez-libs' # Bluetooth libraries
'bluez-firmware' # Firmware for Broadcom BCM203x and STLC2300 Bluetooth chips
'blueberry' # Bluetooth configuration tool
'pulseaudio-bluetooth' # Bluetooth support for PulseAudio
)
for PKG in "${PKGS[@]}"; do
echo "INSTALLING: ${PKG}"
sudo pacman -S "$PKG" --noconfirm --needed
done
sudo systemctl enable gdm.service
echo
echo "Done! Please Reboot & Run software.sh"
echo

@ -0,0 +1,56 @@
#!/usr/bin/env bash
echo
echo "INSTALLING SOFTWARE"
echo
PKGS=(
# TERMINAL UTILITIES --------------------------------------------------
'curl' # Remote content retrieval
'file-roller' # Archive utility
'gufw' # Firewall manager
'hardinfo' # Hardware info app
'neofetch' # Shows system info when you launch terminal
'numlockx' # Turns on numlock in X11
'p7zip' # 7z compression program
'unrar' # RAR compression program
'unzip' # Zip compression program
'wget' # Remote content retrieval
'konsole' # Terminal emulator
'vim' # Terminal Editor
'zenity' # Display graphical dialog boxes via shell scripts
'zip' # Zip compression program
'zsh' # Interactive shell
'zsh-autosuggestions' # Zsh Plugin
'zsh-syntax-highlighting' # Zsh Plugin
'nano' # Simpler Terminal Editor
# GENERAL UTILITIES ---------------------------------------------------
'dolphin' # Filesystem browser
# DEVELOPMENT ---------------------------------------------------------
'gedit' # Text editor
'code' # Visual Studio Code
'git' # Version control system
'nodejs' # Javascript runtime environment
'npm' # Node package manager
'python' # Scripting language
'yarn' # Dependency management (Hyper needs this)
# PRODUCTIVITY --------------------------------------------------------
'xpdf' # PDF viewer
)
for PKG in "${PKGS[@]}"; do
echo "INSTALLING: ${PKG}"
sudo pacman -S "$PKG" --noconfirm --needed
done
echo
echo "Done!"
echo