From 1e658c4b99b5260fd5c908e35abf9dd36ffff897 Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Wed, 10 Jun 2020 11:17:10 +0200 Subject: Remove unpublished posts --- _posts/2016-10-01-on-winmail-dat.md | 39 -- _posts/2016-10-03-install-funtoo.md | 808 ------------------------------------ 2 files changed, 847 deletions(-) delete mode 100644 _posts/2016-10-01-on-winmail-dat.md delete mode 100644 _posts/2016-10-03-install-funtoo.md diff --git a/_posts/2016-10-01-on-winmail-dat.md b/_posts/2016-10-01-on-winmail-dat.md deleted file mode 100644 index f8e99b1..0000000 --- a/_posts/2016-10-01-on-winmail-dat.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: post -date: 2016-10-01 10:20:27 +0200 -wip: true -authors: - - ["Patrick Spek", "http://tyil.work"] ---- - -This article is intended for sysadmins who run email systems and those who -maintain the Outlook instances for their workforce. If you do not belong into -either of these categories, the following article is probably not too useful. - -If you are one of the many people that suffers from a sysadmin who has yet to -fix the `winmail.dat` issues on his network, you can kindly redirect them here -and hope that they are kind enough to improve their services. If they do not, -you may want to look for a better sysadmin. - -## What is this `winmail.dat`? -A `winmail.dat` is a file that Outlook will attach if an Outlook user sends an -email containing actual attachments or any kind of markup unless Outlook has -been configured not to do so. It is a binary format that holds all the -information to the markup used in the email and the actual attachment that the -user was trying to send. As is typical with Microsoft, this is incompatible -with other Microsoft products. It will only "fix" itself if the receiver is -also using Outlook. - -## Why should I care? -This means that recipients of any mail sent using such a badly configured -Outlook instance cannot see any markup used by the sender, nor can the -recipient see any attachment. Most people can live without the markup, but not -being able to see the actual attachments is generally a pretty big issue. - -Now, there are shady tools available to try and decode these `winmail.dat` -files, but these will not work correctly in all circumstances. Furthermore, an -end-user should not be required to depend on a shady tool to fix the symptom of -a misconfigured email client from another party. - -## How can I fix this? - diff --git a/_posts/2016-10-03-install-funtoo.md b/_posts/2016-10-03-install-funtoo.md deleted file mode 100644 index 66dd146..0000000 --- a/_posts/2016-10-03-install-funtoo.md +++ /dev/null @@ -1,808 +0,0 @@ ---- -title: Install Funtoo -wip: true -date: 2016-10-03 18:05:59 -tags: Tutorial Installation Funtoo -layout: post -authors: - - ["Patrick Spek", "http://tyil.work"] ---- - -# Install Funtoo -It has come to my attention that many people consider installing Gentoo, and in -effect, Funtoo, a hard task to complete. Some people have also shown interest in -my particular setup. In addition, my favourite English teacher, Anne the Lion, -has tasked us students to write a tutorial to assess our English skills. - -As such, I have written this tutorial to show people my installation steps, and -mentally please my teacher. If you have any suggestions or criticism, please -find me on IRC. The networks I frequent and the nickname I use can be found on -[my homepage][tyil]. - -## Assumptions -This tutorial assumes a few things from you. If you do not meet most of these -assumptions, this guide is probably not for you. You can of course still read -it, however, there might be a lot of jargon you do not understand, making the -tutorial more complex to understand. - -- You have experience with GNU+Linux -- You know your way in the terminal -- You are not afraid of using text-based applications -- You have experience reading through manuals and documentation -- You are not afraid to spend some hours on IRC to help you troubleshoot issues - -## Installing Funtoo -This tutorial will guide you through a not-so-basic installation of the Funtoo -GNU+Linux distribution. It is based on one of my own installations, but -slightly simplified. - -### The live environment -Before you can get started with setting up the system, you will need something to -set it up with. We will be using a live environment for this purpose. My -personal choice for this task is [the Gentoo-based SystemRescueCD][sysrescuecd]. - -You can use any other live environment your prefer, however, this tutorial will -only guide you into preparing the System Rescue CD. - -#### Getting the live USB image -You can download the System Rescue CD at one of the following locations: - -- [Funtoo][Funtoo] -- [Osuosl][osuosl] - -#### Setting up the live USB -After downloading the image, mount it somewhere: - -{% highlight sh %} -mount path/to/sysrescuecd.iso /mnt/cdrom -{% endhighlight %} - -Once it is mounted, you can run the installer bundled with the image by running - -{% highlight sh %} -/mnt/cdrom/usb_inst.sh -{% endhighlight %} - -Select the right device and wait for the installer to finish up. - -#### Booting the USB -To begin using the live environment so you can install something with it, boot -it up. Make sure the USB is in the machine, and reboot it. Enter the BIOS/UEFI -settings and make sure to either make the USB device a higher boot priority, or -select it to be the boot device for one boot. The availability and location of -these options differs per machine, so be sure to check the manual or look around -online for instructions if it is not clear to you. - -### Hardware preparation -The hardware you are installing on needs to be prepared. This could mean -manually configuring your hardware RAID if you use this and configuring other -exotic setups. This tutorial will not go into details for such setups, as there -is a near infinite amount of possible options. Instead, you should stick to -simply configuring your storage device. - -The size of your storage device should be at least 35GB to be safe and have -some space for personal data. The partitioning layout this guide is aiming for -is the following: - -``` -DEVICE FILESYSTEM SIZE MOUNTPOINT -sda - sda1 fat32 2GB /boot - sda2 lvm - funtoo0-root xfs 8GB / - funtoo0-home zfs /home - funtoo0-sources ext4 3GB /usr/src - funtoo0-portage reiserfs 2GB /usr/portage - funtoo0-swap swap - funtoo0-packages xfs 10GB /var/packages - funtoo0-distfiles xfs 10GB /var/distfiles -``` - -If you already an advanced user, you are of course free to diverge from the -guide here. - -#### Partition the drive -The first part is to setup partitions. This can be done by calling `gdisk -/dev/sda`. - -Let us wipe the entire disk and start with a clean slate. You can do this by -typing `o` and pressing enter. When asked wether you are sure, type `y` and -enter again. - -Now you are going to create two partitions, one for `/boot` and one for -[`lvm`][wikipedia-lvm]. Following is a list of what to enter. `` denotes -pressing the enter key. - -- `n` `` -- `` -- `` -- `+500M` `` -- `EF00` `` - -- `n` `` -- `` -- `` -- `` -- `` - -#### Setting up encryption -Any system should be safe. Encryption is just a small part, but in my opinion -very important. We are going to encrypt the entire `lvm` partition using -[`luks`][wikipedia-luks]. The frontend tool to be used for this is -[`cryptsetup`][wikipedia-cryptsetup]: - -{% highlight sh %} -cryptsetup --cipher aes-xts-plain64 --hash sha512 --key-size 256 luksFormat /dev/sda2 -{% endhighlight %} - -`cryptsetup` will ask you for a passphrase. Make sure to use a good one, -preferably at least 20 characters in length. - -Once the partition has been encrypted, open the device so it can be used by -invoking `cryptsetup luksOpen /dev/sda2 dmcrypt_lvm`. - -#### Set up LVM -Once the encrypted partition has been unlocked, you can setup `lvm` on it. To -initialize an lvm volume on this partition, run the following: - -{% highlight sh %} -pvcreate /dev/mapper/dmcrypt_lvm -vgcreate funtoo0 /dev/mapper/dmcrypt_lvm -{% endhighlight %} - -The lvm volume has now been prepared, and you can start adding volumes to it to -be used as partitions. It is recommended to have a swap partition as well. The -size of this partition depends on the amount of RAM you have available. Due to -my availability to big disks, I generally opt for a swap partition the same size -as my total RAM in the machine. To make the tutorial work for this as well, a -subshell is called to figure out the size of the swap partition. - -{% highlight sh %} -lvcreate -L8G -n root funtoo0 -lvcreate -L3G -n sources funtoo0 -lvcreate -L2G -n portage funtoo0 -lvcreate -L10G -n packages funtoo0 -lvcreate -L10G -n distfiles funtoo0 -lvcreate -L$(free -h | grep -i mem: | awk '{print $2}') -n swap funtoo0 -lvcreate -l 100%FREE -n home funtoo0 -{% endhighlight %} - -#### Create filesystems -Now you are ready to create usable filesystems on the partitions: - -{% highlight sh %} -mkfs.vfat -F32 /dev/sda1 -mkfs.xfs /dev/mapper/funtoo0-root -mkfs.xfs /dev/mapper/funtoo0-packages -mkfs.xfs /dev/mapper/funtoo0-distfiles -mkfs.reiserfs /dev/mapper/funtoo0-portage -mkfs.ext4 /dev/mapper/funtoo0-sources -mkswap /dev/mapper/funtoo0-swap -{% endhighlight %} - -If you're thinking at this point "where's my home partition?", it's not -initialized here. [ZFS][wikipedia-zfs] requires custom kernel modules which will -be built later, after the initial kernel has been compiled. - -#### Mount the filesystems -Next up is mounting all filesystems so you can install files to them. First, you -mount the root filesystem: - -{% highlight sh %} -mount /dev/mapper/funtoo0-root /mnt/gentoo -{% endhighlight %} - -Now you can add some directories for the other mountpoints. This can be done in -one well-made `mkdir` invocation: - -{% highlight sh %} -mkdir -p /mnt/gentoo/{boot,home,usr/{portage,src},var/{tmp,distfiles,packages},tmp} -{% endhighlight %} - -Next you can mount all other mountpoints on the new directories: - -{% highlight sh %} -mount /dev/sda1 /mnt/gentoo/boot -mount /dev/mapper/funtoo0-portage /mnt/gentoo/usr/portage -mount /dev/mapper/funtoo0-sources /mnt/gentoo/usr/src -mount /dev/mapper/funtoo0-distfiles /mnt/gentoo/var/distfiles -mount /dev/mapper/funtoo0-packages /mnt/gentoo/var/packages -{% endhighlight %} - -Let's also enable swap and ramdisks for the temporary storage directories: - -{% highlight sh %} -swapon /dev/mapper/funtoo0-swap -mount -t tmpfs none /mnt/gentoo/tmp -mount --rbind /mnt/gentoo/tmp /mnt/gentoo/var/tmp -{% endhighlight %} - -### Initial setup -Now that all mountpoints have been set up, installation of the actual OS can -begin. This is done by downloading a "stage 3" tarball containing a bare minimal -Funtoo installation and extracting it with the right options. - -The stage 3 tarball can be downloaded from [build.funtoo.org][funtoo-build]. It -is easiest to download and extract the tarball in the root filesystem, so let's -do that: - -{% highlight sh %} -cd /mnt/gentoo -wget http://build.funtoo.org/funtoo-current/x86-64bit/generic_64/stage3-latest.tar.xz -tar xpf stage3-latest.tar.xz -{% endhighlight %} - -Once extraction is complete, you can opt to delete the tarball as it is no -longer needed at this point. You can delete it by invoking `rm stage3-latest.tar.gz`. - -### System configuration -You now have a bare Funtoo installation ready on your machine. But before you -can actually use it, you should do some configuration. - -#### Chrooting -Before you get to the configuration part, you should [`chroot`][wikipedia-chroot] -into the system. This allows you to enter your new Funtoo installation before it -can properly boot. If your system ever breaks and you are unable to boot into it -anymore, you can redo the mounting section of this guide and this chrooting -section to get into it and resolve your issues. - -The chrooting requires a couple extra mounts, so the chroot can interface with -the hardware provided by the system above it: - -{% highlight sh %} -mount -t proc none proc -mount --rbind /dev dev -mount --rbind /sys sys -{% endhighlight %} - -Once these mountpoints are set, you will need to copy over `resolv.conf` so the -chroot can resolve DNS names: - -{% highlight sh %} -cp /etc/resolv.conf etc -{% endhighlight %} - -Now that everything is prepared in the chroot, you can enter your Funtoo -installation using the following: - -{% highlight sh %} -chroot . bash -l -{% endhighlight %} - -#### Set up the portage tree -The portage tree is a collection of files which are used by the package manager -to find out which software it can install, and more importantly, how to install -it. - -The default location in Funtoo for your portage tree is in `/usr/portage`. -However, as I use multiple sources for my portage tree, I prefer to set it up -under `/usr/portage/funtoo`. This is not a required step, but advised nonetheless. - -In order to change this, open up `/etc/portage/repos.conf/gentoo` in your -favourite editor. Funtoo comes with [`vi`][wikipedia-vi], -[`nano`][wikipedia-nano] and [`ed`][wikipedia-ed] by default. `ed` is -recommended as the standard editor. After opening the file, change the -`location` key to point to `/usr/portage/funtoo`. - -When you have modified `/etc/portage/repos.conf/gentoo` (or not, if you do not -want to change this default), continue to download your first version of the -portage tree: - -{% highlight sh %} -emerge --sync -{% endhighlight %} - -Everytime you want to update your system, you will have to do an `emerge --sync` -to update the portage tree first. It is managed by [`git`][wikipedia-git], which -can bring some side effects. The most notable one is that the tree will grow -over time with old commit data. If you wish to clean this up, simply -`rm -rf /usr/portage/* && emerge --sync` to regenerate it from scratch - -#### Setting up your system settings -In order to make the system work properly, some setup has to be performed. This -will involve editing some text files, for which you can use your favourite -editor again. - -##### /etc/fstab -We will begin with the most important one, `/etc/fstab`. This file holds -information on your mountpoints. Some of the mountpoints are best configured -with UUIDs, because the device enumeration can sometimes differ. If you have -multiple storage devices in your system, this could as well be a hard -requirement. UUIDs are unique to each storage device, so you will have to figure -out your UUIDs yourself. You can do this by running `lsblk -o +UUID`. Take note -of the UUID of your boot device. - -Once you know the UUID, open up `/etc/fstab` with whatever editor you feel -comfortable with and make it look like the following block of text. Do not -forget to update the UUIDs! - -``` -# boot device -/dev/sda1 /boot vfat noauto,noatime 1 2 - -# lvm volumes -/dev/mapper/funtoo0-root / xfs rw,relatime,data=ordered 0 1 -/dev/mapper/funtoo0-portage /usr/portage reiserfs defaults 0 0 -/dev/mapper/funtoo0-sources /usr/src ext4 noatime 0 1 -/dev/mapper/funtoo0-packages /var/packages xfs defaults 0 1 -/dev/mapper/funtoo0-distfiles /var/distfiles xfs defaults 0 1 - -# ramdisks -tmpfs /tmp tmpfs defaults 0 0 - -# swap -/dev/mapper/funtoo0-swap none swap defaults 0 0 - -# binds -/tmp /var/tmp none rbind 0 0 -``` - -##### /etc/localtime -The localtime comes next. This is to make sure your time is set correctly. An -incorrect time can cause issues such as secure connections failing. To set your -localtime, all you need to do is create a symlink. The file you need to symlink -to is stored in `/usr/share/zoneinfo`. The files are sorted by continent. As -someone who lives in the Netherlands, I'd use -`/usr/share/zoneinfo/Europe/Amsterdam`: - -{% highlight sh %} -ln -fs /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime -{% endhighlight %} - -It is important to also correctly set your hardware clock, in case it is off. -Check if your time and date are correct by invoking `date`. If these settings -are correct, you can skip towards the next heading. Otherwise, keep on reading -this bit. - -To set the correct time, you can use the `date` utility again. When invoked with -an argument in the form of `MMDDhhmmYYYY`, it will set the date and time instead -of check it. The following command would set the date to the first of October -2016, and the time to 17:29: - -{% highlight sh %} -date 011017292016 -{% endhighlight %} - -After you correctly set the date and time to whatever it currently is, sync it -to the hardware clock so it is correct across reboots: - -{% highlight sh %} -hwclock --systohc -{% endhighlight %} - -##### /etc/portage/make.conf -Another important part to configure is the `make.conf` file. This file contains -settings for portage and some options for compilers. This file can also be made -a directory. This way, you can split off your configs into multiple files for -easier maintainance. The files will be loaded alphabetically. The way you set it -up is completely up to you, though I would recommend removing the default -`/etc/portage/make.conf` and making it a directory instead. - -Once you have decided how to setup your make.conf, it is time to add some data -in the file(s). Following is a list of useful variables to set up, with a block -containing my own settings for it. You can copy these for yourself, or dig -aroudn some manpages to find out what you exactly want yourself. - -###### USE -`USE` holds global USE flags. These are used to configure your packages. You can -turn features on and off using these, and the ebuilds will configure the -packages to enable or disable these features. - -{% highlight sh %} -USE=" - ${USE} - alsa - gtk - gtkstyle - infinality - vim-syntax - zsh-completion - -pulseaudio - -systemd - -gnome - -kde -" -{% endhighlight %} - -###### FEATURES -The `FEATURES` variable allows enabling of various portage features. Mine are -setup to drop privileges so root is used as little as possible and to do as much -parallel as possible to speed up the process. Additionally, I use the `buildpkg` -feature to build binary packages for use on other systems. This can save you a -great deal of time if you have multiple systems running Funtoo. - -{% highlight sh %} -FEATURES=" - ${FEATURES} - buildpkg - network-sandbox - parallel-fetch - parallel-install - sandbox - userfetch - userpriv - usersandbox - usersync -" -{% endhighlight %} - -###### EMERGE_DEFAULT_OPTS -`EMERGE_DEFAULT_OPTS` can be used to add some flags to every emerge you invoke. -This way you can force emerge to always ask for confirmation. - -{% highlight sh %} -EMERGE_DEFAULT_OPTS=" - ${EMERGE_DEFAULT_OPTS} - --alert - --ask - --binpkg-changed-deps=y - --binpkg-respect-use=y - --keep-going - --tree - --usepkg - --verbose -" -{% endhighlight %} - -###### C/XXFLAGS -The `CFLAGS` and `CXXFLAGS` variables hold compiler-specific options. It is -**very** important to not use newlines in these two, as [they will break -`cmake`][bug-cmake]. Other than that, it is just a regular shell variable like -the others. - -{% highlight sh %} -CFLAGS="-O2 -pipe" -CXXFLAGS="-O2 -pipe" -{% endhighlight %} - -###### ACCEPT_LICENSE -This variable is not as important as the others. You can even opt to leave it -out completely. If, however, you wish to limit portage to only install free -software (free as in freedom, not gratis), you can set it to the same value as -me. Do note that if you use this, you will need to setup the -`/etc/portage/package.license` as well. - -{% highlight sh %} -ACCEPT_LICENSE=" - -* - @FREE -" -{% endhighlight %} - -###### MAKEOPTS -`MAKEOPTS` are the arguments passed to `make`. This can be used to instruct -`make` to use multiple threads when compiling software. The amount of threads -can be set with the `-j` flag. The general rule of thumb for this is to use -`$(($(nproc) + 1))`. - -{% highlight sh %} -MAKEOPTS=" - -j9 -" -{% endhighlight %} - -###### PKG/DISTDIR -The `PKGDIR` and `DISTDIR` variables set the location to store binary packages -after building, and the location to store distfiles. In order to use the -`/var/distfiles` and `/var/packages` partitions, these must be set. - -{% highlight sh %} -DISTDIR=/var/distfiles -PKGDIR=/var/packages -{% endhighlight %} - -##### /etc/portage/package.mask -Like the `make.conf` file, `package.mask` can be made a directory containing -seperate files. - -The `package.mask` file(s) allow you to "mask" packages, instructing portage to -ignore these. It can also let you mask certain versions of packages. This way -you can skip a broken version or stick to a certain version for whatever reason. -Since this tutorial uses ZFS, there is such a reason to do exactly that. - -ZFS requires a Linux at version 4.4 or lower. The latest kernel is much higher -than that, so it is necessary to mask newer kernel versions. This is a single -line of configuration, and as such can be done without a fancy editor. Simply -invoke the following magic: - -{% highlight sh %} -mkdir -p /etc/portage/package.mask -echo ">sys-kernel/gentoo-sources-4.4.6" > /etc/portage/package.mask/20-zfs.mask -{% endhighlight %} - -##### /etc/portage/package.license -This file can be setup as a directory too, just like `make.conf` and -`package.mask`. Using this file or directory you can add per-package license -exceptions. This is therefore only needed if you setup a strict license limit. -The kernel comes with some sources under the `freedist` license, which is not -part of `@FREE`. As such, if you want to install kernel sources you will have to -make an exception for this license on this package. - -{% highlight sh %} -mkdir -p /etc/portage/package.license -echo "sys-kernel/gentoo-sources freedist" > /etc/portage/package.license/20-freedist.license -{% endhighlight %} - -##### /etc/conf.d/hostname -As one of the last files to setup, the hostname should be set in -`/etc/conf.d/hostname`. The `hostname` variable in this file should be set to -the hostname of the machine. You can pick any name you like, but should be -unique across your network. - -#### Preparing your first kernel -Every system needs a kernel, a piece of software to interface with the hardware. -Funtoo, like every GNU+Linux distribution, uses the Linux kernel for this task. - -For this task, you will first need to decide on a source set to use. All source -sets share the same base, but they have different patches applied. It is -recommended to use `sys-kernel/gentoo-sources`. If this isn't bleeding edge -enough, you can use `sys-kernel/git-sources` instead. If you just want the -latest official kernel without the gentoo patchset, pick -`sys-kernel/vanilla-sources`. No matter which source set you use, the -compilation and installation process remains the same. - -Install whichever source set you want to use, this guide will use -`sys-kernel/gentoo-sources`. In order to save some yes-pressing later on, the -`emerge` command here will install some additional packages which are needed for -the system to function properly. - -{% highlight sh %} -emerge boot-update cryptsetup lvm2 gentoo-sources -genkernel --menuconfig --lvm --luks all -{% endhighlight %} - -The `genkernel` command will run the kernel menuconfig utility. If you have -exotic hardware that needs special support, this is the place to enable it. The -defaults are sane for most systems. If you have nothing to configure here, just -exit the menuconfig and let `genkernel` build a custom kernel and initramfs for -you. As the guide uses LVM and LUKS, you will need to have support for these -things in your kernel. You will need to enable the following options at the -very least: - -``` -General setup ---> - [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support -``` - -``` -Device Drivers ---> - Generic Driver Options ---> - [*] Maintain a devtmpfs filesystem to mount at /dev -``` - -``` -Device Drivers ---> - [*] Multiple devices driver support ---> - <*>Device Mapper Support - <*> Crypt target support -``` - -``` -Cryptographic API ---> - <*> XTS support - -*-AES cipher algorithms -``` - -#### Setup ZFS -The kernel is now installed at `/boot`, and all the required parts to build -custom kernel modules are available. This means it is now possible to build the -ZFS modules. - -First install the kernel module here. Since the live kernel does not have the -zfs modules from the chroot, you must create the pool and the volumes after the -first reboot. - -{% highlight sh %} -emerge zfs -{% endhighlight %} - -Once it has been compiled, you can add the ZFS services to start up by default. -This will load the kernel module for you and all additional services that make -ZFS perform its job well. - -{% highlight sh %} -rc-update add zfs-import boot -rc-update add zfs-mount boot -rc-update add zfs-share default -rc-update add zfs-zed default -{% endhighlight %} - -#### Installing a bootloader -Before building your kernel, `boot-update` was installed. This pulls in -[`grub`][wikipedia-grub], the recommended bootloader for Funtoo. It doesn't -require a lot of configuration thanks to the `boot-update` script, which will -configure `grub` for you. - -Before running the script, there's one place to update as this setup uses `luks` -and `lvm`. - -Open up `/etc/boot.conf` in your favourite editor and let the file display -something like this: - -``` -boot { - generate grub - default "Funtoo GNU+Linux" - timeout 3 -} - -"Funtoo GNU+Linux" { - kernel kernel[-v] - initrd initramfs[-v] - params += crypt_root=/dev/sda2 real_root=/dev/mapper/funtoo0-root rootfstype=xfs dolvm -} -``` - -Now that `boot-update` is configured, install `grub` as an UEFI bootloader and -generate the configs for it using `boot-update`. You should make sure the -`grub` directory exists in `/boot` as well. - -{% highlight sh %} -mkdir -p /boot/grub -grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="Funtoo GNU+Linux" --recheck /dev/sda -boot-update -{% endhighlight %} - -#### Set your system profile -Your system is now ready to boot and use. However, some things are still not -configured. These can in some cases be configured after rebooting, but it is -recommended to fix it all up now. The first part is setting your system profile. - -For a full list of settings, check `epro list`. Maybe you want to use this -system as something other than a workstation, or want to enable the `gnome` -mix-in. - -To get the same profile settings as I use for my work environments, run the -following: - -{% highlight sh %} -epro flavor workstation -epro mix-ins +no-systemd -{% endhighlight %} - -#### Running the first full system update -The stage 3 tarball may have been the latest, but it might still have some -slightly outdated packages. In addition, now that your system profile is set up, -some applications may be configured to have different feature sets enabled. To -make sure everything is in the best possible state, it is recommended to run a -full system update now. Since some of our options are already set as -`EMERGE_DEFAULT_OPTS`, this is as simple as - -{% highlight sh %} -emerge -uDN @world -{% endhighlight %} - -#### Installing supporting software -This is software you will more than likely need on any standard system. If -you're an advanced user you can decide to skip this and make your own choices, -otherwise it is recommended to install this software as well. - -{% highlight sh %} -emerge connman sudo vim linux-firmware -{% endhighlight %} - -#### Configuring supporting software -Some of the supporting software has to be turned on explicitly or have a -configuration file tweaked. If you opted to not use a given recommended package, -you can skip the section with the same name. - -##### connman -[`connman`][wikipedia-connman] is a simple **conn**ection **man**ager. It's -lightweight, fast and does its job pretty well. To enable this service at boot, -run - -{% highlight sh %} -rc-update add connman default -{% endhighlight %} - -If you want to setup wireless connection authentication credentials, read up on -`man connman-service.conf`. - -##### sudo -The [`sudo`][wikipedia-sudo] utility allows certain users, based on their -username or groups they belong to, access to privileged commands. It can also be -used to run a command as a different user. The most basic setup allows people -from the `wheel` group to execute commands normally reserved for `root`. - -Because sudo is a critical utility, it comes with its own editor that basically -just wraps your preferred editor in a script that will complain if the -configuration is wrong. To use this tool, invoke - -{% highlight sh %} -visudo -{% endhighlight %} - -Scroll to the line which contains `# %wheel ALL=(ALL) ALL`, and remove the `# `. - -#### Set passwords -We probably want to be able to login to the system as well. By default, users -without passwords are disabled, so you'll need to set a password for the users -you want to be able to use: - -{% highlight sh %} -passwd root -{% endhighlight %} - -If you used a different username than `tyil`, be sure to change it here as well. - -### First boot -Installation is now finished, so it is time to boot into your new Funtoo system. -First you should cleanly unmount all partitions and then issue a reboot: - -{% highlight sh %} -exit -cd -umount -lR /mnt/gentoo -reboot -{% endhighlight %} - -If you set your UEFI to favour the USB system over the standard drive in the -booting order, be sure to either change this back, or simply remove the USB -device. - -### First boot configurations -After your system has succesfully booted, login as root using the password you -set using `passwd` before rebooting. - -#### ZFS -Now you can finally setup the ZFS partition. Issue the following commands to -create a pool and a subvolume for `/home`: - -{% highlight sh %} -zpool create funtooz /dev/sda -zfs create -o mountpoint=/home funtooz/home -{% endhighlight %} - -#### Create a user -Create a user for yourself on the system, as you should not perform regular -usage as root. You can use any other value for `tyil` if you so desire: - -{% highlight sh %} -useradd -m -g users -G wheel tyil -passwd tyil -{% endhighlight %} - -The `-G wheel` part is optional, but recommended if you wish to use this account -for administrative tasks. This option adds the user to the `wheel` group, which -will allow the user to execute root commands using `sudo`. - -#### Login -Now you have a non-privileged user to login to. Log out of the root user by -running `exit`. Next, log in on your normal user account. - -## What's next -Now you have a working Funtoo installation. Next steps would be installing all -the software you wish to use and configuring it to your liking. I would greatly -advise looking at other people's configurations and publishing your -configurations as well. These configuration collections are often called -*dotfiles*. Mine can be found [on c.darenet.org][dotfiles]. - -If this is your first time using Funtoo as your distro of choice, I would -recommend looking through [Funtoo (GNU+)Linux First Steps][funtoo-first] on the -official Funtoo wiki. - -If you need assistance on maintainance, you can always drop by in `#sqt` on -[Gratisnode][freenode]. - -[bug-cmake]: https://bugs.gentoo.org/show_bug.cgi?id=500034#c6 -[dotfiles]: https://c.darenet.org/tyil/dotfiles-gohan -[funtoo-first]: http://www.funtoo.org/Funtoo_Linux_First_Steps -[freenode]: https://freenode.net -[funtoo-build]: http://build.funtoo.org/ -[funtoo]: http://build.funtoo.org/distfiles/sysresccd/systemrescuecd-x86-4.7.1.iso -[osuosl]: http://ftp.osuosl.org/pub/funtoo/distfiles/sysresccd/systemrescuecd-x86-4.7.1.iso -[sysrescuecd]: http://www.system-rescue-cd.org/SystemRescueCd_Homepage -[tyil]: http://tyil.work -[wikipedia-chroot]: https://en.wikipedia.org/wiki/Chroot -[wikipedia-connman]: https://en.wikipedia.org/wiki/ConnMan -[wikipedia-cryptsetup]: https://en.wikipedia.org/wiki/Dm-crypt#cryptsetup -[wikipedia-ed]: https://en.wikipedia.org/wiki/Ed_(text_editor) -[wikipedia-git]: https://en.wikipedia.org/wiki/Git -[wikipedia-grub]: https://en.wikipedia.org/wiki/GNU_GRUB -[wikipedia-luks]: https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup -[wikipedia-lvm]: https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) -[wikipedia-nano]: https://en.wikipedia.org/wiki/GNU_nano -[wikipedia-sudo]: https://en.wikipedia.org/wiki/Sudo -[wikipedia-vi]: https://en.wikipedia.org/wiki/Vi -[wikipedia-zfs]: https://en.wikipedia.org/wiki/ZFS - -- cgit v1.1