All Projects → 64kramsystem → zfs-installer

64kramsystem / zfs-installer

Licence: GPL-3.0 License
Shell script program that prepares ZFS on a system, and installs Linux

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to zfs-installer

8821au-20210708
Linux Driver for USB WiFi Adapters that are based on the RTL8811AU and RTL8821AU Chipsets - v5.12.5.2
Stars: ✭ 40 (-70.8%)
Mutual labels:  debian, ubuntu, linux-mint
Zfs Installer
Shell script program that prepares ZFS on a system, and installs Linux
Stars: ✭ 88 (-35.77%)
Mutual labels:  debian, ubuntu, boot
Debootstick
Generate a bootable live image from any Debian/Ubuntu filesystem tree.
Stars: ✭ 48 (-64.96%)
Mutual labels:  debian, ubuntu, boot
airgeddon deb packages
Useful related to airgeddon packages for Debian based Linux distributions
Stars: ✭ 22 (-83.94%)
Mutual labels:  debian, ubuntu
kakaotalk-env
KakaoTalk Environment on Debian / Ubuntu Linux (데비안, 우분투 리눅스에서 카카오톡 설치 및 사용하기)
Stars: ✭ 45 (-67.15%)
Mutual labels:  debian, ubuntu
dist-detect
Try to determine what Linux/Unix distribution is running on a remote host and get a hint if security updates are applied.
Stars: ✭ 14 (-89.78%)
Mutual labels:  debian, ubuntu
packer-ubuntu-18.04
packer example - Ubuntu Server 18.04.5
Stars: ✭ 37 (-72.99%)
Mutual labels:  ubuntu, ubuntu-server
ubuntu-2004
🔵 Curso GRÁTIS de GNU/Linux Ubuntu Server 20.04.x LTS - DevOps utilizando Shell Script
Stars: ✭ 70 (-48.91%)
Mutual labels:  ubuntu, ubuntu-server
notion-linux
Native Notion packages for Linux
Stars: ✭ 887 (+547.45%)
Mutual labels:  debian, ubuntu
darknet.py
darknet.py is a network application with no dependencies other than Python and Tor, useful to anonymize the traffic of linux servers and workstations.
Stars: ✭ 71 (-48.18%)
Mutual labels:  debian, ubuntu
MisakaLinuxToolbox
御坂妹妹们的Linux VPS工具箱
Stars: ✭ 237 (+72.99%)
Mutual labels:  debian, ubuntu
docker-debian-releases
Creates docker images of historic Debian-based distribution releases
Stars: ✭ 19 (-86.13%)
Mutual labels:  debian, ubuntu
dawgmon
dawg the hallway monitor - monitor operating system changes and analyze introduced attack surface when installing software
Stars: ✭ 52 (-62.04%)
Mutual labels:  debian, ubuntu
pacstall-programs
Pacstall's official program repository
Stars: ✭ 63 (-54.01%)
Mutual labels:  debian, ubuntu
ansible-ssh-keys
Ansible role to manage ssh keys in Debian-like systems
Stars: ✭ 26 (-81.02%)
Mutual labels:  debian, ubuntu
packer-templates
Packer templates for creating Amazon EC2 images, Proxmox templates and Vagrant boxes
Stars: ✭ 70 (-48.91%)
Mutual labels:  ubuntu, ubuntu-server
sublime-patcher
Bash script for patching/cracking Sublime Text on Linux
Stars: ✭ 20 (-85.4%)
Mutual labels:  debian, ubuntu
ansible-role-daemonize
Ansible Role - Daemonize.
Stars: ✭ 14 (-89.78%)
Mutual labels:  debian, ubuntu
ansible-dnsmasq
Ansible role to set up Dnsmasq in Debian-like systems
Stars: ✭ 18 (-86.86%)
Mutual labels:  debian, ubuntu
InstallOS
Network reinstallation of the Linux system.
Stars: ✭ 34 (-75.18%)
Mutual labels:  debian, ubuntu

zfs-installer

ZFS installer is a shell script program that fully prepares ZFS on a system, and allows an effortless installation of several Debian-based operating systems using their standard installer (or debootstrap, or any custom script).

Project status

The project is in passive maintenance: I accept PRs but not issues, and I may apply minor changes on an irregular basis. Issues and discussions will be deactivated from Mon 29/Nov.

PR are always welcome! 😄 I guarantee quick feedback.

The reason for the discontinuation of the active maintenance is that O/S installers don't have stable specifications (see the stability section), and I don't have the resources to investigate breakages.

Supported distros may or may not work; I only guarantee support for Ubuntu Desktop LTS versions, since it's the distribution I use.

Requirements and functionality

The program currently supports:

  • Ubuntu Desktop 18.04.x/20.04 Live
  • Ubuntu Server 18.04.x/20.04 Live
  • Linux Mint 19.x, 20
  • Debian 10.x/11.x Live (desktop environment required)
  • ElementaryOS 5.1

The ZFS version installed is 0.8 (optionally, 2.x), which supports native encryption and trimming (among the other improvements over 0.7). The required repositories are automatically added to the destination system.

EFI boot is required (any modern (2011+) system will do); legacy boot is currently not supported.

All the ZFS RAID types are supported, with any arbitrary number of disks. An EFI partition is created on each disk, for redundancy purposes.

