You are not logged in.
Installation
Pre-installation
Live ISO download and storage media preparation
Go on Devuan GNU+Linux download page and download the stable minimal-live ISO file devuan_{codename}_{version}_{architecture}_minimal-live.iso.
If you're using a Linux machine, use the following technique to write the ISO on a storage media (CD/DVD or USB drive):
In CD or DVD:
wodim dev=/dev/sr0 -eject devuan_{codename}_{version}_{architecture}_minimal-live.iso
In USB drive:
dd if=devuan_{codename}_{version}_{architecture}_minimal-live.iso of=/dev/sdX bs=1M && sync
Booting into the live ISO
Remember to disable Secure Boot from the UEFI Settings to install and use the distro.
If you are unable to boot after disabling Secure Boot, make sure that your storage configuration is set to AHCI.
Login
On the live ISO you have two possibilities regarding login:
User devuan, password devuan (all important commands must be prefixed with sudo).
User root, password toor.
Set the console keyboard layout
The default console keymap is US. Available layouts can be listed with:
ls -R /usr/share/keymaps/i386/
To modify the layout, append a corresponding file name to loadkeys, omitting path and file extension. For example, to set a German keyboard layout:
loadkeys de-latin1
Console fonts are located in /usr/share/consolefonts/ and can likewise be set with setfont.
Connecting to the Internet
Configure your network interfaces with "setnet.sh":
setnet.sh
Partition the disks
You need to figure out which disk you want to install Devuan. lsblk is a command that lists the available disks, and usually one invocation of it is enough to figure out which disk you have to work on.
Partition your storage devices with cfdisk (this guide will assume the disk is /dev/sdx), the partition numbers and order are at your discretion:
If you only need to modify the partition table of an existing disk (e.g. dual booting), the command to be issued is:
cfdisk /dev/sdx
If, on the other hand, you need to reinitialize the disk in question (no partition table), the command to issue is:
cfdisk -z /dev/sdx
The cfdisk partition manager will open. If you are creating the partition table now and are on UEFI or a Legacy BIOS that supports booting from GPT disks, choose gpt; otherwise choose msdos.
Create the following partitions:
If you are booting from a legacy BIOS and have chosen a GPT partition table, the first partition must be of type BIOS boot and of size 200 MB; In case you are booting from a legacy BIOS which only boots from MBR (msdos) partition tables, then there is no need to create this partition.
If you don't already have it, add the boot partition; it must be about 512 MB and preferably of EFI System type.
Add a partition for the root file system (and leave it flagged as Linux filesystem).
If you want, you can add a swap partition by creating it and flagging it as Linux swap.
In a GPT partition table, pre-flagging the boot partition as ESP even if you are on Legacy BIOS is useful to make a possible conversion from Legacy BIOS to UEFI easier.
Confirm the changes by issuing the Write command; confirm by typing yes and then quit the partition manager by issuing the command Quit.
For ease of reference:
/dev/sdx
- /dev/sdx1 -> EFI System
- /dev/sdx2 -> Linux filesystem
- /dev/sdx3 -> Linux swap -> Optional
Format the partitions
The boot partition will be /dev/sdx1 so do (only on EFI System):
mkfs.fat -F 32 /dev/sdx1
The Linux root partition will be /dev/sdx2 so do:
mkfs.ext4 -L ROOT /dev/sdx2
The swap partition will be on /dev/sdx3, so do (If created):
mkswap -L SWAP /dev/sdx3
The -L switch assigns labels to the partitions, which helps referring to them later through /dev/disk/by-label without having to remember their numbers.
Mount the file systems
If you have created a swap partition, activate it with the command:
swapon /dev/disk/by-label/SWAP
Mount the root filesystem on /mnt:
mount /dev/disk/by-label/ROOT /mnt
Create the directory where you can mount the boot partition filesystem:
mkdir -p /mnt/boot/efi
Mount the boot partition file system:
mount /dev/disk/by-label/BOOT /mnt/boot/efi
Installation
Install a base system with debootstrap:
debootstrap --arch=amd64 <codename> /mnt http://deb.devuan.org/merged
Note: Choose a codename available in /usr/share/debootstrap/scripts/.
Configure the system
Mount the pseudo-filesystems needed for a chroot:
for i in proc sys dev{,/pts} ; do mount --bind /$i /mnt/$i ; done
Copy the DNS configuration into the new root so that we can download new packages inside the chroot:
cp /etc/resolv.conf /mnt/etc/
Change root into the new system:
chroot /mnt /bin/su -
Swap file creation (alternative)
As an alternative to creating an entire partition, a swap file offers the ability to vary its size on-the-fly, and is more easily removed altogether.
Use dd to create a swap file the size of your choosing. For example, creating a 4 GB swap file:
dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
Set the right permissions:
chmod 600 /swapfile
After creating the correctly sized file, format it to swap:
mkswap /swapfile
Activate the swap file:
swapon /swapfile
Configure fstab
The fstab file can be automatically generated from currently mounted filesystems by printing the file /proc/self/mounts:
grep '^/dev' /proc/self/mounts > /etc/fstab
Remove lines in /etc/fstab that refer to dev, proc, pts and sys.
Replace references to /dev/sdx with their respective UUID, which can be found by running blkid. Referring to filesystems by their UUID guarantees they will be found even if they are assigned a different name at a later time. In some situations, such as booting from USB, this is absolutely essential. In other situations, disks will always have the same name unless drives are physically added or removed. Therefore, this step may not be strictly necessary, but is almost always recommended.
The information from blkid results in the following /etc/fstab:
# <device> <dir> <type> <options> <dump> <fsck>
UUID=xxxx[...] /boot/efi fat defaults 0 2
UUID=xxxx[...] / ext4 defaults 0 1
Add an entry for the swap file (If you're set it):
# <device> <dir> <type> <options> <dump> <fsck>
/swapfile none swap defaults 0 0
Also add an entry to mount /tmp in RAM:
# <device> <dir> <type> <options> <dump> <fsck>
tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
Editing the software repositories
The /etc/apt/sources.list is the main sources configuration file. If you need the contrib and non-free components, add contrib non-free after main. You may also want to add some additional sources, for example source packages and security updates (the latter only in stable releases):
deb http://deb.devuan.org/merged <codename> main contrib non-free
deb-src [url]http://deb.devuan.org/merged <codename> main contrib non-free
deb [url]http://deb.devuan.org/merged <codename>-security main contrib non-free
deb-src http://deb.devuan.org/merged <codename>-security main contrib non-free
deb http://deb.devuan.org/merged <codename>-updates main contrib non-free
deb-src http://deb.devuan.org/merged <codename>-updates main contrib non-free
Make sure to run apt update after you have made changes to the sources list.
Microcode package installation for AMD and Intel CPUs
To install the latest microcode package:
apt install amd64-microcode <-- AMD CPUs
apt install intel-microcode <-- Intel CPUs
The boot loader is responsible for loading the updated microcode.
Install the Linux Kernel
To install the latest Linux kernel, run this command:
apt install linux-headers-amd64 linux-image-amd64
If your system needs firmware blobs that are not present in the Linux kernel (for example, to get network cards to work properly), you can install the firmware-linux package:
apt install firmware-linux
Install a init system
Install the init system of your choice:
OpenRC:
apt install elogind libpam-elogind openrc orphan-sysvinit-scripts
runit:
apt install elogind libpam-elogind orphan-sysvinit-scripts runit runit-run
sysvinit:
apt install libpam-elogind orphan-sysvinit-scripts sysvinit-core
Time zone
Install the time synchronization service and add it to the list of startup services:
apt install chrony
OpenRC:
rc-update add chronyd default
runit:
ln -s /etc/service/chronyd /etc/runit/runsvdir/default
sysvinit:
?
Set the time zone:
dpkg-reconfigure tzdata
Localization
To configure your locale settings to use a other language than English, install the locales support package and configure it:
apt install locales
dpkg-reconfigure locales
To configure your keyboard, install the console-setup support package and configure it:
apt install console-setup
dpkg-reconfigure keyboard-configuration
If you have chosen OpenRC as your init system, edit the /etc/conf.d/keymaps file:
keymap="en" <-- Your keyboard layout
windowkeys="YES" <-- Type YES if you are using a common Windows keyboard
If, on the other hand, you have chosen runit as your init system, add permanently the console font and keymap preferences in /etc/vconsole.conf:
FONT=lat1-16
FONT_MAP=8859-1_to_uni
KEYMAP=de-latin1
Choose a hostname for your machine
Edit /etc/hostname:
myhostname
Edit /etc/hosts:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname
If you have chosen OpenRC as your init system, edit /etc/conf.d/hostname:
# Set to the hostname of this machine
hostname="myhostname"
Boot loader configuration
Install the packages needed to install and configure GRUB:
apt install grub-pc <-- If you're using BIOS
apt install grub-efi-amd64 <-- If you're using UEFI
apt install ntfs-3g os-prober <-- If you're dual booting
Install GRUB:
If you're on BIOS:
dpkg-reconfigure grub-pc
If you're on UEFI:
dpkg-reconfigure grub-efi-amd64
If you are dualbooting with Windows or any other operating system, you have to make sure GRUB will call os-prober; to do so, uncomment this line on the configuration file at /etc/default/grub:
GRUB_DISABLE_OS_PROBER=false
Generate the GRUB configuration file:
update-grub
Install a network manager
Install a DHCP client together with NetworkManager and add it to the list of startup services:
apt install dhcpcd5 network-manager
OpenRC:
rc-update add NetworkManager default
runit:
ln -s /etc/service/NetworkManager /etc/runit/runsvdir/default
sysvinit:
?
Installing a system logger
Install syslog-ng and add it to the list of startup services:
apt install syslog-ng
OpenRC:
rc-update add syslog-ng default
runit:
ln -s /etc/service/syslog-ng /etc/runit/runsvdir/default
sysvinit:
?
User configuration
Change the root password:
passwd
After that, create a user that you will use for your normal operations:
adduser username
Set a password for this new user:
passwd username
Exiting the chroot
You can exit the chroot simply by exiting the interactive shell, like so:
exit
Unmounting the partitions
You can unmount all the partitions you previously mounted by using umount -R /mnt.
Reboot
Issue the reboot command.
Remember to remove the installation medium.
Last edited by k3yw0ow (2022-03-07 00:14:47)
Offline
This guide recommends you the use of balenaEtcher or Rufus to write the ISO on a storage media (CD/DVD/USB).
Debian do not recommend those tools and I have seen quite a few problem threads over at forums.debian.net caused by Rufus not burning images correctly.
The recommended technique is
cp devuan.iso /dev/sdX ; sync
Reference: https://www.debian.org/CD/faq/index.en.html#write-usb
If you are booting from a legacy BIOS and have chosen a GPT partition table, the first partition must be of type BIOS boot and of size 1 MB [...]
- /dev/sda1 -> BIOS boot partition -> 256 MB
Why have you recommended two different sizes for the BIOS boot partition? I use sectors 34-2047 because they should be free in any correctly-aligned disk. Note that the BIOS boot partition should *not* have a filesystem applied.
Configure fstab
What about the swap line? You seem to have missed that.
The fstab file can be automatically generated from currently mounted filesystems by copying the file /proc/mounts
Simpler version:
grep '^/dev' /proc/self/mounts > /etc/fstab
^ That will only copy lines starting with /dev to /etc/fstab. Note that /proc/mounts is a symlink to /proc/self/mounts so it's probably best to use the latter.
And I still think you should at least mention the existence of genfstab(8) for people who are used to installing Arch and don't want to manually edit fstab. The same goes for arch-chroot(8) as an alternative to manual mounting & chrooting.
You may also want to add some additional sources, for example source packages and security updates
As I mentioned in your last thread security updates should not be considered optional. They are absolutely essential for users of the stable release.
If you are dual booting with Windows, edit the third line of the /etc/adjtime file to UTC or LOCAL to determines whether the system will interpret the hardware clock as being set UTC format to respective local time.
Windows should *always* be set to UTC. There is no reason whatsoever to force Devuan to use localtime. See my ArchWiki link in your last thread for the Registry hack needed to correct Windows' time standard.
● If you're on UEFI/GPT:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
The --target option is irrelevant in Devuan because it supplies separate GRUB packages for UEFI & non-UEFI systems. The UEFI version of GRUB presumes that the EFI system partition is mounted under /boot/efi and the ID defaults to "Devuan" for SecureBoot to work.
And anyway it's better to use dpkg to set the bootloader options so that they are saved in the debconf database and re-applied after the bootloader package is updated.
So for non-UEFI systems use
apt install grub-pc
dpkg-reconfigure grub-pc
And for UEFI systems use
apt install grub-efi-amd64
dpkg-reconfigure grub-efi-amd64
There is also a grub-efi-ia32 package for machines with 32-bit UEFI firmware.
If you are going to use a wireless network card, you will also need wpasupplicant:
apt install wpasupplicant
iwd is better than wpasupplicant but it does need the init script supplied by the orphan-sysvinit-scripts package.
Other useful groups are disk, games, input, lp, optical, rfkill and storage. The audio and video groups are useful to communicate to audio and video related hardware.
elogind should handle all permissions for access to input, audio and video hardware. Adding users to those groups should be considered a security risk and so is probably not advisable.
The disk group membership is root-equivalent, please do not recommend that.
The games group is for games to record high scores, users are not supposed to be added to that group at all.
Configure sudo so that it grants users of the wheel group the ability to run commands as root
Devuan's sudo is already configured to grant access to users in the sudo group so why not just use that instead?
And finally can you please use code tags to display commands rather than italics? It would make the guide easier to follow. The board also offers list tags that you can use instead of copy & pasting bullet points manually.
Brianna Ghey — Rest In Power
Offline
Go on the Devuan GNU+Linux download page and download the stable minimal-live ISO file devuan_{codename}_{version}_{architecture}_minimal-live.iso.
Wouldn't it just be easier to use refracta installer which, I believe, is included in the 'live' image - you seem to be creating your installation as if from a 'net install' image, to my mind(?).
Last edited by Camtaf (2022-03-04 18:28:33)
Offline
k3yw0ow wrote:This guide recommends you the use of balenaEtcher or Rufus to write the ISO on a storage media (CD/DVD/USB).
Debian do not recommend those tools and I have seen quite a few problem threads over at forums.debian.net caused by Rufus not burning images correctly.
The recommended technique is
cp devuan.iso /dev/sdX ; sync
Reference: https://www.debian.org/CD/faq/index.en.html#write-usb
Fixed
k3yw0ow wrote:If you are booting from a legacy BIOS and have chosen a GPT partition table, the first partition must be of type BIOS boot and of size 1 MB [...]
- /dev/sda1 -> BIOS boot partition -> 256 MB
Why have you recommended two different sizes for the BIOS boot partition? I use sectors 34-2047 because they should be free in any correctly-aligned disk. Note that the BIOS boot partition should *not* have a filesystem applied.
Fixed
k3yw0ow wrote:Configure fstab
What about the swap line? You seem to have missed that.
Fixed
k3yw0ow wrote:The fstab file can be automatically generated from currently mounted filesystems by copying the file /proc/mounts
Simpler version:
grep '^/dev' /proc/self/mounts > /etc/fstab
^ That will only copy lines starting with /dev to /etc/fstab. Note that /proc/mounts is a symlink to /proc/self/mounts so it's probably best to use the latter.
And I still think you should at least mention the existence of genfstab(8) for people who are used to installing Arch and don't want to manually edit fstab. The same goes for arch-chroot(8) as an alternative to manual mounting & chrooting.
In progress
k3yw0ow wrote:You may also want to add some additional sources, for example source packages and security updates
As I mentioned in your last thread security updates should not be considered optional. They are absolutely essential for users of the stable release.
Fixed
k3yw0ow wrote:If you are dual booting with Windows, edit the third line of the /etc/adjtime file to UTC or LOCAL to determines whether the system will interpret the hardware clock as being set UTC format to respective local time.
Windows should *always* be set to UTC. There is no reason whatsoever to force Devuan to use localtime. See my ArchWiki link in your last thread for the Registry hack needed to correct Windows' time standard.
Fixed
k3yw0ow wrote:
If you're on UEFI/GPT:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
The --target option is irrelevant in Devuan because it supplies separate GRUB packages for UEFI & non-UEFI systems. The UEFI version of GRUB presumes that the EFI system partition is mounted under /boot/efi and the ID defaults to "Devuan" for SecureBoot to work.
And anyway it's better to use dpkg to set the bootloader options so that they are saved in the debconf database and re-applied after the bootloader package is updated.
So for non-UEFI systems use
apt install grub-pc dpkg-reconfigure grub-pc
And for UEFI systems use
apt install grub-efi-amd64 dpkg-reconfigure grub-efi-amd64
There is also a grub-efi-ia32 package for machines with 32-bit UEFI firmware.
Fixed
k3yw0ow wrote:If you are going to use a wireless network card, you will also need wpasupplicant:
apt install wpasupplicant
iwd is better than wpasupplicant but it does need the init script supplied by the orphan-sysvinit-scripts package.
Fixed
k3yw0ow wrote:Other useful groups are disk, games, input, lp, optical, rfkill and storage. The audio and video groups are useful to communicate to audio and video related hardware.
elogind should handle all permissions for access to input, audio and video hardware. Adding users to those groups should be considered a security risk and so is probably not advisable.
The disk group membership is root-equivalent, please do not recommend that.
The games group is for games to record high scores, users are not supposed to be added to that group at all.
Fixed
k3yw0ow wrote:Configure sudo so that it grants users of the wheel group the ability to run commands as root
Devuan's sudo is already configured to grant access to users in the sudo group so why not just use that instead?
And finally can you please use code tags to display commands rather than italics? It would make the guide easier to follow. The board also offers list tags that you can use instead of copy & pasting bullet points manually.
Fixed
Offline
Go on the Devuan GNU+Linux download page and download the stable minimal-live ISO file devuan_{codename}_{version}_{architecture}_minimal-live.iso.
Wouldn't it just be easier to use refracta installer which, I believe, is included in the 'live' image - you seem to be creating your installation as if from a 'net install' image, to my mind(?).
Yep, I know that use refracta installer is an easy way, but I chose to create and follow a path close to Arch, Gentoo and others.
Offline
Head_on_a_Stick wrote:This guide recommends you the use of balenaEtcher or Rufus to write the ISO on a storage media (CD/DVD/USB).
Debian do not recommend those tools and I have seen quite a few problem threads over at forums.debian.net caused by Rufus not burning images correctly.
The recommended technique is
cp devuan.iso /dev/sdX ; sync
Reference: https://www.debian.org/CD/faq/index.en.html#write-usb
I have never seen that command recommended at Devuan and have always used the dd command. These are the methods recommended on the Devuan website:
Writing an image to a CD/DVD or USB drive
Images can be written to a CD or DVD using wodim.
user@hostname:~$ wodim dev=/dev/sr0 -eject filename.iso
All Devuan ISO images are hybrid ISOs and may be written to a USB drive using dd.
root@hostname:~# dd if=filename.iso of=/dev/sdX bs=1M && sync
Online
Both dd and cp use the same system call to burn the image.
Another option:
cat devuan.iso > /dev/sdX ; sync
Brianna Ghey — Rest In Power
Offline
If you install runit, you only get run scripts for the gettys, and also for openssh-server if you install that. No setup or linking is needed.
There are run scripts available from a couple of locations outside the repository. They can be added after the install. Basic procedure is to copy the script dir for a service to /etc/sv/, stop the init script, and then run
update-service --add /etc/sv/<service>
Where <service> is the name of the run script directory and is the same name as the init script.
Offline
k3yw0ow wrote:Head_on_a_Stick wrote:This guide recommends you the use of balenaEtcher or Rufus to write the ISO on a storage media (CD/DVD/USB).
Debian do not recommend those tools and I have seen quite a few problem threads over at forums.debian.net caused by Rufus not burning images correctly.
The recommended technique is
cp devuan.iso /dev/sdX ; sync
Reference: https://www.debian.org/CD/faq/index.en.html#write-usb
I have never seen that command recommended at Devuan and have always used the dd command. These are the methods recommended on the Devuan website:
Writing an image to a CD/DVD or USB drive
Images can be written to a CD or DVD using wodim.
user@hostname:~$ wodim dev=/dev/sr0 -eject filename.iso
All Devuan ISO images are hybrid ISOs and may be written to a USB drive using dd.
root@hostname:~# dd if=filename.iso of=/dev/sdX bs=1M && sync
Well, then I will adopt the method advised by Devuan.
Offline
Both dd and cp use the same system call to burn the image.
Another option:
cat devuan.iso > /dev/sdX ; sync
Thanks for sharing me this site, it will be very useful.
Offline
If you install runit, you only get run scripts for the gettys, and also for openssh-server if you install that. No setup or linking is needed.
There are run scripts available from a couple of locations outside the repository. They can be added after the install. Basic procedure is to copy the script dir for a service to /etc/sv/, stop the init script, and then run
update-service --add /etc/sv/<service>
Where <service> is the name of the run script directory and is the same name as the init script.
Great, I will research more about runit. Could also explain how sysvinit service management works?
Offline
Great, I will research more about runit. Could also explain how sysvinit service management works?
No, I can't, and in my limited understanding, I thought sysvinit did not do service management, and that's why distros switched to a different init system.
I know this much:
service <service-name> start|stop|restart
or
/etc/init.d/<service-name> start|stop|restart
Offline
It all depends on what you include in your sysvinit concept.
The core level for sysvinit is the configuration expressed in /etc/inittab, which declares a range of different configuration of "managed services" depending on the runlevel.
The operational runlevels typically include running /etc/rc which technicaly is a core level one-shot service for starting other self-managed services via their control programs or scripts typically residing in /etc/init.d. Those control programs or scripts are expected to implement some few command line commands such as "start", "status" and "stop".
If you have sysvinit installed, this is well documented in e.g. man init, man runlevel and man insserv and their related man pages.
It may be worth to point out that the service control at runlevel transitions nowadays uses dependency driven parallelism, and the sequential boot of early millenium is abandoned. See e.g. man startpar for details.
Offline