Code Monkey home page Code Monkey logo

picodotdev / alis Goto Github PK

View Code? Open in Web Editor NEW
818.0 27.0 316.0 12.75 MB

Arch Linux Install Script (or alis, also known as the Arch Linux executable installation guide and wiki) installs an unattended, automated and customized Arch Linux system.

Home Page: https://picodotdev.github.io/alis/

License: GNU General Public License v3.0

Shell 84.02% CSS 3.10% HTML 10.65% SCSS 2.23%
operating-system installer-script archlinux bash console linux linux-distribution archlinux-installer arch-linux arch

alis's People

Contributors

arcolinuxz avatar erikdubois avatar funcrab avatar heroldtech avatar jonaslh4 avatar maurosoli avatar mfgbhatti avatar picodotdev avatar saladinayyub avatar sharkpause avatar tkna91 avatar voltrare avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alis's Issues

Allow alis.sh to be reexecuted #1

When the script fails and is reexecuted the following message is showed and the installation cannot continue without a restart.

wipefs: error /dev/sda: probing initialization failled: Device or resource busy

vgchange -a n lvm
crypsetup close lvm
partprobe /dev/sda

Common packages sets

Preselect a set of commong packages

ssh, bluethooth, ntfs-3g, dosfstools, exfat, gstreamer, ...
firefox libreoffice calibre, gimp, ...
virtualbox, docker, ...

Test with nouveau display driver

Test alis with nouveau display drivers on nvidia graphics. Test KMS and hardware acceleration on bare metal.

Configure alis.conf and select nouveau driver:

DISPLAY_DRIVER="!intel !amdgpu !ati !nvidia !nvidia-lts !nvidia-390xx !nvidia-390xx-lts !nvidia-340xx !nvidia-340xx-lts !nouveau"

Configuration only after manual initial install of Arch

Hi
I'd like to use alez to setup the zfs for the filesystem which also installs base Arch without anything configured and then use your alis script to configure the system and install the packages you install.

What do you think would be the best approach to modify your script to support that?

I'm thinking I'd just add a variable that if true the partitioning and installing the base system of Arch would not be executed.

What do you think about this idea?

Test with ati display driver

Test alis with ait display drivers on amd graphics. Test KMS and hardware acceleration on bare metal.

Configure alis.conf and select ati driver:

DISPLAY_DRIVER="!intel !amdgpu !ati !nvidia !nvidia-lts !nvidia-390xx !nvidia-390xx-lts !nvidia-340xx !nvidia-340xx-lts !nouveau"

Silly(?) suggestion

Just a suggestion for better visibility and a few lines less. (not tested in real installation conditions)

function print_step() {
    STEP=$1
    echo ""
    echo -e "${LIGHT_BLUE}# $STEP step${NC}"
    echo ""
}

function partition() {
    print_step ${FUNCNAME[0]}
....
}

function format() {
    print_step ${FUNCNAME[0]}
...
}

${FUNCNAME[0]} remove the brackets, print_step "partition()" work too

Support custom partition

Use gparted in command line mode 1 for create the partitions. This is already the way to create partitions but in a hardcoded way, see 2 and 3.

Create a variable PARTITION_CUSTOM_COMMAND.
Create variable PARTITION_MODE with values auto (as automatic patition, wipe all file system), custom with a custom gparted partition command, and manual (do nothing and use the existing configured).

Create a PARTITION_BIOS for choose the bios parition in non efi systems.
Create a PARTITION_BOOT for choose the boot partition.
Create a PARTITON_ROOT for choose the root partition.

This will allow a install without erasing the DEVICE, possibly allow dual boot with other systems and also resolve #40.

Base this work on #73.

nvidia and nvidia-dkms

Currently, alis installs nvidia and nvidia-dkms when using DISPLAY_DRIVER=nvidia. However, nvidia-dkms conflicts with nvidia and it should be used only with custom kernels (like linux-zen).

What do you think about use something like:

PACKAGES_DRIVER="nvidia$DRIVER_SUFIX"

Where DRIVER_SUFIX is either empty or -dkms if KERNELS contains a custom kernel.


I'm not sure about nvidia-lts.

/boot/loader/entries/archlinux.conf

add values to the file /boot/loader/entries/archlinux.conf
value="iommu=soft"

line expected: options initrd=initramfs-linux.img root=PARTUUID=ea8a2f82-b2e0-40cc-958c-d14dac083c19 rw iommu=soft

Allow alis.sh to be reexecuted #2

Related to #2

