Artikelkategori: Kärnan
Skriven av mdkdio 2018-03-01 09:48
url: 
Redigerad av: mdkdio  2022-05-27 02:08:13

Efter installation - Byta till generic kernel

Varför ska man då göra detta?
Det fungerar ju utmärkt med att köra den kernel som installerades vid installationen av Slackware Linux...

Sant! Men vill man frigöra lite RAM minne så är det bra att kunna göra detta. Enkelt? Absolut!

Skillnaden mellan "huge" och "generic" kärna

Vad är skillnaden mellan en "standard/generic" kärna och den "stora/huge" kärnan som har installerats som standard kärna?
"Stora/huge" kärnan är i huvudsak en kärna som all hårdvaru drivrutiner inbyggd i kärnan,
vilket du kanske behöver för att lyckas med vid installationen av din dator.
Tänk: lagring och (kabelanslutna) nätverks drivrutiner, filsystem och krypterings drivrutiner, och en massa annat.
Alla dessa inbyggda drivrutiner resulterar i en stor kärn/kernel fil (därav namnet "stor/huge").
När denna kärna startar, kommer den att använde mycke av ditt RAM minne
(relativt menat... med 1 GB RAM kommer du inte att märka av några problem med ett par MB mindre RAM minne).

Standard/generic kärna å anda sidan, är en kärna som knappt har några inbyggda drivrutiner alls.
Alla drivrutiner kommer att läsas in i RAM minnet vid behov.
Detta gör din minnesanvändning av kärnan mindre och din uppstart process lite snabbare.
Den mindre storleken möjliggör användandet av initial RAM disk eller "initrd".
En initial RAMdisk krävs i vissa konfigurationer, t.ex. mjukvaru RAID, eller fullt krypterade hårddiskar.
För tillfället, behöver du bara komma ihåg att "stor/huge" kärna inte supporterar initial RAMdisk, men "standard/generic" kärna gör det.
Vi väljer att köra med maximal flexibilitet och använder en standard/generic kärna.

Hur gör man då?

Du behöver göra en initial RAM disk (kort: initrd). Initrd fungerar som ett temporärt root filsystem
under början av uppstarten av kärnan. Och hjälper till vid laddning (mount) av root systemet vid uppstart.

Kör följande som root:

/usr/share/mkinitrd/mkinitrd_command_generator.sh

Detta kommando kommer inte att göra något alls. det är endast för information, och kommer att ge information, och - beroende på vilken kärna du använder, din hårdvaru konfiguration, ditt root filsystem som du valde vid installationen av Slackware Linux - se ut ungefär som nedan:

"# mkinitrd_command_generator.sh revision 1.45
# This script will now make a recommendation about the command to use
# in case you require an initrd image to boot a kernel that does not
# have support for your storage or root filesystem built in
# (such as the Slackware "generic kernels").
# A suitable "mkinitrd" command will be: mkinitrd -c -k 4.4.118 -f ext4 -r /dev/sdb2 -m usb-storage:ehci-hcd:usbhid:ohci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd.gz
"

Kör skriptets föreslagna mkinitrd kommandolinje (som root) för att skapa en initrd.gz fil (image file).

Om du har installerat Lilo (standard bootloader för Slackware), så måste du göra ändingar i dess konfigurationsfil (/etc/lilo.conf) genom att lägga till följande sektion för din Slackware enl. följande:

"image = /boot/vmlinuz-generic-4.4.118
initrd = /boot/initrd.gz  # add this line so that lilo sees initrd.gz
root = /dev/sda1
label = Slackware
read-only
"

Egentligen, mkinitrd_command_generator.sh skriptet visar ett exempel på sektion som
kan läggas till i lilo.conf om du anger namnet på din generic kärna/kernel du skapar, på följande vis:

"# /usr/share/mkinitrd/mkinitrd_command_generator.sh -l /boot/vmlinuz-generic-4.4.118"

Viktigt är att lägga till en ny sektion i din lilo.conf fil i stället för att redigera en redan befintlig sektion. Ange ett unikt namn (t.ex. Slackware eller Slackware 14.2, eller varför inte Slack-4.4.118
Efter omstart kommer Lilo att ge dig två alternativ: Antingen starta ditt system med den nyligen gjorda kärnan, eller via standard, större kärnan (hugh) vilken du vet fungerar som den ska.

Efter att ha gjort ändringarna i /etc/lilo.conf filen och sparat dessa ändringar, köra följande kommando:

lilo -v

för att göra ändringarna permanenta. Starta sedan om ditt system...

Felsökning:

Om man får ev. felmeddelanden då man kör lilo -v
T.ex. /boot/boot.0800 exists - no boot sector backup copy made.
Så kommer inte din nya kärna att starta upp ditt system.
Orsak: Du har redan sen tidigare en generic kernel (du har gjort en uppgradering från t.ex. 4.4.112 till 4.4.118) konfigurerad.
Lösning:

Som root, ta bort eller döp om /boot/boot.0800 (personligen döper jag om denna fil).
Kör lilo -v på nytt (denna gång förhoppningsvis utan felmeddelanden).


Läs manualen för mkinitrd (man mkinitrd) för mer information.
Om du använder GRUB eller annan bootloader, gör ändringarna enligt respektive program du använder.
Om du använder standard (generic) kärna utan att skapa initrd.gz fil, kommer uppstart av ditt system ge problem (kernel panic)
(samma problem uppstår om du vid senare tillfälle uppgraderar kärnan, t.ex. via slackpkg update.
Så du behöver köra samma kommandon enligt denna guide igen).

Kom ihåg att redigera /etc/slackpkg/blacklist vid behov (för du har väl svartlistat kärnan som rekomenderat??)

×