Updated README
This commit is contained in:
parent
edfd4e621d
commit
54ecbcf90a
92
README.md
92
README.md
|
@ -1,12 +1,17 @@
|
|||
## About gentoo-install
|
||||
|
||||
This script performs a reasonably minimal installation of gentoo. An EFI system is highly
|
||||
recommended, but legacy BIOS boot is still supported.
|
||||
It does everything from the ground up, including creating partitions, downloading
|
||||
and extracting the stage3 archive, initial system configuration and optionally installing
|
||||
some additional software. The script only supports OpenRC and not systemd.
|
||||
recommended, but legacy BIOS boot is also supported. The script supports both systemd (default)
|
||||
and OpenRC as the init system. The main performed steps are:
|
||||
|
||||
The system will temporarily use `sys-kernel/vanilla-kernel-bin`, which should be suitable
|
||||
#. Partitioning
|
||||
#. Download & verify stage3 tarball
|
||||
#. Extract stage3
|
||||
#. Initialize portage
|
||||
#. Install kernel
|
||||
#. Install additional software
|
||||
|
||||
The system will use `sys-kernel/gentoo-kernel-bin`, which should be suitable
|
||||
to boot most systems out of the box. I strongly recommend you to replace this kernel
|
||||
with a custom built one, when the system is functional. If you are looking for a way
|
||||
to detect and manage your kernel configuration, have a look at [autokernel](https://github.com/oddlama/autokernel).
|
||||
|
@ -14,48 +19,40 @@ to detect and manage your kernel configuration, have a look at [autokernel](http
|
|||
## Quick start
|
||||
|
||||
Edit `scripts/config.sh` and execute `./install` in any live system.
|
||||
This will apply the selected partitioning scheme (with confirmation), and properly
|
||||
You can review the partitioning that will be applied before anything critical is done.
|
||||
Afterwards, this will apply the partitioning scheme and properly
|
||||
install the selected stage3 gentoo system. The new system will by default use
|
||||
`vanilla-kernel-bin` as the kernel, and an initramfs generated with dracut to provide
|
||||
`gentoo-kernel-bin` as the kernel, and an initramfs generated by dracut to provide
|
||||
a bootable environment. The script can optionally install `sshd` and `ansible` to
|
||||
allow for quick setup of the new system. So when the script finishes, you can
|
||||
directly begin to deploy your specific setup.
|
||||
allow for a convenient setup of the new system afterwards.
|
||||
|
||||
## Overview
|
||||
|
||||
Here is a quick overview of what this script does:
|
||||
Here is a more complete overview of what this script does:
|
||||
|
||||
* Does everything minus something
|
||||
* Partition disks (supports gpt, raid, luks)
|
||||
* Download and cryptographically verify the newest stage3 tarball
|
||||
* Extract the stage3 tarball
|
||||
* Sync portage tree
|
||||
* Configure the base system
|
||||
- Set hostname
|
||||
- Set timezone
|
||||
- Set keymap
|
||||
- Generate and select locale
|
||||
- Prepare `zz-autounmask` files for portage autounmasking
|
||||
* Select best gentoo portage mirrors
|
||||
* Install git (so you can add your portage overlays later)
|
||||
* Install `sys-kernel/vanilla-kernel-bin` (temporarily, until you replace it)
|
||||
- EFI: Copy kernel to efi partition
|
||||
- EFI: Create boot entry using efibootmgr (or install syslinux for BIOS boot)
|
||||
- BIOS: Install syslinux
|
||||
* Generate fstab
|
||||
* Ask for a root password
|
||||
#. Partition disks (supports gpt, raid, luks)
|
||||
#. Download and cryptographically verify the newest stage3 tarball
|
||||
#. Extract the stage3 tarball
|
||||
#. Sync portage tree
|
||||
#. Configure portage (create zz-autounmask files, configure MAKEOPTS, EMERGE_DEFAULT_OPTS)
|
||||
#. Select the fastest gentoo mirrors
|
||||
#. Configure the base system
|
||||
#. Install git (so you can add your portage overlays later)
|
||||
#. Install `sys-kernel/gentoo-kernel-bin` (until you replace it)
|
||||
#. Create efibootmgr entry or install syslinux depending on whether your system uses EFI
|
||||
#. Generate a basic fstab
|
||||
#. Ask for a root password
|
||||
|
||||
Also, optionally the following will be done:
|
||||
|
||||
* Install sshd with secure config
|
||||
* Install dhcpcd
|
||||
* Install dhcpcd (only for OpenRC)
|
||||
* Install ansible, create ansible user and add authorized ssh key
|
||||
* Install additional packages provided in config
|
||||
|
||||
Anything else is probably out of scope for this script,
|
||||
but you can obviously do anything later on when the system is booted.
|
||||
I highly recommend building a custom kernel and maybe encrypting your
|
||||
root filesystem. Have a look at the [Recommendations](#Recommendations) section.
|
||||
I highly recommend building a custom kernel. Have a look at the [Recommendations](#Recommendations) section.
|
||||
|
||||
## Install
|
||||
|
||||
|
@ -66,11 +63,15 @@ Installing gentoo with this script is simple.
|
|||
Any [Arch Linux](https://www.archlinux.org/download/) live iso works fine.
|
||||
2. Clone this repository
|
||||
3. Edit `scripts/config.sh`, and particularily pay attention to
|
||||
the device which will be partitioned. The script will ask before partitioning,
|
||||
but better be safe than sorry.
|
||||
the device which will be partitioned. The script will ask for confirmation
|
||||
before partitioning, but better be safe there.
|
||||
4. Execute `./install`. The script will tell you if your live
|
||||
system is missing any required software.
|
||||
|
||||
The script 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.
|
||||
|
||||
### Config
|
||||
|
||||
The config file `scripts/config.sh` allows you to adjust some parameters of the installation.
|
||||
|
@ -80,20 +81,20 @@ to install. By default you will get the hardened nomultilib profile without syst
|
|||
### (Optional) sshd
|
||||
|
||||
The script can provide a fully configured ssh daemon with reasonably good security settings.
|
||||
It will by default run on port `2222`, only allow ed25519 keys, restrict the key exchange
|
||||
It will by default only allow ed25519 keys, restrict the key exchange
|
||||
algorithms, disable any password based authentication, and only allow specifically mentioned
|
||||
users to use ssh service (none by default).
|
||||
|
||||
To add a user to the list of allowed users, append `AllowUsers myuser` to `/etc/ssh/sshd_config`.
|
||||
I recommend to create a separate group for all ssh users (like `sshusers`) and
|
||||
to use `AllowGroups sshusers`. You should adjust this to your preferences when
|
||||
the system is installed.
|
||||
The script will create a group named `sshusers`, and only users in that group will be
|
||||
allowed to log in via ssh. If you have added a user for yourself, you might want
|
||||
to add the user to that group. Be aware that root login is always denied.
|
||||
|
||||
### (Optional) Ansible
|
||||
|
||||
This script can install ansible, create a system user for ansible and add an ssh key of
|
||||
you choice to the `.authorized_keys` file. This allows you to directly use ansible when
|
||||
the new system is up to configure the rest of the system.
|
||||
the new system is up to configure the rest of the system. The ansible user will be added to
|
||||
the sshusers group.
|
||||
|
||||
### (Optional) Additional packages
|
||||
|
||||
|
@ -114,21 +115,12 @@ There are some things that you probably want to do after installing the base sys
|
|||
or should consider:
|
||||
|
||||
* Read the news with `eselect news read`.
|
||||
* Use a custom kernel (config and hardening, see [kernconf](https://github.com/oddlama/kernconf)), and remove `vanilla-kernel-bin`
|
||||
* Use a custom kernel (config and hardening, see [autokernel](https://github.com/oddlama/autokernel)), and remove `gentoo-kernel-bin`
|
||||
* Adjust `/etc/portage/make.conf`
|
||||
- Set `CFLAGS` to `-O2 -pipe -march=native` for native builds
|
||||
- Set `CPU_FLAGS_X86` using the `cpuid2cpuflags` tool
|
||||
- Set `MAKEOPTS` to `-jN` with N being the amount of threads used for building
|
||||
- Set `EMERGE_DEFAULT_OPTS` to `-jN` if you want parallel emerging
|
||||
- Set `FEATURES="buildpkg"` if you want to build binary packages
|
||||
* Use a safe umask like `umask 0077`
|
||||
* Edit `/etc/ssh/sshd_config`, change the port if you want and create a `sshusers` group.
|
||||
* Encrypt your system using LUKS
|
||||
- Remount the root fs read-only
|
||||
- Use `rsync -axHAWXS --numeric-ids --info=progress2 / /path/to/backup` to safely backup the whole
|
||||
system including all extended attributes.
|
||||
- Encrypt partition with LUKS
|
||||
- Use rsync to restore the saved system root.
|
||||
|
||||
## References
|
||||
|
||||
|
|
Loading…
Reference in New Issue