aboutsummaryrefslogtreecommitdiff
path: root/install.texi
diff options
context:
space:
mode:
Diffstat (limited to 'install.texi')
-rw-r--r--install.texi426
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.