All Projects β†’ oddlama β†’ gentoo-install

oddlama / gentoo-install

Licence: MIT License
A gentoo installer with a TUI interface that supports systemd and OpenRC, EFI and BIOS, as well as variable disk layouts using ext4, zfs, btrfs, luks and mdraid.

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to gentoo-install

hmg
πŸ’ My personal Gentoo/Linux configuration backup files
Stars: ✭ 16 (-82.61%)
Mutual labels:  gentoo
GoGetit
Goε­¦δΉ +ι’θ―•ι€šε…³, 覆盖Goη¨‹εΊε‘˜ιœ€θ¦ζŽŒζ‘ηš„ζ‰€ζœ‰εŸΊη‘€ηŸ₯θ―†
Stars: ✭ 44 (-52.17%)
Mutual labels:  system
sccm
Microsoft System Center Configuration Manager
Stars: ✭ 21 (-77.17%)
Mutual labels:  system
efi-install-guide-source
The MediaWiki source pages for "Sakaki's EFI Install Guide" (as hosted on the Gentoo wiki)
Stars: ✭ 19 (-79.35%)
Mutual labels:  gentoo
findlargedir
find all "blackhole" directories with a huge amount of filesystem entries in a flat structure
Stars: ✭ 15 (-83.7%)
Mutual labels:  system
esm-overlay
ESM's portage overlay. It's useful for especially Ruby/Rails application development.
Stars: ✭ 19 (-79.35%)
Mutual labels:  gentoo
watcher
The file system watcher that strives for perfection, with no native dependencies and optional rename detection support.
Stars: ✭ 37 (-59.78%)
Mutual labels:  system
WindowsMonitor
WMI namespaces and classes
Stars: ✭ 15 (-83.7%)
Mutual labels:  system
closeable-map
Application state management made simple: a Clojure map that implements java.io.Closeable.
Stars: ✭ 42 (-54.35%)
Mutual labels:  system
Krill
An efficient concurrent graph processing system
Stars: ✭ 33 (-64.13%)
Mutual labels:  system
portage-utils
[MIRROR] Small and fast Portage helper tools written in C
Stars: ✭ 25 (-72.83%)
Mutual labels:  gentoo
gentoojp.github.io
GitHub Pages for Gentoo JP Website
Stars: ✭ 14 (-84.78%)
Mutual labels:  gentoo
pisi
PISI package manager of Pardus linux written in Python. The original development branch by the main author.
Stars: ✭ 36 (-60.87%)
Mutual labels:  system
system-checks
βš™ Checks and shows Linux system info - Distro name, IP, running processes and etc. Official site - system-checks.org
Stars: ✭ 35 (-61.96%)
Mutual labels:  system
brand.systemd.io
Website with systemd brand assets
Stars: ✭ 12 (-86.96%)
Mutual labels:  system
system-designer-cordova
System Designer for iOS & Android devices
Stars: ✭ 14 (-84.78%)
Mutual labels:  system
go-overlay
This Portage overlay is for Go related ebuilds.
Stars: ✭ 33 (-64.13%)
Mutual labels:  gentoo
HotelManagementSystem
Hotel Management System created with Restify and Angular 9
Stars: ✭ 23 (-75%)
Mutual labels:  system
Deviice
Swift library to easily check the current device and some more info about it.
Stars: ✭ 51 (-44.57%)
Mutual labels:  system
design-system
[WIP] Design system for unified and related projects
Stars: ✭ 12 (-86.96%)
Mutual labels:  system

About gentoo-install

This is an installer for gentoo with a simple configuration TUI inspired by menuconfig. The configurator is only used to generate a gentoo.conf file, which can also be edited by hand, or reused later if desired. An example configuration is provided with the repository.

The installer supports the most common disk layouts, different file systems like ext4, ZFS and btrfs as well as additional layers such as LUKS or mdraid. It also supports both EFI (recommended) and BIOS boot, and can be used with systemd or OpenRC as the init system.

Quick start

First, boot into a live environment of your choice. I recommend using an Arch Linux live iso, as the installer will then be able to automatically download required programs or setup zfs support on the fly. After that, proceed with the following steps:

  1. Either clone this repo or download and extract a copy
  2. Run ./configure and save your desired configuration
  3. Begin installation using ./install

Every option is explained in detail in gentoo.conf.example and in the help menu popups in the configurator. When installing, you will be asked to review the partitioning before anything critical is done.

Overview

The system will use sys-kernel/gentoo-kernel-bin, which should be suitable to boot most systems out of the box. It is strongly recommend to replace this kernel with a custom built one, when the system is functional.

The installer should be able to run without any user supervision after partitioning, but depending on the current state of the gentoo repository you might need to intervene in case a package fails to emerge. The critical commands will ask you what to do in case of a failure.

Here is an outline of the steps that are carried out:

  1. Partition disks (supports gpt, raid, luks)
  2. Download and cryptographically verify the newest stage3 tarball
  3. Extract the stage3 tarball
  4. Sync portage tree
  5. Configure portage (create zz-autounmask files, configure make.conf)
  6. Select the fastest gentoo mirrors if desired
  7. Configure the base system (timezone, keymap, locales, ...)
  8. Install git and other required tools (e.g. zfs if you have used zfs)
  9. Install sys-kernel/gentoo-kernel-bin (until you can compile your own)
  10. Generate an initramfs with dracut
  11. Create efibootmgr entry or install syslinux depending on whether your system uses EFI or BIOS
  12. Generate fstab
  13. Depending on the configuration:
    • (Optional) Install sshd with secure config
    • (Optional) Install dhcpcd (if using OpenRC)
    • (Optional) Install additional packages provided in config
  14. Asks if a root password should be set

Anything else is probably out of scope for this script, but you can obviously do what you want later on when the system is booted. Here are some things that you probably want to consider doing after the base system installation is finished:

  1. Read the news with eselect news read.
  2. Compile a custom kernel and remove gentoo-kernel-bin
  3. Adjust /etc/portage/make.conf
    • Set CFLAGS to -O2 -pipe -march=native for native builds
    • Set CPU_FLAGS_X86 using the cpuid2cpuflags tool
    • Set FEATURES="buildpkg" if you want to build binary packages
  4. Use a safe umask like umask 0077

If you are looking for a way to detect and manage your kernel configuration, have a look at autokernel.

(Optional) sshd

The script can provide a fully configured ssh daemon with reasonably good security settings. It will by default only allow ed25519 keys, restrict key exchange algorithms to a reasonable subset, disable any password based authentication, and only allow root to login.

You can provide keys that will be written to root's .ssh/authorized_keys file. This will allow you to directly continue your setup with your favourite infrastructure management software.

(Optional) Additional packages

You can add any amount of additional packages to be installed on the target system. These will simply be passed to a final emerge call before the script is done, where autounmasking will also be done automatically. It is recommended to keep this to a minimum, because of the quite "interactive" nature of gentoo package management ;)

Troubleshooting and FAQ

After the initial sanity check, the script should be able to finish unattendedly. But given the unpredictability of future gentoo versions, you might still run into issues

The script checks every command for success, so if anything fails during installation, you will be given a proper message of what went wrong. Inside the chroot, most commands will be executed in a checked loop, and allow you to interactively fix problems with a shell, to retry, or to skip the command.

Q: I get errors after partitioning about blkid not being able to find a UUID

A: Use wipefs -a <DEVICE> on your partitions or fully wipe the disk before use. The new partitions probably align with previously existing partitions that had filesystems on them. Some filesystems signatures like those of ZFS can coexist with other signatures and may cause blkid to find ambiguous information.

References

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].