parent
ee6ce7ca4a
commit
9280d6d1db
@ -0,0 +1,53 @@ |
|||||||
|
#!/bin/bash |
||||||
|
whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "Welcome screen" --msgbox "Welcome to Koffe, the offline arch installer, with your permission we'll get started :)" 0 0 |
||||||
|
echo "Unpacking linux and the other stuff:" |
||||||
|
echo '' > /etc/pacman.conf |
||||||
|
echo '[options]' >> /etc/pacman.conf |
||||||
|
echo 'Architecture = auto' >> /etc/pacman.conf |
||||||
|
echo 'SigLevel = Never' >> /etc/pacman.conf |
||||||
|
echo 'LocalFileSigLevel = Never' >> /etc/pacman.conf |
||||||
|
echo '[koffe]' >> /etc/pacman.conf |
||||||
|
echo 'Server = file:///root/pkg' >> /etc/pacman.conf |
||||||
|
pacman -Sy |
||||||
|
whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "CFdisk" --msgbox "So, we need to partition the disk. I'll launch cfdisk for you in just a sec, just choose the disk to partition" 0 0 |
||||||
|
lsblk -r | grep disk | cut -f 1 -d ' ' > drvs |
||||||
|
sed -e 's/$/ disk/' -i drvs |
||||||
|
declare -a disks |
||||||
|
disks=(`cat drvs`) |
||||||
|
drv=$(whiptail --title "Select drive to partition" --menu "Select drive to partition" 16 78 10 "${disks[@]}" 3>&1 1>&2 2>&3 3>&-) |
||||||
|
cfdisk /dev/$drv |
||||||
|
lsblk -r | grep part | cut -f 1 -d ' ' > drvs |
||||||
|
sed -e 's/$/ part/' -i drvs |
||||||
|
declare -a parts |
||||||
|
parts=(`cat drvs`) |
||||||
|
ppart=$(whiptail --title "Select the partiton to install linux to:" --menu "Select the partiton to install linux to (this will wipe the partition):" 16 78 10 "${parts[@]}" 3>&1 1>&2 2>&3 3>&-) |
||||||
|
mkfs.ext4 /dev/$ppart |
||||||
|
mount /dev/$ppart /mnt |
||||||
|
echo no disk >> drvs |
||||||
|
parts=(`cat drvs`) |
||||||
|
pswap=$(whiptail --title "Select the partiton to install swap to:" --menu "Select the partiton to install swap to (no disk if none):" 16 78 10 "${parts[@]}" 3>&1 1>&2 2>&3 3>&-) |
||||||
|
mkswap /dev/$pswap |
||||||
|
swapon /dev/$pswap |
||||||
|
pefi=$(whiptail --title "Select the partiton to install EFI to:" --menu "Select the partiton to install EFI to (no disk if you have legacy bios):" 16 78 10 "${parts[@]}" 3>&1 1>&2 2>&3 3>&-) |
||||||
|
mkdir /mnt/boot |
||||||
|
mkfs.fat -F32 /dev/$pefi |
||||||
|
mount /dev/$pefi /mnt/boot |
||||||
|
extraparts=$(whiptail --inputbox "If you want to mount any other partition manually, enter the commands here like this: command 1 ; command 2 ; command 3" 0 0 0 3>&1 1>&2 2>&3 3>&-) |
||||||
|
echo $extraparts > coms |
||||||
|
bash coms |
||||||
|
whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "Initial setup ready" --msgbox "Well, that was it for the initial setup, now press ok, grab a cup of coffee and wait for linux to install. Be sure to stick around for the post-install configurations tho." 0 0 |
||||||
|
#if one package errors out for whatever reason the whole pacstrap fails so i removed this implementation |
||||||
|
#pacstrap /mnt - < install.list |
||||||
|
for pac in $(cat install.list) |
||||||
|
do |
||||||
|
pacstrap /mnt $pac |
||||||
|
done |
||||||
|
genfstab -U /mnt >> /mnt/etc/fstab |
||||||
|
cp pi.is /mnt/root/ |
||||||
|
echo 'bash /root/pi.is' > /mnt/root/.bashrc |
||||||
|
echo 'echo "" > /root/.bashrc' >> /mnt/root/.bashrc |
||||||
|
arch-chroot /mnt |
||||||
|
whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "Goodbye screen" --msgbox "Well, that was everything. Use reboot or poweroff to exit" 0 0 |
||||||
|
umount -a |
||||||
|
clear |
||||||
|
echo "use poweroff or reboot to exit" |
||||||
@ -0,0 +1,156 @@ |
|||||||
|
#!/bin/bash |
||||||
|
x=1 |
||||||
|
pts=/usr/share/koffe/ |
||||||
|
pathto=$(realpath ./) |
||||||
|
if [ $1 ]; |
||||||
|
then |
||||||
|
for argument in $@ |
||||||
|
do |
||||||
|
if [[ $argument == "--help" ]]; |
||||||
|
then |
||||||
|
echo "koffe is a tool for making simple and intuitive offline archlinux installers" |
||||||
|
echo "with support for most packages, package groups or aur packages." |
||||||
|
echo |
||||||
|
echo "The programs you select are the only ones getting installed" |
||||||
|
echo "(and the dependencies, of course), so make sure to include packages that are needed for a" |
||||||
|
echo "healthy arch install. So smthng like " |
||||||
|
echo "'koffe --pacs=base,linux,linux-firmware,sudo,grub,xorg,gnome,minecraft-launcher,code,yay'" |
||||||
|
echo "and any other packages you want to install," |
||||||
|
echo "you can also use whatever WM or DE you want, just keep in mind if the greeter is anything" |
||||||
|
echo "other than gdm, sddm or lightdm you need to enable it yourself. Also, if you're" |
||||||
|
echo "making an archiso to be used on many computers and include multiple sets of drivers," |
||||||
|
echo "in the live disk you can edit 'install.list' to manage what programs to install" |
||||||
|
echo |
||||||
|
echo "Once you're done with the iso, to install arch just boot from it and do 'bash install'" |
||||||
|
echo --------------------------------------------------- |
||||||
|
echo |
||||||
|
echo Flags: |
||||||
|
echo "koffe --pacs=Prog1,Prog2 -----> starts koffe and creates" |
||||||
|
echo " an iso with the programs Prog1 and Prog2" |
||||||
|
echo " IMPORTANT: Separate the progs with commas" |
||||||
|
echo " and do not use spaces" |
||||||
|
echo |
||||||
|
echo "koffe --clean ----------------> cleans building dirs after unexpected" |
||||||
|
echo " exit or unsuccesful iso generation. Will" |
||||||
|
echo " nullify any other args parsed with it and will" |
||||||
|
echo " not create an iso" |
||||||
|
echo |
||||||
|
echo "koffe --scripts=/path/path/ --> copies the scripts in the specified path" |
||||||
|
echo " and uses them instead of the default koffe" |
||||||
|
echo " scripts in /usr/share/koffe/. Avoid paths with spaces" |
||||||
|
exit |
||||||
|
fi |
||||||
|
if [[ $(echo $argument | cut -f 1 -d '=') == "--pacs" ]]; |
||||||
|
then |
||||||
|
declare -a prog |
||||||
|
x=0 |
||||||
|
prog=$(echo $argument | cut -f 2 -d '=') |
||||||
|
prog=${prog//,/ } |
||||||
|
echo $prog |
||||||
|
fi |
||||||
|
if [[ $(echo $argument | cut -f 1 -d '=') == "--scripts" ]]; |
||||||
|
then |
||||||
|
pts=$(echo $argument | cut -f 2 -d '=') |
||||||
|
fi |
||||||
|
if [[ $argument == "--clean" ]]; |
||||||
|
then |
||||||
|
if [[ $(whoami) == root ]]; |
||||||
|
then |
||||||
|
rm -rf ~/koffeiso |
||||||
|
rm -rf /usr/share/archiso/configs/releng/airootfs/root/* |
||||||
|
rm -rf /tmp/koffe/ |
||||||
|
exit |
||||||
|
fi |
||||||
|
fi |
||||||
|
done |
||||||
|
fi |
||||||
|
if [ $(whoami) != root ]; |
||||||
|
then |
||||||
|
echo |
||||||
|
echo WARNING: the program needs to be ran as root |
||||||
|
echo $prog |
||||||
|
fi |
||||||
|
if [ $(whoami) == root ]; |
||||||
|
then |
||||||
|
cp $pts/* /usr/share/archiso/configs/releng/airootfs/root/ |
||||||
|
echo '' > /usr/share/archiso/configs/releng/airootfs/root/install.list |
||||||
|
pacman -Sy |
||||||
|
mkdir /tmp/koffe/ |
||||||
|
mkdir /tmp/koffe/l/ |
||||||
|
mkdir /tmp/koffe/n/ |
||||||
|
mkdir /tmp/koffe/aur/ |
||||||
|
mkdir /tmp/koffe/aurbg/ |
||||||
|
mkdir /usr/share/archiso/configs/releng/airootfs/root/pkg/ |
||||||
|
mkdir ~/koffeiso |
||||||
|
mkdir ~/out |
||||||
|
rm -rf /var/cache/pacman/pkg/* |
||||||
|
pactree -u -s libnewt > /tmp/koffe/n/libnewt |
||||||
|
pacman -Sp --noconfirm - < /tmp/koffe/n/libnewt > /tmp/koffe/l/libnewt |
||||||
|
echo libnewt >> /usr/share/archiso/configs/releng/airootfs/root/install.list |
||||||
|
wget -nc -i /tmp/koffe/l/libnewt -P /usr/share/archiso/configs/releng/airootfs/root/pkg/ |
||||||
|
pactree -u -s grub > /tmp/koffe/n/grub |
||||||
|
pacman -Sp --noconfirm - < /tmp/koffe/n/grub > /tmp/koffe/l/grub |
||||||
|
echo grub >> /usr/share/archiso/configs/releng/airootfs/root/install.list |
||||||
|
wget -nc -i /tmp/koffe/l/grub -P /usr/share/archiso/configs/releng/airootfs/root/pkg/ |
||||||
|
if [[ x == 1 ]]; |
||||||
|
then |
||||||
|
declare -a prog |
||||||
|
prog=$(whiptail --inputbox "Please enter all the programs to be included in the installer separated by a space, you can also include package groups like gnome or xorg or AUR packages" 0 0 4 3>&1 1>&2 2>&3 3>&-) |
||||||
|
fi |
||||||
|
for app in $prog |
||||||
|
do |
||||||
|
clear |
||||||
|
echo $app |
||||||
|
variable=$(pacman -Sg $app) |
||||||
|
if [[ $variable == '' ]]; |
||||||
|
then |
||||||
|
#base |
||||||
|
pactree -u -s $app > /tmp/koffe/n/$app |
||||||
|
pacman -Sp --noconfirm - < /tmp/koffe/n/$app > /tmp/koffe/l/$app |
||||||
|
echo $app >> /usr/share/archiso/configs/releng/airootfs/root/install.list |
||||||
|
wget -nc -i /tmp/koffe/l/$app -P /usr/share/archiso/configs/releng/airootfs/root/pkg/ |
||||||
|
fi |
||||||
|
if [[ $variable != '' ]]; |
||||||
|
then |
||||||
|
#gnome |
||||||
|
pacman -Sg $app > /tmp/koffe/generaltemp |
||||||
|
cut -f 2- -d ' ' /tmp/koffe/generaltemp > /tmp/koffe/grlist |
||||||
|
grlist=$(cat /tmp/koffe/grlist) |
||||||
|
echo '' > /tmp/koffe/grtree |
||||||
|
for component in $grlist |
||||||
|
do |
||||||
|
pactree -s -u $component >> /tmp/koffe/grtree |
||||||
|
echo $component >> /usr/share/archiso/configs/releng/airootfs/root/install.list |
||||||
|
done |
||||||
|
pacman -Sp --noconfirm - < /tmp/koffe/grtree > /tmp/koffe/grlinks |
||||||
|
wget -nc -i /tmp/koffe/grlinks -P /usr/share/archiso/configs/releng/airootfs/root/pkg/ |
||||||
|
fi |
||||||
|
mkdir /tmp/koffe/home |
||||||
|
sudo usermod -d /tmp/koffe/home/ nobody |
||||||
|
git clone https://aur.archlinux.org/$app /tmp/koffe/aurbg/$app |
||||||
|
chown -hR nobody /tmp/koffe/ |
||||||
|
cd /tmp/koffe/aurbg/$app |
||||||
|
sudo -u nobody makepkg --noconfirm --skippgpcheck |
||||||
|
cp /tmp/koffe/aurbg/$app/*.pkg.tar.zst /usr/share/archiso/configs/releng/airootfs/root/pkg |
||||||
|
echo $app >> /usr/share/archiso/configs/releng/airootfs/root/install.list |
||||||
|
declare -a bb |
||||||
|
bb=$(cat /tmp/koffe/aurbg/$app/.SRCINFO | grep depends | cut -f 2 -d '=' | cut -f 1 -d '>' | cut -f 1 -d '"') |
||||||
|
for depend in $bb |
||||||
|
do |
||||||
|
pactree -u -s $depend > /tmp/koffe/n/$depend |
||||||
|
pacman -Sp --noconfirm - < /tmp/koffe/n/$depend > /tmp/koffe/l/$depend |
||||||
|
wget -nc -i /tmp/koffe/l/$depend -P /usr/share/archiso/configs/releng/airootfs/root/pkg/ |
||||||
|
git clone https://aur.archlinux.org/$depend /tmp/koffe/aurbg/$depend |
||||||
|
chown -hR nobody /tmp/koffe/$depend |
||||||
|
cd /tmp/koffe/aurbg/$depend |
||||||
|
sudo -u nobody makepkg --noconfirm --skippgpcheck |
||||||
|
cp /tmp/koffe/aurbg/$depend/*.pkg.tar.zst /usr/share/archiso/configs/releng/airootfs/root/pkg |
||||||
|
done |
||||||
|
done |
||||||
|
repo-add /usr/share/archiso/configs/releng/airootfs/root/pkg/koffe.db.tar.gz /usr/share/archiso/configs/releng/airootfs/root/pkg/* |
||||||
|
mkarchiso -v -w ~/koffeiso -o $pathto/ /usr/share/archiso/configs/releng |
||||||
|
rm -rf ~/koffeiso |
||||||
|
rm -rf /usr/share/archiso/configs/releng/airootfs/root/* |
||||||
|
rm -rf /tmp/koffe/ |
||||||
|
fi |
||||||
|
|
||||||
@ -0,0 +1,71 @@ |
|||||||
|
systemctl enable NetworkManager |
||||||
|
systemctl enable sddm.service |
||||||
|
systemctl enable gdm.service |
||||||
|
systemctl enable lightdm |
||||||
|
whiptail --clear --backtitle "Koffe Offline Arch Installer - made by Konicks(GRI)" --title "Finishing setup" --msgbox "Well, linux is installed (kinda), let's go through the final setup and configure it a bit" 0 0 |
||||||
|
cd /usr/share/zoneinfo |
||||||
|
echo */ | tr " " "\n" > ~/reg |
||||||
|
sed -e 's/$/ region/' -i ~/reg |
||||||
|
declare -a regs |
||||||
|
regs=(`cat ~/reg`) |
||||||
|
region_vague=$(whiptail --title "Finishing setup" --menu "Let's start with the region, select your region from below" 0 0 0 "${regs[@]}" 3>&1 1>&2 2>&3 3>&-) |
||||||
|
echo $region_vague |
||||||
|
cd /usr/share/zoneinfo/$region_vague |
||||||
|
echo * | tr " " "\n" > ~/reg |
||||||
|
sed -e 's/$/ region/' -i ~/reg |
||||||
|
declare -a regs |
||||||
|
regs=(`cat ~/reg`) |
||||||
|
region_close=$(whiptail --title "Finishing setup" --menu "Select your city from below" 0 0 0 "${regs[@]}" 3>&1 1>&2 2>&3 3>&-) |
||||||
|
ln -sf /usr/share/zoneinfo/$region_vague/$region_close /etc/localtime |
||||||
|
hwclock --systohc |
||||||
|
touch /etc/locale.conf |
||||||
|
echo "LANG=en_US.UTF-8" > /etc/locale.conf |
||||||
|
echo en_US.UTF-8 UTF-8 >> /etc/locale.gen |
||||||
|
rm ~/reg |
||||||
|
locale-gen |
||||||
|
cd / |
||||||
|
myhostname=$(whiptail --inputbox "Now choose a name for your computer" 0 0 4 3>&1 1>&2 2>&3 3>&-) |
||||||
|
echo "127.0.0.1 localhost |
||||||
|
::1 localhost |
||||||
|
127.0.1.1 $myhostname.localdomain $myhostname" > /etc/hosts |
||||||
|
echo "$myhostname" > /etc/hostname |
||||||
|
archit=$(whiptail --backtitle "Koffe" --title "Architecture selector" --menu "Choose the bit count of your x86 chip" 0 0 4 \ |
||||||
|
64 "BIT" \ |
||||||
|
32 "BIT" 3>&1 1>&2 2>&3 3>&-) |
||||||
|
efiornot=$(whiptail --backtitle "Koffe" --title "Boot selector" --menu "Is your soon-to-be-arch computer legacy or EUFI?" 0 0 4 \ |
||||||
|
1 "Bios/Legacy" \ |
||||||
|
2 "UEFI" 3>&1 1>&2 2>&3 3>&-) |
||||||
|
if [[ "$efiornot" == "2" ]] |
||||||
|
then |
||||||
|
if [[ "$archit" == "64" ]] |
||||||
|
then |
||||||
|
grub-install --target=x86_64-efi --efi-directory=/boot |
||||||
|
grub-mkconfig -o /boot/grub/grub.cfg |
||||||
|
fi |
||||||
|
if [[ "$archit" == "32" ]] |
||||||
|
then |
||||||
|
grub-install --target=i386-efi --efi-directory=/boot |
||||||
|
grub-mkconfig -o /boot/grub/grub.cfg |
||||||
|
fi |
||||||
|
fi |
||||||
|
if [[ "$efiornot" == "1" ]] |
||||||
|
then |
||||||
|
lsblk | grep disk | cut -f 1 -d ' ' > ~/drvs |
||||||
|
sed -e 's/$/ disk/' -i ~/drvs |
||||||
|
declare -a lname |
||||||
|
disks=(`cat ~/drvs`) |
||||||
|
lname=$(whiptail --title "Select drive to install grub to" --menu "Select drive to install grub to" 16 78 10 "${disks[@]}" 3>&1 1>&2 2>&3 3>&-) |
||||||
|
grub-install --recheck /dev/$lname |
||||||
|
grub-mkconfig -o /boot/grub/grub.cfg |
||||||
|
fi |
||||||
|
clear |
||||||
|
echo Now choose a root password |
||||||
|
passwd |
||||||
|
myusername1=$(whiptail --inputbox "Now lets create a user, pick a username: " 0 0 4 3>&1 1>&2 2>&3 3>&-) |
||||||
|
echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers |
||||||
|
useradd -m -G wheel $myusername1 |
||||||
|
echo "and a password" |
||||||
|
passwd $myusername1 |
||||||
|
clear |
||||||
|
echo "If you need to run any special commands to enable or configure something in chroot do so now" |
||||||
|
echo "Then type 'exit' to go back to the installer" |
||||||
Loading…
Reference in new issue