Can`t initialize phisical volume "/dev/mapper/lvm" of volume group "lvm" without -ff
/dev/mapper/lvm: phisical volume not initialized

Partitioning - wipefs no device specified

Thank you for this script. I've set up the partion section as below. It completes the boot partion and then it exits with the message wipefs no device specified

# partition
DEVICE="/dev/vda" # sata nvme mmc (single)
DEVICE_TRIM="true" # If DEVICE supports TRIM
LVM="false" # True if use LVM for partitioning
PARTITION_ROOT_ENCRYPTION_PASSWORD="" # LUKS encryption key, if LVM will be user LVM on LUKS. Empty for not use LUKS/encyption. Warning: change it!
PARTITION_ROOT_ENCRYPTION_PASSWORD_RETYPE=""
FILE_SYSTEM_TYPE="ext4" # (single)
SWAP_SIZE="2GiB" # (single, not supported in btrfs)

Test with nvidia display driver

Test alis with nvidia display drivers on nvidia graphics on bare metal.

Configure alis.conf and select nvidia driver:

DISPLAY_DRIVER="!intel !amdgpu !ati !nvidia !nvidia-lts !nvidia-390xx !nvidia-390xx-lts !nvidia-340xx !nvidia-340xx-lts !nouveau"

Test with amdgpu display driver

Test alis with amdgpu display drivers on amd graphics. Test KMS and hardware acceleration on bare metal.

Configure alis.conf and select amdpu driver:

DISPLAY_DRIVER="!intel !amdgpu !ati !nvidia !nvidia-lts !nvidia-390xx !nvidia-390xx-lts !nvidia-340xx !nvidia-340xx-lts !nouveau"

Test with intel display driver

Test alis with intel display drivers on intel graphics. Test KMS and hardware acceleration on bare metal.

Configure alis.conf and select intel driver:

DISPLAY_DRIVER="!intel !amdgpu !ati !nvidia !nvidia-lts !nvidia-390xx !nvidia-390xx-lts !nvidia-340xx !nvidia-340xx-lts !nouveau"

Various possible TODOS and notes


failed to start light display manager

on Thinkpad Edge 330 with 16GB RAM and SATA-HDD on first boot after install: failed to start light display manager

conf-file:

# Arch Linux Install Script (alis) configuration file
#
# Some values are preceded by a ! character, this means that the value is ignored.
# Some keys accept a single value others accept multiple values as annotated in the comments.

# init
KEYS="es"
LOG="false"

# partition
DEVICE="/dev/sda !/dev/nvme0n1 !/dev/mmcblk0" # sata nvme mmc (single)
DEVICE_TRIM="true" # If DEVICE supports TRIM
LVM="true" # True if use LVM for partitioning
PARTITION_ROOT_ENCRYPTION_PASSWORD="password" # LUKS encryption key, if LVM will be user LVM on LUKS. Empty for not use LUKS/encryption. Warning: change it!
PARTITION_ROOT_ENCRYPTION_PASSWORD_RETYPE="password"
FILE_SYSTEM_TYPE="ext4 !btrfs !xfs" # (single)
SWAP_SIZE="!2GiB !4GiB !8GiB" # (single, not supported in btrfs)

# network_install
WIFI_INTERFACE="wlan0"
WIFI_ESSID="ssid"
WIFI_KEY="password"
WIFI_HIDDEN="true"
PING_HOSTNAME="mirrors.kernel.org"

# install (precede with ! for not install)
PACMAN_MIRROR="https://mirrors.kernel.org/archlinux/\$repo/os/\$arch"
KERNELS="!linux-lts !linux-lts-headers !linux-hardened !linux-hardened-headers !linux-zen !linux-zen-headers" # Additional kernels and headers (multiple)
KERNELS_COMPRESSION="!gzip !bzip2 !lzma !xz !lzop !lz4"

# config
TIMEZONE="/usr/share/zoneinfo/Europe/Madrid"
LOCALE="de_DE.UTF-8 UTF-8"
LANG="LANG=de_DE.UTF-8"
LANGUAGE="LANGUAGE=de_DE:de:en_GB:en"
KEYMAP="KEYMAP=de-latin1"
FONT=""
FONT_MAP=""
HOSTNAME="ThinkPadE330"
ROOT_PASSWORD="password" # Root user password. Warning: change it!
ROOT_PASSWORD_RETYPE="password"

# user
USER_NAME="cw"
USER_PASSWORD="password" # Main user password. Warning: change it!
USER_PASSWORD_RETYPE="password"
ADDITIONAL_USER_NAMES="" # list separated by space
ADDITIONAL_USER_PASSWORDS="" # list separated by space

# bootloader
BOOTLOADER="grub !refind !systemd" # (single)

# desktop
DESKTOP_ENVIRONMENT="!gnome !kde xfce !mate !cinnamon !lxde" # (single)
DISPLAY_DRIVER="intel !amdgpu !ati !nvidia !nvidia-lts !nvidia-dkms !nvidia-390xx !nvidia-390xx-lts !nvidia-390xx-dkms !nouveau" # (single)
KMS="false"
DISPLAY_DRIVER_DDX="false"
VULKAN="false"
DISPLAY_DRIVER_HARDWARE_ACCELERATION="false"
DISPLAY_DRIVER_HARDWARE_ACCELERATION_INTEL="!intel-media-driver !libva-intel-driver" # (single)

# packages (all multiple)
PACKAGES_PACMAN_INTERNET="firefox !chromium !apache !nginx !curl !wget !filezilla !sshfs !openssh !transmission-gtk !transmission-qt !amule !geary !thunderbird !empathy !kopete !polari !konversation !liferea !hugo !gnome-boxes"
PACKAGES_PACMAN_MULTIMEDIA="!gthumb !gimp !imagemagick !krita !inkscape !blender !cmus !vlc !easytag !ardour !audacity !ffmpeg !gnome-phone-manager !kdeconnect !gstreamer !gst-plugins-good !gst-plugins-bad !gst-plugins-ugly bluez bluez-utils"
PACKAGES_PACMAN_UTILITIES="!gnome-initial-setup !code !eclipse-java !intellij-idea-community-edition !gradle !maven !lz4 !meld !dosfstools ntfs-3g !exfat-utils"
PACKAGES_PACMAN_DOCUMENTS_AND_TEXT="!libreoffice-fresh !calligra !discount !lyx !vim !calibre"
PACKAGES_PACMAN_SECURITY="!rsync !gnupg !keepassxc"
PACKAGES_PACMAN_SCIENCE="!geogebra !octave"
PACKAGES_PACMAN_OTHERS="!klavaro !tmux"
PACKAGES_PACMAN_DEVELOPER="!jdk-openjdk !python !dotnet-sdk !php !rust !go !virtualbox !docker !ansible !vagrant"
PACKAGES_PACMAN_CUSTOM=""

AUR="!yay !aurman"

PACKAGES_AUR_INTERNET="!dropbox"
PACKAGES_AUR_MULTIMEDIA=""
PACKAGES_AUR_UTILITIES=""
PACKAGES_AUR_DOCUMENTS_AND_TEXT="!wps-office"
PACKAGES_AUR_SECURITY="!freefilesync"
PACKAGES_AUR_SCIENCE=""
PACKAGES_AUR_OTHERS="!gnucash"
PACKAGES_AUR_DEVELOPER=""
PACKAGES_AUR_CUSTOM=""

PACKAGES_PACMAN="$PACKAGES_PACMAN_INTERNET $PACKAGES_PACMAN_MULTIMEDIA $PACKAGES_PACMAN_UTILITIES $PACKAGES_PACMAN_DOCUMENTS_AND_TEXT $PACKAGES_PACMAN_SECURITY $PACKAGES_PACMAN_SCIENCE $PACKAGES_PACMAN_OTHERS $PACKAGES_PACMAN_DEVELOPER $PACKAGES_PACMAN_CUSTOM"
PACKAGES_AUR="$PACKAGES_AUR_INTERNET $PACKAGES_AUR_MULTIMEDIA $PACKAGES_AUR_UTILITIES $PACKAGES_AUR_DOCUMENTS_AND_TEXT $PACKAGES_AUR_SECURITY $PACKAGES_AUR_SCIENCE $PACKAGES_AUR_OTHERS $PACKAGES_AUR_DEVELOPER $PACKAGES_AUR_CUSTOM"

#reboot
REBOOT="true" 

I have read some threads on the bbs, people there reported issues with xfce and lightdm. Common suggestion is to use lxdm instead.

Download and Recovery scripts

Do more easy the installation, with fewer commands.
Create a recovery script to enter on a arch-chroot when a update failure or system not booting

Keyboard Gnome

Hello, after installing there is no Swiss German keyboard in Gnome. Only US keyboard is activated.
The file /etc/X11/xorg.conf.d/00-keyboard.conf does not exists.
After switching via GUI the file is created automatically.

# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# instruct systemd-localed to update it.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "ch"
EndSection

Failed to install with lvm

==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 5.3.7-arch1-2-ARCH
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [autodetect]
-> Running build hook: [modconf]
-> Running build hook: [block]
==> ERROR: Hook 'lvm2' cannot be found
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]

Changing the script so in installs the package lvm2, makes it work.

Add subvolume setup for btrfs installs

A number of distros (OpenSUSE and Fedora, for example) will configure btrfs subvolumes. Common seems to be separate subvolumes for /, /home, and /var.

Collect wiki pages

Recollect and include in the README and bash scripts the reference pages ot the Arch Linux wiki

Allow multiple locales

Thank you for this useful script :)

I am using locales

en_DK.UTF-8 UTF-8 for LC_TIME
en_US.UTF-8 UTF-8 in general

I can hack LC_TIME into LANG config variable:

LANG="LANG=en_US.UTF-8\nLC_TIME=en_DK.UTF-8"

but I cannot generate more than one locale

Encrypt boot

Se podría agregar una opción para hacer una instalación con /boot encriptado??

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.