install slackware from rescue/install system

guest-slackware-console | slackstart

descr

this guide is specifically designed for preparing bare-metal install, as we would otherwise simply bootstrap slackware onto a vdisk

warning // lessons learned

you might want to use the very same slackware install medium version as the target system you’re intending to install. because otherwise, e.g. installing slackware 15.0 from slackware current (30 Oct 2025) brings

/dev/vda1 has unsupported feature(s): FEATURE_C12

note we’re using lilo here because we can - we have the same /proc as on the target system, we see the same disk

guest skeleton

guest=slackconsole

mkdir -p /data/guests/$guest/
cd /data/guests/$guest/

virsh list --all
#virsh destroy $guest
#virsh undefine $guest

virt-install --osinfo list | grep slackware

with VNC up and point to CDROM (not quite convenient as you’re limited to the vga console)

ls -lhF /data/ISO-IMAGES/slackware/slackware64-15.0-install-dvd.iso

virt-install --name $guest --vcpus 1 --ram 1024 \
    --disk path=/data/guests/$guest/$guest.qcow2,size=25,bus=virtio \
    --network bridge=virbr0,model=virtio \
    --graphics vnc --accelerate \
    --console pty,target_type=serial \
    --os-variant slackware15.0 \
    --cdrom /data/ISO-IMAGES/slackware/slackware64-15.0-install-dvd.iso

    # --osinfo detect=on,require=off

and reach the vga console

xtightvncviewer localhost:5900

–or– through PXE (much more convenient as you can point to the serial console)

virt-install --name $guest --vcpus 1 --ram 1024 \
    --disk path=/data/guests/$guest/$guest.qcow2,size=25,bus=virtio \
    --network bridge=virbr0,model=virtio \
    --graphics vnc --accelerate \
    --console pty,target_type=serial \
    --os-variant slackware15.0 \
    --pxe

and get to the serial console

# pxe debug
    xtightvncviewer localhost:5900

virsh console slackconsole

prepare the network with –either– dhcp

network
dhcpcd

–or– manually

ifconfig eth0 192.168.122.9 netmask 255.255.255.0
route add default gw 192.168.122.1
vi /etc/resolv.conf

nameserver 208.67.222.222

and check

ping 192.168.122.1
#ping opendns.com

now comes the slackstart suite instead of the casual setup menu

slackstart init

grab the scripts and sample conf file

wget https://pub.nethence.com/bin/slackstart/slackdisk.bash
wget https://pub.nethence.com/bin/slackstart/slacknet.bash
wget https://pub.nethence.com/bin/slackstart/slackprep.bash
wget https://pub.nethence.com/bin/slackstart/slackstart.conf
wget https://pub.nethence.com/bin/slackstart/slackstrap.bash
chmod +x slack*bash

disk & filesystem prep

    ./slackdisk.bash vda

bootstrap

vi slackstart.conf

#mirror=http://ftp6.gwdg.de/pub/linux/slackware/slackware64-15.0/
#mirror=http://ftp.tu-chemnitz.de/pub/linux/slackware/slackware64-15.0/
mirror=http://mirror.rol.ru/slackware/slackware64-15.0/

and proceed

# https://pub.nethence.com/bin/slackstart/slackstrap.bash
time ./slackstrap.bash lala

if this is a REISER4 file-system, let the guest eventually fsck itself at boot time

    wget https://lab.nethence.com/slackpkgs/libaal-1.0.7-x86_64-2_SBo.tgz
    wget https://lab.nethence.com/slackpkgs/reiser4progs-1.2.2-x86_64-2_SBo.tgz

    ls -lF /root/slackpkgs/libaal-*_SBo.tgz
    ls -lF /root/slackpkgs/reiser4progs-*_SBo.tgz

    installpkg --terse --root lala/ /root/slackpkgs/libaal-*_SBo.tgz
    installpkg --terse --root lala/ /root/slackpkgs/reiser4progs-*_SBo.tgz

linux kernel

since this is either bare-metal or a kvm guest, make sure you include a kernel in the disk image

# https://pub.nethence.com/bin/slackstart/slackstrap.bash
time ./slackstrap.bash lala kernel

local storage for package files

note in case you don’t have enough space into the ramdisk the trick is to use the target storage itself as for temporary package archives

cd lala/
ln -s ../slackstart.conf
time ../slackstrap.bash .
rm -f slackstart.conf
cd ../

same for kernel deployment (the kernel-firmware package is huge)

cd lala/
ln -s ../slackstart.conf
time ../slackstrap.bash . kernel
rm -f slackstart.conf
cd ../

make it bootable with lilo

tune the system and enable LILO (since we are on the system console, we do have the same disk drive name as the target system, which is not the case when we boostrap an image from elsewhere)

# not there yet
cat lala/etc/fstab

# should be there
ls -lF lala/sbin/lilo

    ./slackprep.bash lala

same here in case there’s no space left

    cd lala/
    ln -s ../slackstart.conf
    ../slackprep.bash .
    rm -f slackstart.conf
    cd ../

note in case this is a KVM guest, the script also works around the default slackware kernel that is not entirely virtio-aware, by defining disk and max-partitions

head -1 lala/etc/lilo.conf

==>

disk = /dev/vda bios=0x80 max-partitions=7

network setup

since this is either bare-metal or a kvm guest, make sure you include a kernel in the disk image

# https://pub.nethence.com/bin/slackstart/slackstrap.bash
time ./slackstrap.bash lala kernel

ready to go

umount -R lala/
sync
reboot

you’re ready to switch to serial console

virsh console slackconsole

clean-up

virsh destroy slackconsole
virsh undefine slackconsole
rm -rf /data/guests/slackconsole

troubleshooting

while running lilo

Fatal: Linux experimental device ... needs to be defined

==> define disk and max-partitions as shown above

resources

http://johnrey.es/index.php/2015/10/15/slackwarevirtio-no-boot-loader-installedfatal-linux-experimental-device-0xfc00-needs-to-be-defined/

HOME | GUIDES | PLAYBOOKS | LECTURES | LAB | CONTACT | HTML | CSS
Licensed as MIT