diff options
Diffstat (limited to 'install.texi')
-rw-r--r-- | install.texi | 426 |
1 files changed, 426 insertions, 0 deletions
diff --git a/install.texi b/install.texi new file mode 100644 index 0000000..ccc8695 --- /dev/null +++ b/install.texi @@ -0,0 +1,426 @@ +@node Installation +@chapter Installation + +These are the step-by-step instructions for installing Carbs Linux. + +@menu +* Preparing Environment:: Getting ready to chroot +* Chroot:: Going inside your new system +* System Configuration:: Customizing for your personal use +* Kernel:: Compiling your own kernel +* Making your system bootable:: Installing init and bootloader +* Post-installation:: Acquiring more packages and repositories +@end menu + +@node Preparing Environment +@section 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: +@itemize +@item +tar +@item +wget +@item +xz +@item +some form of base utilities (coreutils, sbase, busybox, etc.) +@end itemize + +Rest of these instructions will assume that you have set all of these up, and +will continue on that point. + +@subsection 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 @code{x86_64} +with @code{i686}. + +@example +$ wget https://dl.carbslinux.org/releases/x86_64/carbs-rootfs.tar.xz +@end example + +We can then check the integrity of the tarball and do a signature verification. +Even thought these are optional, they are highly recommended. + +@subsection Check the integrity of the tarball (Recommended) + +All of the releases are saved in a single file named @file{sha256sums.txt}, but the +latest release is saved on @file{carbs-rootfs.tar.xz.sha256}. You can acquire and +verify the tarball. + +@example +$ wget https://dl.carbslinux.org/releases/x86_64/carbs-rootfs.tar.xz.sha256 +$ sha256sum -c carbs-rootfs.tar.xz.sha256 +@end example + +@subsection Verify the signature + +It is highly recommended to verify the signature of the tarball. You will need +GPG for this. + +@example +$ wget https://dl.carbslinux.org/releases/carbs-rootfs.tar.xz.sig +$ gpg --recv-keys FF484BDFEFCEF8FF +$ gpg --verify carbs-rootfs.tar.xz.sig +@end example + +@subsection Extracting the tarball + +You will need to extract the tarball to your desired location. For partitioning, +you can follow @url{https://wiki.archlinux.org/index.php/Partitioning, this guide}. +This will assume that you will be mounting your root partition to @file{/mnt}. + +@example +$ mount /dev/sdx1 /mnt +$ tar xf carbs-rootfs.tar.xz -C /mnt +@end example + +@subsection Obtain the chroot helper + +You can obtain the @command{cpt-chroot} script in order to do a simple chroot into +your new root filesystem. + +@example +$ wget https://dl.carbslinux.org/distfiles/cpt-chroot +$ chmod a+x cpt-chroot +@end example + +@node Chroot +@section Chroot + +Chroot into Carbs Linux! + +@example +$ ./cpt-chroot /mnt +@end example + +@subsection Setting up repositories + +Newest tarballs do not come with repositories, so you will need to manually +obtain them, and set your @env{CPT_PATH} environment variable. Carbs Linux +repositories can either be obtained by @command{git} or @command{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 +@command{git} itself. + +The following guide will assume that you put the repositories into +@file{~/repos/} directory, but you can put the repositories into any directory +you want. So go ahead and create that directory. @command{mkdir -p $HOME/repos}. + +@subsubsection Obtaining from rsync + +Carbs Linux rsync repositories live in @url{rsync://carbslinux.org/repo}. In +order to obtain it, run the following: + +@example +$ rsync -avc rsync://carbslinux.org/repo $HOME/repos/carbs +@end example + +@subsubsection 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. + +@itemize +@item +@url{git://git.carbslinux.org/repository} +@item +@url{https://github.com/carbslinux/repository} +@end itemize + +@example +$ git clone git://git.carbslinux.org/repository $HOME/repos/carbs +@end example + +@subsubsection Making the package manager use the repositories + +In your shell's configuration file, or in your @file{~/.profile} file, add the +following lines: + +@example +export CPT_PATH='' +CPT_PATH=$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 +@end example + +@subsection 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. + +@example +$ cpt update +@end example + +@subsection 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. + +@example +$ cpt build package +$ cpt install package +@end example + +@subsection Essential Software + +Here is a list of software that you might want to have on your system. + +BOOTLOADERS +@itemize +@item +efibootmgr +@item +grub +@end itemize +FILESYSTEMS +@itemize +@item +e2fsprogs +@item +dosfstools +@item +ntfs-3g +@end itemize +NETWORKING +@itemize +@item +dhcpcd +@item +wpa_supplicant +@end itemize +TEXT EDITORS +@itemize +@item +nano +@item +vim +@item +neatvi +@item +nvi +@item +emacs +@item +emacs-nox (terminal-only version of emacs) +@end itemize +USER SHELLS +@itemize +@item +bash +@item +zsh +@item +dash +@item +oksh +@item +rc +@end itemize +POSIX BASE UTILITIES +@itemize +@item +busybox +@item +sbase +@item +coreutils +@end itemize +DOCUMENTATION +@itemize +@item +carbs-docs +@item +man-pages +@item +man-pages-posix +@end itemize + +@subsection Obtaining the documentation (optional) + +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. + +@example +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 +@end example + +@node System Configuration +@section System Configuration + +After you have finished installing some extra packages, you can configure your +system to your liking. + +@subsection Configuring hostname (recommended) + +You might want to add a hostname, especially in a networked environment. Your +hostname will default to 'carbslinux' unless you set this. + +@example +$ echo your-hostname > /etc/hostname +@end example + +@subsection Setting up hosts file (optional) + +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. + +@example +127.0.0.1 localhost.localdomain localhost +::1 localhost.localdomain localhost ip6-localhost +@end example + +@node Kernel +@section Kernel + +Kernel isn't managed under the main repositories, even though you could package +one for your personal use. Here is an @url{https://github.com/cemkeylan/kiss-repository/tree/master/personal/linux, example kernel package}, +which you will need to reconfigure for your specific setup if you want to make +use of it. + +@subsection 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. + +@example +Download the kernel and extract it +$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.7.6.tar.xz +$ tar xf linux-5.7.6.tar.xz + +Change directory into the kernel sources +$ cd linux-5.7.6 +@end example + +@subsection Installing dependencies + +In order to compile the kernel you will need to install some dependencies. You +will need @command{libelf} to compile the kernel. If you want to configure using the menu +interface you will also need @command{ncurses}. + +@example +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 +@end example + +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 @url{https://github.com/E5ten, E5ten}. You will need to obtain and +apply the patch in the kernel source directory. + +@example +$ wget https://dl.carbslinux.org/distfiles/kernel-no-perl.patch +$ patch -p1 < kernel-no-perl.patch +@end example + +@subsection Compiling the kernel + +Next step is configuring and building the kernel. You can check Gentoo's @url{https://wiki.gentoo.org/wiki/Kernel/Configuration, 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. + +@example +$ make menuconfig +$ make +$ install -Dm755 $(make -s image_name) /boot/vmlinuz-linux +@end example + +@node Making your system bootable +@section 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. + +@subsection Installing a 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). + +GRUB BIOS installation + +@example +$ cpt b grub && cpt i grub +$ grub-install --target=i386-pc /dev/sdX +$ grub-mkconfig -o /boot/grub/grub.cfg +@end example + +GRUB UEFI installation + +@example +$ 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 +@end example + +@subsection Installing init scripts + +Only thing left to do is installing the init-scripts, and now you are almost +ready to boot your system! + +@example +$ cpt b carbs-init && cpt i carbs-init +@end example + +@subsection Generating 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: + +@example +$ wget https://github.com/cemkeylan/genfstab/raw/master/genfstab +$ chmod +x genfstab +$ ./genfstab -U /mnt >> /mnt/etc/fstab +@end example + +@node Post-installation +@section 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. + +@subsection Acquiring 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. + +@example +$ git clone https://github.com/kisslinux/community $HOME/repos/kiss-community +$ export CPT_PATH=$CPT_PATH:$HOME/repos/kiss-community/community +@end example + +NOTE: There are lots of packages on the KISS community repository that are also +on Carbs Linux main repository. I would advise giving lower priority to the KISS +community repository as it may affect other packages that you might install. |