Guide (Master) - Fulgurance/ISM GitHub Wiki
This new wiki is actually experimental, and because it focus on master branch at the moment, you will probably encounter issues.
This is the very last guide of ISM usage.
This documentation focus on the master branch version and help actually the tester to setup a good environment to test the last software features.
All tests are performed under a virtual machine with VirtualBox.
First start a new virtual machine from a livecd. Mainly, all test were performed via the kubuntu livecd, but you can choose normally any linux livecd.
Minimal hardware requirements (for the virtual machine).:
- 100GiB of storage
- 16GiB of RAM
BEFORE THE NEXT STEP, FORMAT AND MOUNT THE PARTITION YOU NEED IN /mnt/ism
Apart of the /boot/efi directory, all files and directories in /mnt/ism should be owned by the current user, not root.
We will start to configure ISM to setup the root path, a proper make option to reduce the compilation time, synchronize the ports.
So first , set the root path where we will install the new system:
ism settings -srp /mnt/ism
(Optional): Set an appropriate job number, adapted to your virtual machine capacity (replace by the correct number), for the host and the new system:
ism settings -ssmo -j8
ism settings -scmo -j8
Open first the ports in your new system:
ism port open https://github.com/Fulgurance/Firmwares-Main
ism port open https://github.com/Fulgurance/Utilities-Main
ism port open https://github.com/Fulgurance/DisplayManagers-Main
ism port open https://github.com/Fulgurance/Shells-Main
ism port open https://github.com/Fulgurance/InitSystems-Main
ism port open https://github.com/Fulgurance/SecurityLibraries-Main
ism port open https://github.com/Fulgurance/BaseLibraries-Main
ism port open https://github.com/Fulgurance/KdeSoftwares-Main
ism port open https://github.com/Fulgurance/WebBrowsers-Main
ism port open https://github.com/Fulgurance/ProgrammingLanguages-Main
ism port open https://github.com/Fulgurance/ProgrammingTools-Main
ism port open https://github.com/Fulgurance/MultimediaSoftwares-Main
ism port open https://github.com/Fulgurance/NetworkingLibraries-Main
ism port open https://github.com/Fulgurance/GraphicsLibraries-Main
ism port open https://github.com/Fulgurance/Bootloaders-Main
ism port open https://github.com/Fulgurance/Fonts-Main
ism port open https://github.com/Fulgurance/Kernels-Main
ism port open https://github.com/Fulgurance/XorgBase-Main
ism port open https://github.com/Fulgurance/FileSystems-Main
ism port open https://github.com/Fulgurance/MultimediaLibraries-Main
ism port open https://github.com/Fulgurance/SystemBase-Main
ism port open https://github.com/Fulgurance/Components-Main
ism port open https://github.com/Fulgurance/ArchitectureComponents-Main
ism port open https://github.com/Fulgurance/SecuritySoftwares-Main
ism port open https://github.com/Fulgurance/NetworkingSoftwares-Main
ism port open https://github.com/Fulgurance/Archivers-Main
ism port open https://github.com/Fulgurance/Xml-Main
ism port open https://github.com/Fulgurance/WindowManagers-Main
ism port open https://github.com/Fulgurance/VideoDrivers-Main
ism port open https://github.com/Fulgurance/TextEditors-Main
ism port open https://github.com/Fulgurance/Terminals-Main
ism port open https://github.com/Fulgurance/KdeBase-Main
ism port open https://github.com/Fulgurance/InputDrivers-Main
ism port open https://github.com/Fulgurance/InputDriverLibraries-Main
ism port open https://github.com/Fulgurance/Sgml-Main
ism port open https://github.com/Fulgurance/Shells-Extra
ism port open https://github.com/Fulgurance/DatabaseLibraries-Main
ism port open https://github.com/Fulgurance/OfficeSoftwares-Main
ism port open https://github.com/Fulgurance/SystemGroups-Main
ism port open https://github.com/Fulgurance/SystemUsers-Main
ism port open https://github.com/Fulgurance/LanguageComponents-Main
ism port open https://github.com/Fulgurance/SystemTimezones-Main
ism port open https://github.com/Fulgurance/WebBrowsers-Main
ism port open https://github.com/Fulgurance/VirtualizationSoftwares-Main
ism port open https://github.com/Fulgurance/QtLibraries-Main
Now we synchronize them to get the last updates:
ism port synchronize
ISM is now ready to use !
In this section, we will start now to install the cross toolchain and some temporary tools needed for the next steps.
Just before we install the minimal tools for a chroot, we need first to set the desire kernel, or ism will complain about an unselected unique dependency. Notice that will don't block you later to install an additional kernel source. That just set the main kernel for the system. You can substitute than command by the wanted kernel:
ism software kernel -sd selinux-kernel-sources
Now, start to install the minimal stuff for a chroot under the new system:
ism software install systembase
ISM will calculate all the dependencies we need , and just enter y for yes and then press enter to start the installation of the main base.
Then we can start to install a full plasma desktop environment.
The main configuration is managed by a virtual software called SystemConfiguration.
SystemConfiguration have as options other virtual softwares those manage the main components of the system. By this options, you can select the bootloader, kernel, init system, the used filesystems, languages, timezones, shells, loggers, crons, windowmanagers, desktop environments, display managers and graphical servers.
First for each components, we will select the options we need/want.
ism software bootloader -eo grub
ism software grub -eo efibootmgr
ism software init -eo openrc
ism software filesystem -eo dosfstools
ism software filesystem -eo btrfs-progs
ism software language -eo english
ism software timezone -eo europe
ism software europe -eo london
ism software shell -eo bash
ism software cron -eo cronie
ism software logger -eo sysklogd
ism software windowmanager -eo kwin
ism software desktopenvironment -eo plasma-desktop
ism software displaymanager -eo sddm
ism software graphicalserver -eo xwayland
ism software graphicalserver -eo wayland
ism software graphicalserver -eo xorg-server
ism software alsa-lib -eo elogind
ism software libxkbcommon -eo wayland
ism software modemmanager -eo elogind
ism software polkit -eo elogind
ism software udisks -eo btrfs-progs
ism software udisks -eo dbus
ism software udisks -eo dosfstools
ism software udisks -eo elogind
ism software gtk -eo wayland
ism software gtk -eo wayland-protocols
Now we can install the configuration we setup:
ism software install systemconfiguration
Now actually, you finished to install all needed softwares for the very first base of your new linux system.
We are ready now to perform a chroot under the generated system to prepare the last details to be able to boot our new system properly.
First, we will install in our new system ism. For that, first install the required dependencies:
ism software install crystal git
Mount the uefi partition:
sudo mount -t efivarfs none /mnt/ism/sys/firmware/efi/efivars
Then we can chroot under our system:
sudo chroot /mnt/ism
Now clone the ism repository and then install it:
git clone https://github.com/fulgurance/ism
mv ism /usr/share/ism
cd /usr/share/ism
crystal build --release Main.cr -o ism && cp ism /usr/bin/ism && rm ism && chmod u+s /usr/bin/ism && cd
The system is ready to setup the last things we need !
First under the chroot, we will install few softwares we will need.
ism software install nano \
iproute2 \
chrony \
dejavu-fonts-ttf \
alsa-utils \
sudo \
konsole \
upower \
tlp \
acpid \
power-profiles-daemon
Then configure the file /etc/fstab (this step depend how your partition the new system). The following text is just an example:
# <fs> <mountpoint> <type> <opts> <dump/pass>
/dev/sda1 /boot btrfs defaults 0 2
/dev/sda2 / btrfs defaults 0 1
Set the hostname in /etc/hostname:
hostname
Now we will enable the required services:
rc-update add acpid default
rc-update add tlp default
rc-update add sysklogd boot
rc-update add alsasound boot
rc-update add dhcpcd default
rc-update add wpa-supplicant default
rc-update add networkmanager default
rc-update add elogind boot
rc-update add dbus default
rc-update add display-manager default
rc-update add udev sysinit
rc-update add udev-trigger sysinit
rc-update add chronyd default
rc-update add power-profiles-daemon default
Then we will setup the bootloader. First we will need to configure the kernel.
cd /usr/src/main-kernel-sources && make menuconfig
When you are happy with the configuration, now you can start to build it (substitute the number by the appropriate one for your virtual machine):
make -j8 modules_prepare && make -j8 && make -j8 modules_install && make -j8 install
Now we will install the bootloader:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ISM
Setup the /etc/default/grub file according to your partition scheme. This is the minimal variables you will need to set (this is just an example):
GRUB_DISTRIBUTOR="ISM"
GRUB_CMDLINE_LINUX_DEFAULT="root=/dev/sda2 root_trim=yes selinux=0 enforcing=0 quiet"
GRUB_GFXPAYLOAD_LINUX=keep
Name the generated boot files and copy the current kernel config into /boot:
cd /boot && mv System.map System.map-linux-6.11.0 && mv vmlinuz vmlinuz-linux-6.11.0 && cp /usr/src/main-kernel-sources/.config /boot/config-linux-6.11.0
If it is required for your system, you can generate an initramfs, like to unlock encrypted filesystem for example:
With Ugrd (Recommended):
ism software install @bootloaders-main:ugrd
ugrd --force-out /boot/initramfs-6.11.0.cpio.xz
With Dracut:
ism software install @bootloaders-main:dracut
dracut --force --kver=6.11.0 /boot/initramfs-6.11.0.img
If it is required for your system, you can enable encryption via dmcrypt and lvm support at boot time:
rc-update add lvm boot
rc-update add dmcrypt boot
Then we can finally build the grub configuration:
grub-mkconfig -o /boot/grub/grub.cfg
And finally create a new user in the required groups to run sudo and use plasma properly:
useradd -m -G wheel,video,plugdev fulgurance
passwd fulgurance
And now before the reboot, just set the default display manager for your system in the file /etc/conf.d/display-manager:
DISPLAYMANAGER="sddm"
As you can see now, even the project is still in test, bit experimental at some part, it start to be really usable. I hope you will appreciate the work already done.
Enjoy !