From 979a10c2a68746565f330e871da2a0a112fa1604 Mon Sep 17 00:00:00 2001 From: Cem Keylan Date: Mon, 6 Apr 2020 12:06:20 +0300 Subject: initial commit --- src/blog/20200128.md | 23 +++ src/blog/index.md | 9 + src/contributing.md | 9 + src/index.md | 205 +++++++++++++++++++++++ src/people.md | 3 + src/repositories.md | 22 +++ src/wiki/boot/module-management.md | 15 ++ src/wiki/index.md | 17 ++ src/wiki/init/switching-to-sinit.md | 52 ++++++ src/wiki/install.md | 304 ++++++++++++++++++++++++++++++++++ src/wiki/keymaps/X-keymaps.md | 0 src/wiki/keymaps/keymaps.md | 53 ++++++ src/wiki/system/service-management.md | 40 +++++ 13 files changed, 752 insertions(+) create mode 100644 src/blog/20200128.md create mode 100644 src/blog/index.md create mode 100644 src/contributing.md create mode 100644 src/index.md create mode 100644 src/people.md create mode 100644 src/repositories.md create mode 100644 src/wiki/boot/module-management.md create mode 100644 src/wiki/index.md create mode 100644 src/wiki/init/switching-to-sinit.md create mode 100644 src/wiki/install.md create mode 100644 src/wiki/keymaps/X-keymaps.md create mode 100644 src/wiki/keymaps/keymaps.md create mode 100644 src/wiki/system/service-management.md (limited to 'src') diff --git a/src/blog/20200128.md b/src/blog/20200128.md new file mode 100644 index 0000000..4c5c3c1 --- /dev/null +++ b/src/blog/20200128.md @@ -0,0 +1,23 @@ +Title: Switching to New Website + +Switching to New Website +------------------------ + +**Date:** Jan 28 2020 + +In case you haven't seen it before, this website +was powered by [werc](http://werc.cat-v.org). And +even though I liked it really much, it was too +powerful for a small website like this. + +So I have decided to reimplement this website with +my own static generation scripts. The source will +probably be on +when I decide to publish the website. + +The generation requires Plan9 programs, although +I have used them just for my enthusiasm. I have built +the site with a combination of mk (instead of make), rc, +and POSIX sh. I am not yet exactly familiar with rc, +but I will replace the shell scripts when I feel like +I can. diff --git a/src/blog/index.md b/src/blog/index.md new file mode 100644 index 0000000..9d9a9aa --- /dev/null +++ b/src/blog/index.md @@ -0,0 +1,9 @@ +Blog Index +========== + +This is the Carbs Linux Blog Index. You can find every post +here. [RSS Feed] + +[RSS Feed]: /rss.xml + +* Jan 28 2020 - [Switching to New Website](20200128.html) diff --git a/src/contributing.md b/src/contributing.md new file mode 100644 index 0000000..3fe71ce --- /dev/null +++ b/src/contributing.md @@ -0,0 +1,9 @@ +Contribute to the Carbs Linux Project +===================================== + +This is a small project made possible by volunteers. There are +ways you can help this project stay alive. + +* Contribute to the [Carbs Linux repository](http://git.carbslinux.org/repository/log.html) +* Contribute to the [KISS community repository](https://github.com/kisslinux/community) +* Contribute to the [wiki](//wiki.carbslinux.org) diff --git a/src/index.md b/src/index.md new file mode 100644 index 0000000..062cd3f --- /dev/null +++ b/src/index.md @@ -0,0 +1,205 @@ +Carbs Linux is an in-development Linux® distribution with a suckless mindset. +The system will consist of only the necessary programs to create a Linux +distribution. + +Package Manager +--------------- + +Carbs Linux is built upon the world's best Linux distribution +[KISS Linux](https://getkiss.org) and uses [kiss](https://github.com/kisslinux/kiss) +as its package manager, which has proven to be extremely flexible. I aim to move Carbs +to an even more suckless path. + + +Sane defaults +------------- + +By default, Carbs Linux comes with busybox for coreutils, runit as the system +supervisor, and sinit as the init, though nothing holds you from changing any +of them. + + +Links +----- + +* Reddit - [/r/carbslinux](http://reddit.com/r/carbslinux) +* Matrix - [#carbs-linux:matrix.org](https://matrix.to/#/#carbs-linux:matrix.org) + + +News +---- + +[RSS Feed](/news.xml) + +### Apr 05 2020 + +Carbs Linux repositories will be hosted only on Github. Commits will be +pushed there, and not the repository. You have until +May 4, 2020 Monday to switch your remotes to . +The git repository will continue to be served until then (without additional +commits). + +You can switch your remote by executing the following command on your +repository directory. + + git remote set-url origin https://github.com/CarbsLinux/repository + + +### Feb 18 2020 + +A new tarball is released. It can be found on . + +**edit:** I have removed the tarball because of a bootstrapping issue. +I will be re-adding it later today. + +**edit 2:** I have added a tarball (20200219) to reflect my recent +changes on Busybox. + + +### Feb 14 2020 + +**IMPORTANT!** Carbs-init update to be released on 17th of February +will require manual intervention. I am holding this update back so +people can see it before they update their system (even though the +update will show the same message as this). The rationale for the +update is explained below the intervention. + + # There is an explanation for each init + # You only need to follow the instructions + # for your own init-system + + ## busybox-init + # If you did not edit your inittab simply + # move inittab.new to inittab + -> mv /etc/inittab.new /etc/inittab + + # If you did edit your inittab you can use + # a simple sed command to remove the necessary lines + -> sed -i '/getty/d;/runsvdir/d' /etc/inittab + + + ## runit + # same as busybox-init, if you did not edit + # /etc/runit/2 move 2.new to 2 + -> mv /etc/runit/2.new /etc/runit/2 + + # else + -> vim /etc/runit/2 + # open your 2 file and remove the for loop containing + # getty commands. If you are using runit, it is recommended + # to comment out /etc/init/runit.boot + + ## sinit/minit + # If you did not edit your {sinit-,}launch-services.boot + # you can simply remove it. + -> rm -f /etc/init/launch-services.boot /etc/init/sinit-launch-services.boot + + # This should leave you without any issues, and you can safely reboot. + +Carbs-init update is to make sure init systems do not clash, and do +not have to use different files. This is a sensible update both for +the user user and for the maintainer side. + +To give an example, before this update busybox-init was managing getty +through `inittab`, runit was managing through `/etc/runit/2`, and +minit/sinit were launching from `/etc/init/launch-services.boot`. This +is a configuration nightmare for everyone, and since I am maintaining +and constantly testing those init providers, a huge nightmare for me. +This is a Quality of Life update. + + +### Feb 13 2020 + +Runit is now released on the core repository! You can now replace +busybox-init with runit-init. You can also replace the busybox runit +utilities with the actual runit. This will reduce the dependency on +busybox greatly. + +### Jan 28 2020 + +Web Server is now on a Carbs Linux server. It is not complete yet, +but I will be adding a little more for the intended functionality. +Downtimes can be expected. + +UPDATE: ssl is now working. + +UPDATE2: downloads are back again. + + +### Jan 22 2020 + +Expect downtime on Jan 24 2020 22:00 UTC as I will be migrating +this web server to my Carbs Linux server! + + +### Jan 15 2020 + +sinit has been taken to `core`, and is now officially supported + + +### Jan 13 2020 + +**Busybox update reqires manual intervention** + +The new busybox package conflicts with the pre-update busybox-init. That's why +you should rebuild and install `busybox-init` before doing the update. + + # Do a kiss update first (but don't actually update it yet), or manually pull the git repository + $ kiss u # Cancel this operation after it asks for you to confirm the update + + # Install the busybox-init package + $ kiss b busybox-init && kiss i busybox-init + + # Continue your update as you normally would. + $ kiss u + +I have moved runit and logging utilities from the busybox-init package to the busybox +package, which is the cause of these conflicts. + +### Jan 10 2020 + +carbs-rootfs-20200110.tar.xz was [released](//dl.carbslinux.org/releases) + + +### Jan 09 2020 + +Happy new year, everyone! I am back after some long silence. I was unable to commit for a +while, but I have pulled some new updates from the KISS repository, added some of my own. +This week I will be changing/adding some things. + +Important things are, + +* Carbs-init was updated to 0.3. +* I will be adding an implementation of suckless.org's [sinit](//core.suckless.org/sinit) as `carbs-sinit` +* Carbs Repository was added to [repology.org](//repology.org/repository/carbs) +* A new rootfs tarball will be coming up tomorrow. + + +### Dec 18 2019 + +carbs-rootfs-20191218.tar.xz was [released](//dl.carbslinux.org/releases) + + +### Dec 17 2019 + +Installation instruction are now complete. A review would be greatly appreciated! + + +### Dec 15 2019 + +Carbs Linux Wiki is now available to be edited and updated by the users go +to the [wiki](//carbslinux.org/wiki) to obtain more information. + +**February 2020 EDIT:** Changed link for wiki + + +### Dec 12 2019 + +Busybox and Busybox-init has been seperated into two different packages. +This is for adding standalone runit/runit-init to the repositories. + + +### Dec 10 2019 + +First alpha release was made. See the [downloads page](//dl.carbslinux.org/releases). + diff --git a/src/people.md b/src/people.md new file mode 100644 index 0000000..dc49bf3 --- /dev/null +++ b/src/people.md @@ -0,0 +1,3 @@ +People +====== +* Cem Keylan - Founder diff --git a/src/repositories.md b/src/repositories.md new file mode 100644 index 0000000..794e451 --- /dev/null +++ b/src/repositories.md @@ -0,0 +1,22 @@ +Repositories endorsed by Carbs +============================== +The power of KISS package manager is the way +it is really flexible. You can use multiple +repositories at the same time. + +Official Repository +------------------- + +The official repository comes installed in +the rootfs tarball. You can view the sources +[online](//git.carbslinux.org/repository/log.html) + + +Other repositories +------------------ + +* [KISS Community Repository](https://github.com/kisslinux/community) +* [KISS Official Repository](https://github.com/kisslinux/repo) + +**NOTE:** Note that the *official* repositories of +KISS Linux are not identical and may have conflicts. diff --git a/src/wiki/boot/module-management.md b/src/wiki/boot/module-management.md new file mode 100644 index 0000000..c9cdffb --- /dev/null +++ b/src/wiki/boot/module-management.md @@ -0,0 +1,15 @@ +Title: Module Management + +Module Management +================= + +With **busybox-init**, a module can be loaded at boot by adding such a line to your `inittab` + + ::once:/bin/modprobe module-name + + +With **sinit**, a module can be loaded from your `/etc/rc.local` file. Add this to your file + + /bin/modprobe module-name + + diff --git a/src/wiki/index.md b/src/wiki/index.md new file mode 100644 index 0000000..dd27004 --- /dev/null +++ b/src/wiki/index.md @@ -0,0 +1,17 @@ +Wiki +==== + +Welcome to the Carbs Linux wiki! This wiki is open for access, +and can be edited freely by anyone who wants to contribute. + +If you want to make a contribution, go to + +Content +------- + +* [Module Management](boot/module-management.html) +* [Switching to Sinit](init/switching-to-sinit.html) +* [Install](install.html) +* [X-keymaps](keymaps/X-keymaps.html) +* [Keymaps in TTY](keymaps/keymaps.html) +* [Service Management](system/service-management.html) diff --git a/src/wiki/init/switching-to-sinit.md b/src/wiki/init/switching-to-sinit.md new file mode 100644 index 0000000..180b736 --- /dev/null +++ b/src/wiki/init/switching-to-sinit.md @@ -0,0 +1,52 @@ +Title: Switching to Sinit + +Switching to Sinit +================== + +Carbs Linux runs `busybox-init` by default. You can switch to +anything else you desire, but only busybox-init and sinit are +officially supported. Switching to sinit is extremely easy, you +can be up and running within minutes. The only "hard" requirement +is an environment you will be chrooting in. So, let's begin! + + +Preparing your environment +-------------------------- + +From your other environment, download the kiss-chroot utility +and make it executable. + + $ wget https://dl.getkiss.org/kiss-chroot + $ chmod +x kiss-chroot + + # From your environment start the chroot + $ kiss-chroot /mnt + +Removing busybox-init +--------------------- + +Now that we are in chroot environment, let's remove busybox-init. + + $ kiss r busybox-init + + +Installing and configuring sinit +-------------------------------- + +Build and install sinit + + $ kiss b sinit + $ kiss i sinit + +Open up your `/etc/init/rc.conf` now and uncomment +the variables regarding SINIT. You are ready now. + +If you edited your inittab, make sure you reflect your changes +on the `/etc/init/sinit-launch-services.boot` file. + + +Finishing up +------------ + +If all of the above is done, simply exit the chroot and reboot. +Sinit should be functioning without any issues. diff --git a/src/wiki/install.md b/src/wiki/install.md new file mode 100644 index 0000000..fd6ea73 --- /dev/null +++ b/src/wiki/install.md @@ -0,0 +1,304 @@ +Title: Install + +Installation Instructions +========================= + +This post will guide you step-by-step in order to install +Carbs Linux. It is not complete yet. + + +Downloading and Getting Ready to Chroot +--------------------------------------- + +Installing Carbs Linux is the same as installing most +rootfs distributions, such as Gentoo, or Void Linux. + + +### Requirements + +You simply need a Live Linux ISO. Gentoo would be the best +as programs you will require will be already there. Get the +ISO, boot it and set up your network. + +**Required Programs:** + +* tar +* wget +* xz + +Rest of the instructions assume that you have set all of these +up, and will continue on. + + +### Download + + +First, we need to download the rootfs tarball. In your terminal +type + + $ wget https://carbslinux.org/releases/carbs-rootfs-20191210.tar.xz + + +### Check the integrity of the tarball + +While optional, it is highly recommended to check the integrity +of the tarball. + + $ wget https://carbslinux.org/releases/carbs-rootfs-20191210.tar.xz.sha256sum + $ sha256sum -c carbs-rootfs-20191210.tar.xz.sha256sum + + +### Check the signatures + +While optional, it is highly recommended to check the signature +of the tarball + + $ wget https://carbslinux.org/releases/carbs-rootfs-20191210.tar.xz.sig + + Import the public key of release@carbslinux.org + + $ gpg --recv-keys FF484BDFEFCEF8FF + + $ gpg --verify carbs-rootfs-20191210.tar.xz.sig + +### Download Kiss Linux Chroot Helper + + $ wget https://dl.getkiss.org/kiss-chroot + + Make the script executable + + $ chmod +x kiss-chroot + +### Extract the rootfs tarball + +You need to extract the tarball to your mounted partition + + $ tar xvpf carbs-rootfs-20191210.tar.xz -C /mnt + +Chroot +------ +Chroot into Carbs Linux + + $ ./kiss-chroot /mnt + +### Enable repository signing (Highly Recommended) + +This step is optional, but very highly recommended +(I cannot stress out the amount I am recommending this). +This ensures you are receiving updates from Carbs Linux +and not some other source. + +**Install GnuPG** + +It is also a great time to learn how to use your new +package manager, KISS! You simply build and install +the package + + $ kiss build gnupg1 + $ kiss install gnupg1 + +**Import my key** + + + Import my public key (cem@ckyln.com) + + $ gpg --recv-key 4356EE08A364CE09 + + Create a .gnupg directory if it doesn't exist + + $ mkdir -p /root/.gnupg + + Trust my public key + + $ echo trusted-key 0x4356ee08a364ce09 >> /root/.gnupg/gpg.conf + +**Enable signature verification** + + +Git has a built in signature verification feature. +You can go to the repository directory and enable it + + $ cd /var/db/kiss/repo + $ git config merge.verifySignatures true + +### Installing Important Tools + +Since Carbs gives you one of the most minimal base, +you might need to apply some add-ons to your system. + +**Update packages** + +It might be a good idea to update your packages before +installing new packages. This ensure compatibility. + + $ kiss update + +**Filesystems** + + +Currently, e2fsprogs and dosfstools are supported, +as they are the most-used filesystems. + + Support for ext2, ext3, and ex4 + + $ kiss build e2fsprogs + $ kiss install e2fsprogs + + Support for dosfstools + + $ kiss build dosfstools + $ kiss install dosfstools + +**Device management** + + $ kiss build eudev + $ kiss install eudev + +**Wireless** + +**wpa_supplicant** + + $ kiss build wpa_supplicant + $ kiss install wpa_supplicant + +**eiwd (WIP)** + + $ kiss build eiwd + $ kiss install eiwd + +**dhcpcd** + + $ kiss build dhcpcd + $ kiss install dhcpcd + +**Shells** + +Carbs Linux comes preinstalled with busybox ash, but other shells +can be found on the repository + + Install bash + + $ kiss build bash + $ kiss install bash + + Install zsh + + $ kiss build zsh + $ kiss install zsh + + Install Plan9 rc-shell + + $ kiss build 9base + $ kiss install 9base + +### Install the Kernel + + +Next step is installing the kernel, which might sound as a challenge +you should download and extract the kernel tarball first. + + $ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.tar.xz + + Let's move the sources to /usr/src + + $ mv linux-5.5.tar.xz /usr/src + $ tar xf linux-5.5.tar.xz + $ cd linux-5.5 + +**Configure the Kernel** + +You can check +to learn more about kernel configuration. Overall, [Gentoo Wiki](https://wiki.gentoo.org) +is a good place to learn about kernel configuration related to +your hardware. + +**Build and install the kernel** + +The rest of it is simple, build the kernel with +`make` and install it with `make install` + +### Bootloader + +The default bootloader is GRUB (GRand Unified Bootloader). + +Build and install GRUB + + $ kiss b grub + $ kiss i grub + + Install efibootmgr as well if your + system requires it + + $ kiss b efibootmgr + $ kiss i efibootmgr + + +**Setup GRUB** + + For BIOS: + $ grub-install --target=i386-pc /dev/sdX + + For UEFI: + $ grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=CarbsLinux + + $ grub-mkconfig -o /boot/grub/grub.cfg + + +### Install init + +Currently, default init for Carbs Linux is `sinit`, but +busybox-init is also supported. You can also change this yourself. + +To install init, you have to + + $ kiss b sinit + $ kiss i sinit + +This will also fetch busybox-init as its dependency. + + +### Enabling other repositories + +There are other repositories out there that might be of your +interest. The Official Repositories come with community and testing +repositories that are not enabled by default. You could also want to +add the Kiss Linux community repository, or someone's personal kiss +repository. + +**Obtaining repositories** + +Obtaining a repository is as simple as a git clone. You can do it +with Cem's personal repository as an example, but any other repository +will be the same. + + # Clone the repository to your desired location + # Optionally add "--depth 1" to save precious disk space + + $ git clone --depth 1 git://git.ckyln.com/kiss-repository /var/db/kiss/cem-repository + +That's it, you have obtained a new repository! + +Adding a repository to your KISS_PATH + +Now that we have obtained Cem's repository, we can add it to our KISS\_PATH! + +We need to edit `/etc/profile.d/kiss_path.sh` for this, but you +can also change your KISS\_PATH from your shellrc. + +Add the full path to the repository, in this case +`/var/db/kiss/cem-repository/cem` to the variable +and add a `:` before/after it. + +It must be looking like this. + + export KISS_PATH=/var/db/kiss/repo/core:/var/db/kiss/repo/extra:/var/db/kiss/repo/xorg:/var/db/kiss/cem-repository/cem + +Update your shell variables by doing `. /etc/profile.d/kiss_path.sh` so you can +immediately access the repository packages + + +More +---- + +You should now be able to boot into you Carbs Linux installation. +To learn more, you can visit the [wiki](//carbslinux.org/wiki) diff --git a/src/wiki/keymaps/X-keymaps.md b/src/wiki/keymaps/X-keymaps.md new file mode 100644 index 0000000..e69de29 diff --git a/src/wiki/keymaps/keymaps.md b/src/wiki/keymaps/keymaps.md new file mode 100644 index 0000000..6bcce03 --- /dev/null +++ b/src/wiki/keymaps/keymaps.md @@ -0,0 +1,53 @@ +Title: Keymaps in TTY + +Installing and Using Keymaps +============================ + +Unlike most other distributions out there +Carbs Linux does not come preinstalled with console +keys. You probably won't be using more than +two either. There are two ways of using keymaps + +Installing the "bkeymaps" package +--------------------------------- + +You can get the `bkeymaps` package from the +[KISS community repository](https://github.com/kisslinux/community). + +Build and install `bkeymaps`. + + -> kiss b bkeymaps + -> kiss i bkeymaps + +Now you can find the keymaps in `/usr/share/bkeymaps`. + + +Downloading the keymaps you require +----------------------------------- + +*This will assume that you are using the us keyboard layout* + +You firstly will need to go to +and download the keymap you need + +Loading keymap, doing it on login/boot +-------------------------------------- + +- Run `loadkmap < file` to load the keymap. + +**Load keymap at login** + +If you want to load a keymap at login, you can +add the command above to your `.profile` file. + +**Load keymap at boot** + +You can also load keymap during boot. You should edit +`/lib/init/rc.boot` file and add something like + + # assuming you are using trq as your keymap + log "Setting keymap to trq..."; { + loadkmap < /path/to/trq.bmap + } + +to your main function. diff --git a/src/wiki/system/service-management.md b/src/wiki/system/service-management.md new file mode 100644 index 0000000..d279b86 --- /dev/null +++ b/src/wiki/system/service-management.md @@ -0,0 +1,40 @@ +Title: Service Management + +Service Management +================== + +Carbs Linux uses busybox-runit as the default system supervisor. + + +Enabling Services +----------------- + +Services start immediately when you enable them, and run by default on boot. + + + $ ln -s /etc/sv/acpid /var/service + + +Disabling a service +------------------- + + $ unlink /var/service/acpid + + +Starting a service +------------------ + + $ sv start acpid + + +Stopping a service +------------------ + + $ sv stop acpid + + +More +---- + +Runit is extremely flexible and simple. Refer to `sv`, `runsv`, `svc`, `runsvdir` +help outputs for more information. -- cgit v1.2.3