install slackware from rescue/install system

guest-slackware-console | slackstart

descrdescr

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

warning // lessons learnedwarning // 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

guest skeletonguest 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 suiteslackstart suite

grab the scripts and some conf sample

cd ~/
alias ll='ls -alkF'

wget http://192.168.122.1/bin/slackdisk.bash
wget http://192.168.122.1/bin/slackstrap.bash
wget http://192.168.122.1/bin/slackprep.bash
wget http://192.168.122.1/bin/slacknet.bash
wget http://192.168.122.1/bin/slackstart.conf

#wget http://pub.nethence.com/bin/slackstart/slackdisk.bash
#wget http://pub.nethence.com/bin/slackstart/slackstrap.bash
#wget http://pub.nethence.com/bin/slackstart/slackprep.bash
#wget http://pub.nethence.com/bin/slackstart/slacknet.bash
#wget http://pub.nethence.com/bin/slackstart/slackstart.conf

chmod +x slack*bash

vi slackstart.conf

...

note http is fine enough for internal network – as we don’t have ca bundles anyhow within the slackware install medium

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

disk & filesystem prep

./slackdisk.bash vda

bootstrap

time ./slackstrap.bash lala

# 1m11      from de mirror
# 0m46.877s from local kvm host

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 ../

don’t forget to add a kernel and some boot-blocks

time ./slackstrap.bash lala kernel

same here (the kernel-firmware package is huge)

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

make it bootable

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 setupnetwork setup

./slacknet.bash lala

ready to goready to go

umount lala/proc
umount lala/sys
umount lala/
sync
reboot

you’re ready to switch to serial console

virsh console slackconsole

clean-upclean-up

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

troubleshootingtroubleshooting

while running lilo

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

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

resourcesresources

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


HOME | GUIDES | LECTURES | LAB | SMTP HEALTH | HTML5 | CONTACT
Licensed under MIT