diff options
Diffstat (limited to 'install.txt')
-rw-r--r-- | install.txt | 481 |
1 files changed, 481 insertions, 0 deletions
diff --git a/install.txt b/install.txt new file mode 100644 index 0000000..f7a6881 --- /dev/null +++ b/install.txt @@ -0,0 +1,481 @@ + ________________________________ + + CARBS LINUX INSTALLATION GUIDE + + Cem Keylan + ________________________________ + + +Table of Contents +_________________ + +1. Preparing Environment +.. 1. Download +.. 2. Signature verification +.. 3. Extracting the tarball +.. 4. Obtain the chroot helper +2. Chroot +.. 1. Setting up repositories +..... 1. Obtaining from git +..... 2. Obtaining from rsync +..... 3. Making the package manager use the repositories +.. 2. Updating packages +.. 3. Installing packages +.. 4. Essential Software +.. 5. Obtaining the documentation +3. System Configuration +.. 1. Configuring hostname +.. 2. Hosts file +4. Kernel +.. 1. Obtaining the kernel sources +.. 2. Kernel dependencies +.. 3. Building the kernel +5. Making your system bootable +.. 1. Bootloader +..... 1. GRUB BIOS installation +..... 2. GRUB UEFI installation +.. 2. Init scripts +.. 3. Fstab +6. Post-installation +.. 1. KISS repositories + + +These are the step-by-step instructions for installing Carbs Linux. It +can be acquired as plain-text to be viewed offline with a pager from +<https://carbslinux.org/docs/install.txt>. + + +1 Preparing Environment +======================= + + To install Carbs Linux, you will need a Live Linux ISO. For that + purpose, you can obtain a Gentoo or Void Linux live image. You can + follow their instructions to boot and setup your network. + + You will need the following programs in order to install Carbs Linux: + + - tar + - wget + - xz + - some form of base utilities (coreutils, sbase, busybox, etc.) + + Rest of these instructions will assume that you have set all of these + up, and will continue on that point. + + +1.1 Download +~~~~~~~~~~~~ + + First, we need to download the rootfs tarball. You can do the + following in order to obtain the rootfs. If you are using an i686 + machine, replace the `x86_64' with `i686'. We are setting this in a + URL variable so that we don't have to write it every time. + + ,---- + | wget $URL/carbs-rootfs.tar.xz.sha256 + | sha256sum -c carbs-rootfs.tar.xz.sha256 + `---- + + +1.2 Signature verification +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + It is highly recommended to verify the signature of the tarball. You + will need GPG for this. + + ,---- + | wget $URL/carbs-rootfs.tar.xz.sig + | gpg --recv-keys FF484BDFEFCEF8FF + | gpg --verify carbs-rootfs.tar.xz.sig + `---- + + +1.3 Extracting the tarball +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + You will need to extract the tarball to your desired location. For + partitioning, you can follow [this guide]. This will assume that you + will be mounting your root partition to `/mnt'. + + ,---- + | mount /dev/sdx1 /mnt + | tar xf carbs-rootfs.tar.xz -C /mnt + `---- + + +[this guide] <https://wiki.archlinux.org/index.php/Partitioning> + + +1.4 Obtain the chroot helper +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + You can obtain the `cpt-chroot' script in order to do a simple chroot + into your new root filesystem. + + ,---- + | wget https://dl.carbslinux.org/distfiles/cpt-chroot + | chmod a+x cpt-chroot + `---- + + +2 Chroot +======== + + Chroot into Carbs Linux! + + ,---- + | ./cpt-chroot /mnt + `---- + + +2.1 Setting up repositories +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Newest tarballs do not come with repositories, so you will need to + manually obtain them, and set your `CPT_PATH' environment + variable. Carbs Linux repositories can either be obtained by `git' or + `rsync'. While rsync repositories are overall faster and smaller, git + offers the whole history of the repository and a means to manipulate + your repository as you like it. If you want to obtain the git + repository, you will need to install `git' itself. + + The following guide will assume that you put the repositories into + `~/repos/' directory, but you can put the repositories into any + directory you want. So go ahead and create that directory: + + ,---- + | mkdir -p $HOME/repos + `---- + + +2.1.1 Obtaining from git +------------------------ + + Carbs Linux git repositories can be found both from the main server + and GitHub (mirror). Here are both their repository links. You can + clone any of them. + + - git://git.carbslinux.org/repository + - <https://github.com/carbslinux/repository> + + ,---- + | git clone git://git.carbslinux.org/repository $HOME/repos/carbs + `---- + + +2.1.2 Obtaining from rsync +-------------------------- + + Carbs Linux rsync repositories live in rsync://carbslinux.org/repo. In + order to obtain it, run the following: + + ,---- + | rsync -avc rsync://carbslinux.org/repo $HOME/repos/carbs + `---- + + +2.1.3 Making the package manager use the repositories +----------------------------------------------------- + + In your shell's configuration file, or in your `~/.profile' file, add + the following lines: + + ,---- + | CPT_PATH=$HOME/repos/carbs/core + | CPT_PATH=$CPT_PATH:$HOME/repos/carbs/extra + | CPT_PATH=$CPT_PATH:$HOME/repos/carbs/xorg + | CPT_PATH=$CPT_PATH:$HOME/repos/carbs/community + | export CPT_PATH + `---- + + +2.2 Updating packages +~~~~~~~~~~~~~~~~~~~~~ + + It is good practice to make sure your system is up to date, especially + before building new packages. If there is an update for the package + manager you will need to update twice. + + ,---- + | cpt-update && cpt-update + `---- + + +2.3 Installing packages +~~~~~~~~~~~~~~~~~~~~~~~ + + Since you are operating on a really small base, you might need to + build and install new programs to extend the functionality of your + system. In order to build and install packages new packages in Carbs, + you need to execute the following. "Package" is not actually a package + and is given as an example. + + ,---- + | cpt-build package + | cpt-install package + `---- + + +2.4 Essential Software +~~~~~~~~~~~~~~~~~~~~~~ + + Here is a list of software that you might want to have on your system. + + *BOOTLOADERS* + + - efibootmgr + - grub + + *FILESYSTEMS* + + - e2fsprogs + - dosfstools + - ntfs-3g + + *NETWORKING* + + - dhcpcd + - wpa_supplicant + + *TEXT EDITORS* + + - nano + - vim + - neatvi + - emacs + - emacs-nox (terminal-only version of emacs) + + *USER SHELLS* + + - bash + - zsh + - oksh + - rc + + *POSIX BASE UTILITIES* + + - busybox + - sbase + - coreutils + + *DOCUMENTATION* + + - carbs-docs + - man-pages + - man-pages-posix + + +2.5 Obtaining the documentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + All the documentation for Carbs Linux can be found on a single info + manual to be viewed offline. You can obtain texinfo or the info + (standalone) package in order to view the documentation. + + ,---- + | # Install the documentation. + | cpt b carbs-docs && cpt i carbs-docs + | + | # Install either texinfo or the info package. We will be installing standalone info + | # as it doesn't need perl. + | cpt b info && cpt i info + | + | # You can then run info and navigate through the documentation. + | info carbslinux + `---- + + +3 System Configuration +====================== + + After you have finished installing some extra packages, you can + configure your system to your liking. + + +3.1 Configuring hostname +~~~~~~~~~~~~~~~~~~~~~~~~ + + You might want to add a hostname, especially in a networked + environment. Your hostname will default to 'carbslinux' unless you set + this. + + ,---- + | echo your-hostname > /etc/hostname + `---- + + +3.2 Hosts file +~~~~~~~~~~~~~~ + + You can edit your /etc/hosts file, which is the static lookup table + for host names. By default, there are two entries for localhost which + are OKAY. You can replace the 'localhost' part of these entries to + your hostname. + + ,---- + | 127.0.0.1 localhost.localdomain localhost + | ::1 localhost.localdomain localhost ip6-localhost + `---- + + +4 Kernel +======== + + Kernel isn't managed under the main repositories, even though you + could package one for your personal use. Here is an [example kernel + package], which you will need to reconfigure for your specific setup + if you want to make use of it. + + +[example kernel package] +<https://github.com/cemkeylan/kiss-repository/tree/master/personal/linux> + +4.1 Obtaining the kernel sources +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + You can visit the <https://kernel.org> website to choose a kernel that + you want to install. Though only the latest stable and longterm (LTS) + versions are supported. + + ,---- + | # Download the kernel and extract it + | wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz + | tar xf linux-5.9.1.tar.xz + | + | # Change directory into the kernel sources + | cd linux-5.9.1 + `---- + + +4.2 Kernel dependencies +~~~~~~~~~~~~~~~~~~~~~~~ + + In order to compile the kernel you will need to install some + dependencies. You will need `libelf' to compile the kernel. If you + want to configure using the menu interface you will also need + `ncurses'. + + ,---- + | # The package manager asks to install if you are building more than one package, + | # so no need to run 'cpt i ...' + | cpt b libelf ncurses + `---- + + In the vanilla kernel sources, you need perl to compile the kernel, + but it can be easily patched out. You will need to apply the following + patch. Patch was written by [E5ten]. You will need to obtain and apply + the patch in the kernel source directory. + + ,---- + | wget https://dl.carbslinux.org/distfiles/kernel-no-perl.patch + | patch -p1 < kernel-no-perl.patch + `---- + + +[E5ten] <https://github.com/E5ten> + + +4.3 Building the kernel +~~~~~~~~~~~~~~~~~~~~~~~ + + Next step is configuring and building the kernel. You can check + Gentoo's [kernel configuration guide] to learn more about the + matter. Overall, Gentoo Wiki is a good place to learn about + configuration according to your hardware. The following will assume a + monolithic kernel. + + ,---- + | make menuconfig + | make + | install -Dm755 $(make -s image_name) /boot/vmlinuz-linux + `---- + + +[kernel configuration guide] +<https://wiki.gentoo.org/wiki/Kernel/Configuration> + + +5 Making your system bootable +============================= + + In order to be able to boot your fresh system, wou will need an + init-daemon, init-scripts and a bootloader. The init daemon is already + provided by busybox, but you can optionally change it. + + +5.1 Bootloader +~~~~~~~~~~~~~~ + + In the main repository, there is efibootmgr and grub to serve as + bootloaders. efibootmgr can be used as a standalone bootloader, or + can be used to install grub in a UEFI environment. efibootmgr is + needed unless you are using a device without UEFI support (or you + really want to use BIOS for a reason). + + +5.1.1 GRUB BIOS installation +---------------------------- + + ,---- + | cpt b grub && cpt i grub + | grub-install --target=i386-pc /dev/sdX + | grub-mkconfig -o /boot/grub/grub.cfg + `---- + + +5.1.2 GRUB UEFI installation +---------------------------- + + ,---- + | cpt b efibootmgr && cpt i efibootmgr + | cpt b grub && cpt i grub + | + | grub-install --target=x86_64-efi \ + | --efi-directory=esp \ + | --bootloader-id=CarbsLinux + | + | grub-mkconfig -o /boot/grub/grub.cfg + `---- + + +5.2 Init scripts +~~~~~~~~~~~~~~~~ + + Only thing left to do is installing the init-scripts, and now you are + almost ready to boot your system! + + ,---- + | cpt b carbs-init && cpt i carbs-init + `---- + + +5.3 Fstab +~~~~~~~~~ + + You can now manually edit your fstab entry, or you can use the + genfstab tool. If you want to use the tool, exit the chroot and run + the following: + + ,---- + | wget https://github.com/cemkeylan/genfstab/raw/master/genfstab + | chmod +x genfstab + | ./genfstab -U /mnt >> /mnt/etc/fstab + `---- + + +6 Post-installation +=================== + + The base installation is now complete, you can now fine tune your + system according to your needs. Rest of these instructions are + completely optional. You can check the rest of the documentation to + learn more about the system. + + +6.1 KISS repositories +~~~~~~~~~~~~~~~~~~~~~ + + While not 100% compatible with cpt, you can use kiss repositories in + your system the same way you are using the distribution + repositories. Here is an example for the KISS Linux Community + repository. |