1. About the kernel

The Linux kernel is in the kernel package. We use as few patches as possible to stay close to the vanilla kernel. We also use splashy instead of well known bootsplash. The kernel contains compiled-in support for most IDE controllers, but all low-level SCSI drivers are compiled as a module. If Frugalware’s kernel doesn’t contain built-in support for your controller, you can compile your own kernel. Don’t worry, it’s fairly simple.

  1. After setup is finished, before hitting ENTER to reboot, switch to tty2 by pressing Alt-F2 and press ENTER to get a shell.

  2. Change your root directory to /mnt/target:

    # chroot /mnt/target
  3. The source of your kernel (with additional patches applied) can be found at /usr/src/linux. So go to the /usr/src/linux directory and enter the configuration menu by typing make menuconfig. Inside it, select the driver you don’t want to compile as a module anymore, and exit from the menu with saving changes.

  4. Compile your kernel with the make command. This may take several minutes.

  5. Copy your new kernel to /boot by typing the following command:

    # cp /usr/src/linux/arch/$yourarch$/boot/bzImage /boot/vmlinuz

    On i686 and x86_64, $yourarch$ has to be replaced by x86.

2. Init scripts and services

In Frugalware, init is provided by systemd, its service files are always called something.service and they are located in /lib/systemd/system. They are used to setup the environment and manage system services.

The services are UNIX daemons that provide various functionality. The spectrum of their actions is very large. Synchronizing your system clock, running your webserver, running the virus scanner, all of these are services and they offer much much more.

In the following examples we will explain how to alter the running state of a given service. You will have to replace $service_name$ with the wanted service name, for example crond.service. As you will see the syntax is simple, and you may get more help looking at the systemctl manual doing:

$ man systemctl
Important
Later in this document you will see how to alter the configuration of these services so that they follow your needs. You should better learn how to control them, but don’t be afraid, the syntax is really simple, and you will learn it in less then a minute.

2.1. Controlling a service execution

Services can be started, restarted and stopped, so that you can control what your system has to offer.

To start a service, simply do:

# systemctl start $service_name$

To restart a service, simply do:

# systemctl restart $service_name$

To stop a service, simply do:

# systemctl stop $service_name$

As you can see, controlling a service execution is pretty simple.

2.2. Controlling a service execution on system boot

Controlling the automatic execution of services on system startup is not much more difficult.

To add a service for automatic execution on system startup, simply do:

# systemctl enable $service_name$

To delete a service from automatic execution on system startup, simply do:

# systemctl disable $service_name$

To check if the service is enabled, simply do:

# systemctl is-enabled $service_name$

3. System boot, targets

If you don’t pass any extra init=/path/to/init parameters to it, the kernel will start /sbin/init as the final step of the kernel boot sequence. According to /etc/systemd/system/default.target, init will run:

  1. each service file required by basic.target

  2. each service file required by the default target. This is set to graphical.target by default. Here is the list of available targets:

halt.target = halt
emergency.target = similar to 'init=/bin/sh'
rescue.target = single user mode
multi-user.target = multiuser mode (text mode)
graphical.target = multiuser mode, X11 with KDM/GDM/XDM (default Frugalware target)
reboot.target = reboot
Note
emergency.target has the advantage that you can boot the system without a reboot later.

If X11 is configured, prefdm.service will start one of the desktop managers, as configured in /etc/sysconfig/desktop.

4. GRUB gfxmenu

Frugalware comes with a nice graphical grub menu (thanks to SuSE’s gfxmenu developers). If you don’t like it, you can disable it by commenting out the gfxmenu initialization line in /boot/grub/menu.lst.

So for example:

Before: gfxmenu (hd0,5)/boot/grub/message
After: #gfxmenu (hd0,5)/boot/grub/message

5. Splashy

Frugalware uses splashy to display a nice splash screen and a progress bar instead of text messages during the boot procedure. Splashy is completely user-space, so there is no need for patching the kernel. If you dislike it or want to switch it off for whatever reason add nosplashy for your kernel parameters in /boot/grub/menu.lst. For example:

kernel (hd0,2)/vmlinuz root=/dev/hda5 ro quiet nosplashy