Adding new pages and reorganizing existing ones

This commit is contained in:
ngn 2024-01-19 14:29:23 +03:00
parent bf37ea1ad8
commit f001b26d84
32 changed files with 402 additions and 71 deletions

BIN
assets/2400.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

3
download.json Normal file
View File

@ -0,0 +1,3 @@
{
"title": "24.00"
}

18
download.md Normal file
View File

@ -0,0 +1,18 @@
For installation instructions, please [see the wiki](/wiki).
Signatures can be verified using `gpg`. To do so, download the maintainer's key:
```
$ gpg --receive-keys F9E70878C2FB389AEC2BA34CA3654DF5AD9F641D
```
Then use the `--verify` option to verify the signature:
```
$ gpg --verify /path/to/signature.sig
```
## Release Dates
To learn more about releases see the [wiki page for releases](/wiki/release).
| Version | Release Date | EOL |
| -------------- | ------------ | ------- |
| MatterLinux 24 | 01/2024 | 01/2025 |
| MatterLinux 25 | 01/2025 | ??/???? |

View File

@ -12,18 +12,21 @@ scratch. So the project is not based on any other distribution, nor it's package
Currently MatterLinux is under development, here is a rough roadmap if you want to
follow the development of the project:
- [+] Package system
- [+] Website
- [+] Official repos (`base` and `desktop`)
- [>] Wiki/documentation
- [>] First release
- [x] Expanding `desktop` repo (100 packages)
<ul>
<li><k class="green">>>></k> Package system</li>
<li><k class="green">>>></k> Website</li>
<li><k class="green">>>></k> Official repos (<code>base</code> and <code>desktop</code>)</li>
<li><k class="green">>>></k> Wiki/documentation</li>
<li><k class="green">>>></k> First release</li>
<li><k class="blue">>>></k> Expanding <code>desktop</code> repo (100 packages)</li>
<li><k class="red">>>></k> Expanding the wiki</li>
</ul>
## Contributing
Currently active contributors are:
- (Maintainer) [ngn](mailto:ngn13proton@proton.me)
- (Maintainer) ngn | [Email](mailto:ngn@ngn.tf) [PGP](https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0xF9E70878C2FB389AEC2BA34CA3654DF5AD9F641D)
Consider helping out if you are interested in this project.
To do so, check out the [contribution guide](/wiki/contribute). If have any questions/problems
feel free to join the [chat rooms](/wiki/chat) and ask questions you have to the maintainer/developers.
feel free to join the [chat rooms](/wiki/chat) and ask them to the maintainer/developers.

6
news/24.json Normal file
View File

@ -0,0 +1,6 @@
{
"id": "rel24",
"title": "First release!",
"date": "19/01/24",
"author": "ngn"
}

45
news/24.md Normal file
View File

