Artikelkategori: 9
Skriven av mdkdio 2026-04-11 22:07
url: 
Redigerad av: mdkdio  2026-05-13 09:15:13

chroot - Skapa paket i en chroot miljö med en ren installation av 15.0/-current

Den här artikeln och dess instruktioner ska läsas som en ofärdig guide tills vidare...

/MDKDIO

 

******************************************************************

2026-04-11

chroot i Slackware Linux

Varför? Det finns ett flertal anledningar till varför man kan ha behov för chroot.
Bland annat för att:
- kompilera 32-bit paket i ett 64-bit multilib system
- kompilera -stable paket men i ett -current system
- kompilera och testa paket kompilerade för SBo, i ett "rent" system.

I den här guiden kommer vi att skapa en chroot direkt under /
och för enkelheten kalla det /chroot_folder och använda oss av slackware-15.0-install-dvd.iso

Ladda ner en Slackware installation för den arkitektur du önskar
Börja med en Slackware installations DVD. Ladda ner den från https://www.slackware.com/getslack/ via torrent
(eller om så önskas, direkt från valfri server direkt).

Det finns skript för att skapa chroot och installera Slackware i den mapp du skapar för detta.
Men jag går inte igenom detta i den här guiden.

Manuellt:
Skapa en mapp vilken kommer att innehålla din chroot
OBS! Sedan jag valt att skapa chroot i / (root), så krävs det att du är superuser (su)

mkdir /chroot_folder

Mount används för tillgång till installations ISO:n

mount -o loop slackware64-15.0-install-dev.iso /mnt/cdrom
cd /mnt/cdrom

Efter att du har fått tillgång till ISO filen så är det dags att installera de paket
du behöver i din chroot.
Följande kommando:
cd slackware64 (eller slackware om du valt 32-bit versionen)

installpkg --root /chroot_folder */*.t?z

När installationen är klar:

umount /mnt/cdrom

Dags att redigera lite filer som krävs för att det ska fungera:

/etc/fstab

Det finns ingen fstab fil i din installation, så den får du skapa själv...

nano /chroot_folder/etc/fstab

Lägg till följande:

# <file system> <mount point>   <type> <options>    <dump>  <pass>
tmpfs           /dev/shm        tmpfs   defaults     0       0
devpts          /dev/pts        devpts  noexec,nosuid,gid=tty,mode=0620 0   0
sysfs           /sys            sysfs   defaults     0       0
proc            /proc           proc    defaults     0       0

Entering the Chroot

Automatiskt mount

För att ha tillgång till ditt chroot permanent, lägg till följande i din dator (host system) /etc/fstab:

/dev        chroot_folder/dev       none bind,auto 0 0
/proc       chroot_folder/proc      none bind,auto 0 0
/sys        chroot_folder/sys       none bind,auto 0 0
/etc/resolv.conf chroot_folder/etc/resolv.conf none bind,auto 0 0

Notera att det finns egentligen ingen resolv.conf fil i din chroot.
Men det ska fungera i alla fall.

Starta nu om din dator, och när du åter har loggat in som vanligt.
Skriv förljande kommando för att mount din chroot mapp.

mount /chroot_folder

Manuellt:
Fungerar precis som vanligt, om du är osäker finns en guide här
https://docs.slackware.com/howtos:slackware_admin:how_to_chroot_from_media#volume_mounting

Nu är det dags att faktiskt utföra chroot, eller byta till chroot snarare...

chroot /chroot_folder /bin/bash

Det finns skript även för detta, men inget jag tar upp i den här guiden.

Uppdatera paket:
Om du skapat chroot med 15.0 finns det garanterat uppdateringar att installera :-)

Redigera /chroot_folder/etc/slackpkg/mirrors

Välj en server som du önskar... OBS! Välj INTE en för -current :-)

kör sedan slackpkg update, slackpkg install_new etc som vanligt...

När allt är klart, för att lämna din chroot miljö. Kort och gott, använd kombinationen:
 Ctrl+d
 
Extra info: Detta är viktigt om du valt Slackware 15.0

Sedan 15.0 släpptes så har ca-certificates uppdaterats ett flertal gånger och detta måste även du göra
i din chroot_folder

Enklast gör du detta med hjälp av att ha en till dator igång, så att du kan skriva av sökvägen/länken
till en server för att ladda ner senaste versionen av ca-certificates

För detta kan du t.ex. skapa en mapp under /chroot_folder/home/<user_name>/Downloads

alltså:
chroot /chroot_folder /bin/bash
mkdir home/<user_name>
mkdir home/<user_name>/Downloads
cd home/<user_name>/Downloads

Ladda nu ner senaste ca-certificates genom att använda wget
t.ex. OBS! Kontrollera vilken version ca-certificates har

wget https://slackware.uk/slackware/slackware64-15.0/patches/packages/ca-certificates-20260212-noarch-1_slack15.0.txz

uppdatera som vanligt, upgradepkg ca-certificates-20260212-noarch-1_slack15.0.txz

Nu ska det fungera igen, och du kan testa med att köra slackpkg update etc igen...

Om du får problem, ingen tillgång till internet...
Se till att ditt host system är anslutet till nätverket, kopiera sedan det systemets /etc/resolv.conf fil till
(i detta fall) /chroot_folder/etc/ ) OBS! Ctrl+d så du inte är i din /chroot_* miljö).

Om du fortfarande har problem med att ansluta till en "mirror".
Kontrollera din /etc/resolv.conf och se till så att du har en rad med nameserver. T.ex:
nameserver 192.168.1.1 (IP adressen för din router. Jämför med ditt host system's /etc/resolv.conf fil).

OM du istället för stable, valde att skapa en chroot med current installerad.
Och får fel rel till certificate inte fungerar, även om du har senaste ca-certificates paketet installerat.
Då kan du testa med:
update-ca-certificates -f
(Ingen garanti för att det fungerar, men det gjorde det för mig IAF)

Alternativt, kontrollera att du har nameserver i din /etc/resolv.conf fil

Slutligen:

Det finns ett flertal guider för hur man gör det jag beskriver ovan.
Men det finns också andra sätt att lösa detta med "build environment" för att skapa SlackBuild skript/paket

Men grunden är alltid den samma, använd ett rent system UTAN en massa extra paket installerade.

slackbuilds.org's FAQ har mer info
Samt vissa använder virituella maskiner (VM) med en ren installation av respektive version/arkitektur (32-bit, 64-bit, arch etc)

Det står var och en fritt med vad man väljer.

×