It's fairly easy to extend the program to support other Debian-based operating systems (e.g. older/newer Ubuntu's, etc.) - the project is (very) open to feature requests.

Comparison with Ubuntu built-in installer

As of 20.04, Canonical makes available an experimental ZFS installer on Ubuntu Desktop.

The advantages of this project over the Ubuntu installer are:

  1. it allows configuring pools, datasets and the RAID type;
  2. it allows customizing the disk partitions;
  3. it supports additional features (e.g. encryption and trimming);
  4. it supports newer OpenZFS versions, via PPA jonathonf/zfs.
  5. it supports many more operating systems;
  6. it supports unattended installations, via custom scripts;
  7. it's easy to extend.

Instructions

Start the live CD of a supported Linux distribution, then open a terminal and execute:

GET https://git.io/JEw00 | sudo bash

then follow the instructions; halfway through the procedure, the GUI installer of the O/S will be launched.

Ubuntu Server

Ubuntu Server requires a slightly different execution procedure:

  • when the installer welcome screen shows up, tap Ctrl+Alt+F2,
  • then type curl -L https://git.io/JEw00 | sudo bash.

then follow the instructions.

Stability

The project is carefully developed, however, it's practically impossible to guarantee continuous stability, for two reasons:

  1. Linux distributions frequently apply small changes to their installers, even on the same distribution version,
  2. automated testing is not feasible; although debootstrap installations could be automated, the bulk of the work is related to the installers, which can't be automated without sophisticated GUI automation,
  3. testing is time consuming, so it can be performed on a limited amount of distros at a time.

Broadly speaking, there are two types of breakages:

  1. minor changes directly or indirectly related to the installer, for example:
  • partition mounts change behavior (e.g. when they're dismounted)
  • installed services change behavior (e.g. a new service creates an ephemeral file under /target/run, and the sync fails because the file disappears)
  1. GRUB setup not working
    • most annoying issue to debug; the installer will succeed, but the installed O/S won't boot

Demo

Demo

Unsupported systems/Issues

The Ubuntu Server alternate (non-live) version is not supported, as it's based on the Busybox environment, which lacks several tools used in the installer (apt, rsync...).

The installer itself can run over SSH ([S]Ubiquity of course needs to be still run in the desktop environment, unless a custom script is provided), however, GNU Screen sessions may break, due to the virtual filesystems rebinding/chrooting. This is not an issue with the ZFS installer; it's a necessary step of the destination configuration.

Unattended installations

The program supports unattended installation, via environment variables. The program built-in help explains all the options:

$ wget -qO- https://git.io/JEw00 | bash /dev/stdin --help
Usage: install-zfs.sh [-h|--help]

Sets up and install a ZFS Ubuntu installation.

This script needs to be run with admin permissions, from a Live CD.

The procedure can be entirely automated via environment variables:

- ZFS_OS_INSTALLATION_SCRIPT : path of a script to execute instead of Ubiquity (see dedicated section below)
- ZFS_USE_PPA                : set to 1 to use packages from `ppa:jonathonf/zfs` (automatically set to true if the O/S version doesn't ship at least v0.8)
- ZFS_SELECTED_DISKS         : full path of the devices to create the pool on, comma-separated
- ZFS_PASSPHRASE
- ZFS_RPOOL_NAME
- ZFS_BPOOL_TWEAKS           : boot pool options to set on creation (defaults to `-o ashift=12`)
- ZFS_RPOOL_TWEAKS           : root pool options to set on creation (defaults to `-o ashift=12 -O acltype=posixacl -O compression=lz4 -O dnodesize=auto -O relatime=on -O xattr=sa -O normalization=formD`)
- ZFS_NO_INFO_MESSAGES       : set 1 to skip informational messages
- ZFS_SWAP_SIZE              : swap size (integer); set 0 for no swap
- ZFS_FREE_TAIL_SPACE        : leave free space at the end of each disk (integer), for example, for a swap partition

When installing the O/S via $ZFS_OS_INSTALLATION_SCRIPT, the root pool is mounted as `/mnt`; the requisites are:

1. the virtual filesystems must be mounted in `/mnt` (ie. `for vfs in proc sys dev; do mount --rbind /$vfs /mnt/$vfs; done`)
2. internet must be accessible while chrooting in `/mnt` (ie. `echo nameserver 8.8.8.8 >> /mnt/etc/resolv.conf`)
3. `/mnt` must be left in a dismountable state (e.g. no file locks, no swap etc.);

Other options may be supported, and displayed in the current commandline help, so users are invited to take a look.

Bug reporting/feature requests

This project is entirely oriented to community requests, as the target is to facilitate ZFS adoption.

Both for feature requests and bugs, open a GitHub issue.

For issues, also attach the content of the directory /tmp/zfs-installer. It doesn't contain any information aside what required for performing the installation; it can be trivially inspected, as it's a standard Bash debug output.

Help

For requests that are not strictly bugs (confirmed or suspected), feel free to post on the project discussion board. Differently from bugs/feature requests, replies are not guaranteed, however, even if there is no official reply, somebody else may still help.

The ZFS Discuss forum is also a good place where to post this type of requests.

Credits

The workflow of this program is based on the official ZFS wiki procedure, so, many thanks to the ZFS team.

As my other open source work and technical writing, this project is sponsored by Ticketsolve.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].