@ -0,0 +1,45 @@
After longs hours of improvements and testing latter, the first release is finally here.
There was also bunch of other development in this 12 day period. So lets go over it.
## MatterLinux 24.00
![](/assets/2400.png)
With the 24.00 release, MatterLinux now has an official ISO and a release archive.
I also published the installation guide over on the wiki. This means you can install
MatterLinux right now! Of course, as of now, the repos are really limited, so it's
not ready for daily usage, not quite yet.
## Package Tracker
MatterLinux now has a [custom package tracker](https://tracker.matterlinux.xyz/)!
It's written in Go, like the web server. It doesn't have a lot of functionality,
but it provides an easy interface for finding and tracking packages.
## New tools!
The [tools](https://git.matterlinux.xyz/Matter/tools) repository is extended with
the addition of the `matter-iso` script, which just a simple script that you can use
to build custom ISO images. The configuration for the official ISO images can be
find in the [iso](https://git.matterlinux.xyz/Matter/iso) repository. It actually took
surprisingly long time to get the ISO to work, kernel was somehow unable to find
the `init` program. I tried fixing that by supplying the `init=` parameter, which
didn't work so I just went ahead with the lazy option and `init` over to `/`.
## Little Improvements
Apart from these, I also made quite a few improvements to the website, packages, infrastructure
and to the package manager:
- I reworked the CSS for the website (especially for the markdown content). I think
it's now easier to read and overall looks cleaner.
- I added the `mp-query` command to the package manager, which lets you get information
about a specific package in a nicely formatted way.
- Fixed compile flags for few packages, including `grub`, which was really unstable as
it was being compiled with optimization flags.
- XMPP room moved from jabbers.one to a self hosted server (located at matterlinux.xyz)
- Git server moved from [Gogs](https://gogs.io/) to [Gitea](https://about.gitea.com/)
## What's Next?
I will be on a vacation for a couple of weeks and I also have other projects to work
on so I will be taking a break from the project. When I come back I will be extending the
`desktop` repo, and hopefully when I make the next post, there will be working
display server in the repo.
That will be all for now, see you in the next post!

View File

@ -0,0 +1,6 @@
{
"id": "install",
"title": "Installation",
"author": "ngn",
"date": "17/01/24"
}

179
wiki/install/install.md Normal file
View File

@ -0,0 +1,179 @@
This guide for installing MatterLinux 24 assumes you are in a live USB/CD/DVD environment. If you are not, then
see the [introduction page](/wiki/intro).
# Loading keys for the ISO
If you are using the MatterLinux ISO for the installation, you should load your key map to make
it easier to work in the TTY. All the available key maps can be listed with:
```
# localectl list-keymaps
```
To load a key map, you can use the `loadkeys` command, for example:
```
# loadkeys tr_q-latin5
```
# Setting up the Installation Disk
During the installation, the installation disk will be referred as `$DISK`. In order to
copy paste commands easily, you can set this as an environment variable:
```
# export DISK=/dev/sda
```
If you are not sure which disk is your installation disk, you can use the `lsblk` command.
**Please note that the installation will wipe your entire drive, so backup any important data you may have.**
### Creating partitions
You can use the `fdisk` tool to format your disk:
```
# fdisk $DISK
```
Here are the simple commands in `fdisk`:
- `d`: Delete the last partition
- `n`: Create a new partition
- `w`: Save the changes
If you have old partitions left on the disk, clean them with the `d` command.
For this guide we will be using two separate partitions for `/boot` and `/`. So after removing
old partitions create 2 new partitions with the `n` command:
- For the first partition hit enter till you see the `Last Sector` input. Here type `+1G`. You can
make your `/boot` partition larger or smaller if you wish.
- For the second partition, just hit enter for all the inputs to use the rest of the disk.
When you are done save the changes with `w`.
### Formatting the partitions
Now you should have 2 new partitions. You can confirm this using the `lsblk` command:
```
# lsblk $DISK
```
We will refer these partitions as `$BOOT` and `$ROOT`:
```
# export BOOT=${DISK}1
# export ROOT=${DISK}2
```
We will be formatting `$BOOT` and `$ROOT` with EXT4. You can really use any file system.
> **Important**
>
> You should use FAT32 for `$BOOT` if you are doing an UEFI installation.
To format the partitions as described above:
```
# mkfs.ext4 $BOOT
# mkfs.ext4 $ROOT
```
### Mounting
Mount the `$ROOT` partition to `/mnt`, and the `$BOOT` partition to `/mnt/boot`:
```
# mount $ROOT /mnt
# mount --mkdir $BOOT /mnt/boot
```
# Installing the base system
[Download and verify the latest release archive](/download). This can be done using the
`curl` and the `gpg` tool.
After downloading and verifying the archive extract it to the `/mnt` directory:
```
# tar xvf <archive name> -C /mnt
```
### Package Manager Configuration
Copy over the `mp` configuration to the new system:
```
# cp /etc/mp/cfg /mnt/etc/mp/cfg
```
### Change Root
To change root (`chroot`) into the new system, you can use the `matter-chroot` tool, which is a part of [MatterLinux `tools`
project](https://git.matterlinux.xyz/Matter/tools):
```
# matter-chroot /mnt
```
### Setup Timezone
Link `/etc/localtime` to your localtime zone. Timezones are located under
`/usr/share/zoneinfo`. For example:
```
# ln -sf /usr/share/zoneinfo/Europe/Istanbul /etc/localtime
```
### Installing Important Packages
After changing root, you can now start installing other base system packages that are not included in the release archive.
But first thing first, sync all the packages and add the repo public keys:
```
# mp-sync
# gpg --receive-keys F9E70878C2FB389AEC2BA34CA3654DF5AD9F641D
```
Now it is time to install packages. You should install `systemd` and `dhcpcd`:
```
# mp-install systemd dhcpcd
```
You should also run this `systemctl` command after installation:
```
# systemctl preset-all
```
### Host name and fstab
Enter your host name into `/etc/hostname` using a text editor like `vim` or `nano`.
Then configure the `/etc/fstab`, again, using the text editor of your choice:
```
# device | mount-point | file system | options | dump | fsck
# ======== | =========== | =========== | ========== | ===== | =======
$ROOT / ext4 defaults 1 1
$BOOT /boot ext4 defaults 0 0
```
Change the configuration accordingly.
### Changing the Root Password
Change your root password:
```
# passwd
```
### Installing the kernel
Install the linux kernel with `mp`:
```
# mp-install linux
```
Verify the installation:
```
# ls -la /boot/vmlinuz-linux
```
# Installing GRUB
For the grub BIOS installation, install the `grub-bios` package:
```
# mp-install grub-bios
```
> **Important**
>
> For the grub UEFI installation, install the `grub-efi` package
> instead of `grub-bios`
### Installation and Configuration
To install grub to your boot partition, run:
```
# grub-install $DISK
```
To auto generate grub configuration, run:
```
# grub-mkconfig -o /boot/grub/grub.cfg
```
# Cleanup and Reboot
Exit the `chroot` environment and `umount` all the disks:
```
# umount $BOOT
# umount $ROOT
```
Now reboot your system and boot from the installation disk. Login with as root with your password.
Congratulations, you have just installed MatterLinux!

View File

@ -15,7 +15,8 @@ build tools and scripts. It supports all `amd64` (`x86_64`) systems.
## Can I install MatterLinux?
MatterLinux is a distribution designed for GNU/Linux "enthusiasts". So if you
are new to GNU/Linux, and not sure what you are doing, then you should probably
look for another distribution.
look for another distribution as the installation guide pretty much assumes that
you are familiar with GNU/Linux commands and configuration in general.
Currently it's not really possible to daily drive MatterLinux as it doesn't have
a lot of packages that you may need. Yeah, you can install it, but you cannot get
@ -29,14 +30,16 @@ Preferably, do the installation in virtual machine. Provide the virtual machine
10G disk space, 1GB memory and 1 CPU. You should also have a working internet connection.
To complete the installation you need to boot from a live GNU/Linux USB/CD/DVD. To create a
live GNU/Linux USB/CD, you will need a GNU/Linux ISO. MatterLinux do provide ISOs for
live GNU/Linux USB/CD/DVD, you will need a GNU/Linux ISO. MatterLinux do provide ISOs for
installation but you can really use any GNU/Linux ISO you want.
**Note for bare metal installation:** MatterLinux ISO do **NOT** support wireless connection.
> **Note for bare metal installation**
>
> MatterLinux ISO do **NOT** support wireless connection.
To burn the ISO to your USB/CD/DVD, you can use the `dd` command:
```
# dd if=[path to ISO] of=/dev/[name of the device] bs=8M status=progress
# dd if=<path to ISO> of=/dev/<name of the device> bs=8M status=progress
```
## I booted from the ISO, now what?

6
wiki/install/post.json Normal file
View File

@ -0,0 +1,6 @@
{
"id": "post_install",
"title": "Post-Installation",
"author": "ngn",
"date": "19/01/24"
}

23
wiki/install/post.md Normal file
View File

@ -0,0 +1,23 @@
To make your system more usable, you may want to install and configure extra packages.
> **Note**
>
> Currently MatterLinux has limited amount of packages, so there are lots of
> missing packages that some users may consider essential, such as a display server.
> If you want more packages, consider [contributing](/wiki/contribute).
## Adding New Users
You can add new users using the `useradd` command, for example:
```
# useradd -m ngn
```
## Installing OpenSSH
For remote access to your system, you can install OpenSSH server:
```
# mp-install openssh
```
You can enable root login, by editing `/etc/ssh/sshd_config`:
```
PermitRootLogin yes
```

View File

@ -5,12 +5,11 @@ edit a page or create a new page, make a [pull request](/wiki/contribute) to [co
don't have a link yet.
## Installation
| Name | Description |
| --------------------------- | ----------------------------------------------- |
| [Introduction](/wiki/intro) | Learn about MatterLinux and other general stuff |
| Installation | Learn how to install a base MatterLinux system |
| Installation (Any% Edition) | Speedrunner edition of the Installation page |
| Post-Installation | Make your system (somewhat) usable |
| Name | Description |
| --------------------------------------- | ----------------------------------------------- |
| [Introduction](/wiki/intro) | Learn about MatterLinux and other general stuff |
| [Installation](/wiki/install) | Learn how to install a base MatterLinux system |
| [Post-Installation](/wiki/post_install) | Make your system (somewhat) usable |
## Packaging
| Name | Description |

View File

@ -6,7 +6,7 @@ configuration file (`/etc/mp/cfg`).
### Creating a mirror
To create a mirror you can use the `matter-mirror` tool. This tool is included
with the `matter-tools` repository. To install it [see the project READMDE](https://git.matterlinux.xyz/Matter/matter-tools#installation).
with the `tools` repository. To install it [see the project READMDE](https://git.matterlinux.xyz/Matter/tools#installation).
After installing `matter-mirror`, specify an URI and an output directory (files will be downloaded
into the output directory). For example to mirror the `base` repo from
@ -23,17 +23,19 @@ You will mostly likely want to update your mirror every once in a while. To do s
create a cron job. For example to update your mirror every day at 00:00, you can add the
following entry to your `/etc/crontab`:
```
0 0 * * * <user> matter-mirror -u <url> -o <output dir path>
0 0 * * * <user> matter-mirror -u <url> -o <output dir path>
```
# List
This section contains information about different MatterLinux repo and mirros
that you can use. To add your mirror to this list get in contact with the maintainer/developers.
Note that official mirrors are **ALWAYS** signed with the `F9E70878C2FB389AEC2BA34CA3654DF5AD9F641D`
fingerprint (belongs to the maintainer, ngn). If syncing with a mirror tells you otherwise, then
**DO NOT USE THAT MIRROR** and report it to the maintainer/developers in order to remove it
from the list.
> **Note**
>
> Official mirrors are **ALWAYS** signed with the `F9E70878C2FB389AEC2BA34CA3654DF5AD9F641D`
> fingerprint (belongs to the maintainer, ngn). If syncing with a mirror tells you otherwise, then
> **DO NOT USE THAT MIRROR** and report it to the maintainer/developers in order to remove it
> from the list.
### Official repos
| Repo | URI | Location |

View File

@ -119,7 +119,10 @@ function is called by `mp-repo` after downloading and verifying all the packages
called in the `$ROOTDIR`. This directory will contain all the downloaded files, any files
in this directory will be included into the build, so don't forget to cleanup.
**Note:** You don't need to cleanup the downloaded files, they will be cleaned by the `mp-repo`.
> **Note**
>
> You don't need to cleanup the downloaded files in the package script,
> they will be cleaned by the `mp-repo`.
- `tar xf $NAME-$VERSION.tar.gz`: Extract the downloaded archive file.
- `cd $NAME-$VERSION`: Change directory into the extracted directory.

View File

@ -10,7 +10,9 @@ In a Matter system, package management is generally done with the MatterLinux Pa
the source, then you should follow [this section](https://git.matterlinux.xyz/matter/mp#installation)
from the README.
Note that you should run all the `mp` and related commands as the root user.
> **Note**
>
> You should run all the `mp` and related commands as the root user.
### Configuration
Configuration file for `mp` can be found at `/etc/mp/cfg`. This file is used specify repos and
@ -43,8 +45,10 @@ actual repo name**. Repo options are:
- `uri (URI)`: Repo URI, you can use `http`, `https` or `ftp` protocols.
- `signing (yes/no)`: Enable/disable PGP signature verification for the repo, by default it's enabled.
**IMPORTANT: DO NOT DISABLE SIGNATURE VERIFICATION IF YOU DON'T KNOW WHAT YOU ARE DOING! THERE IS NO
WAY TO CONFIRM IF THE PACKAGES ARE LEGIT WITHOUT THE SIGNATURE VERIFICATION!**
> **Important**
>
> Do NOT disable signature verification if you don't know what are you doing! There is no
> way to confirm the legitimacy of the packages without signature verification!
### Environment options
`mp` also has a few other options that you specify as an environment variable.

74
wiki/pkg/release.md Normal file
View File

@ -0,0 +1,74 @@
On this package you will find information about MatterLinux release cycle and
version numbering.
## Release Cycle
MatterLinux will make a new release once a year. A new release means every package will be updated
to a more recent version. Packages will replace the old ones,
meaning old packages will no longer be available and support for the old release will end.
If you are using an old release, you will able to update to the latest one by running a
full update using the [MatterLinux Package Manager](/wiki/package_man).
During the testing of the new release, repos for the new release will be located
at [next.matterlinux.xyz](https://next.matterlinux.xyz).
### Package Updates
Packages usually won't be updated to a more recent version during the life of a MatterLinux release,
however sometimes packages may be updated for bug fixes, security issues and minor improvements.
### ISOs and Release Archives
- ISO: A bootable disk image
- Release Archive: An archive used during the installation of a release
With new release, a new ISO and a release archive will be published. ISO and release
archive file for a release may update before the next release to keep the
packages in these archive files and the ISOs up-to-date.
### Learn the version you are using
You can learn the MatterLinux release version you are using by printing
out the `/etc/os-release` file:
```
# cat /etc/os-release
```
## Version Numbering
MatterLinux and all it's projects are version numbered after the year.
For example MatterLinux release for the year 2024 is versioned "MatterLinux 24".
Minor numbers may be added for other releases. For example the 2nd release of the
MatterLinux 24 ISO would be named "MatterLinux 24.01".
Similarly 15th release of the MatterLinux package manager for the year 2024
is versioned "24.14".
## Building Releases
You can build an up-to-date ISO and a release archive using MatterLinux [tools](https://git.matterlinux.xyz/matter/tools).
To install these tools [see the project READMDE](https://git.matterlinux.xyz/Matter/tools#installation).
You should be on a MatterLinux system for a proper build!
### Building the Release Archive
To build a release archive, you can use the `matter-base` tool. This tool will create a temporary directory,
install all the required base packages into it and then it will archive it all up for the final archive.
All you need to do is to specify a name for the archive, for example:
```
# matter-base matterlinux_example-build
```
### Building the ISOs
Official ISOs are built using the `matter-iso` tool. By providing a release archive and a configuration
directory to this tool, you can create an ISO image.
> **Note**
>
> ISO image is created using `grub-mkrescue`, so you should install `libisoburn` before proceeding.
As the configuration directory, you can clone the [official ISO configuration](https://git.matterlinux.xyz/Matter/iso).
Or you can use your own custom configuration.
To build the ISO with the release archive that we created on the previous example, using the configuration directory
located at `./iso`:
```
# matter-iso matterlinux_example-build.tar.gz iso
```
The final ISO should be available at `./iso/dist/<name_version>.iso` after the build.

View File

@ -1,43 +0,0 @@
On this package you will find information about MatterLinux release cycle and
version numbering.
## Release Cycle
MatterLinux will make a new release once a year. A new release means every package will be updated
to a more recent version. Packages will replace the old ones,
meaning old packages will no longer be available and support for the old release will end.
If you are using an old release, you will able to update to the latest one by running a
full update using the [MatterLinux Package Manager](/wiki/package_man).
During the testing of the new release, repos for the new release will be located
at [next.matterlinux.xyz](https://next.matterlinux.xyz).
### Package Updates
Packages usually won't be updated to a more recent version during the life of a MatterLinux release,
however sometimes packages may be updated for bug fixes, security issues and minor improvements.
### ISOs and Base Archives
ISO and base archive file for a release may update before the next release to keep the
packages in these archive files and the ISOs up-to-date.
### Learn the version you are using
You can learn the MatterLinux release version you are using by printing
out the `/etc/os-release` file:
```
# cat /etc/os-release
```
## Version Numbering
MatterLinux and all it's projects are version numbered after the year.
For example MatterLinux release for the year 2024 is versioned "MatterLinux 24".
Minor numbers may be added for other releases. For example the 2nd release of the
MatterLinux 24 ISO would be named "MatterLinux 24.01".
Similarly 15th release of the MatterLinux package manager for the year 2024
is versioned "24.14".
## Planned Release Dates
| Version | Release Date | EOL |
| -------------- | ------------ | ------- |
| MatterLinux 24 | 01/2024 | 01/2025 |
| MatterLinux 25 | 01/2025 | ??/???? |