Köra endast linuxkärnan + GNU program

Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
Kategoriregler
Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
Heretic
Inlägg: 170
Blev medlem: 08 mar 2007, 00:25

Re: Köra endast linuxkärnan + GNU program

Inlägg av Heretic »

Konservburk skrev:
Heretic skrev:Så här ser det ut om jag kört make install, root eller vanligt

http://pastebin.com/LUDmYRsL
Vad har du för rättigheter på /usr/local/lib/grub/i386-pc/ ? Är den monterad read-only?
http://pastebin.com/xR6YYqL2
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Jag ser nu att det bara var något med språkfiler som stulade när du körde make install med root-rättigheter. Det viktiga borde redan blivit installerat under /usr/local/. Kolla i /usr/local/sbin/ och se om du hittar grub-install eller något i den stilen. Jag har som sagt inte så bra koll på hur det fungerar med nya grub.
Heretic
Inlägg: 170
Blev medlem: 08 mar 2007, 00:25

Re: Köra endast linuxkärnan + GNU program

Inlägg av Heretic »

Konservburk skrev:Jag ser nu att det bara var något med språkfiler som stulade när du körde make install med root-rättigheter. Det viktiga borde redan blivit installerat under /usr/local/. Kolla i /usr/local/sbin/ och se om du hittar grub-install eller något i den stilen. Jag har som sagt inte så bra koll på hur det fungerar med nya grub.

Men kan jag inte få tag på gamla GRUB?
Jo, jag hittar grub-install.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Heretic skrev:Men kan jag inte få tag på gamla GRUB?
sudo apt-get install grub ger dig gamla grub, till skillnad från sudo apt-get install grub-pc som ger dig nya grub.

Vill du kompilera från källkod så har du gamla grub här:
ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz

...och nya grub här:
ftp://alpha.gnu.org/gnu/grub/grub-1.98.tar.gz
Heretic
Inlägg: 170
Blev medlem: 08 mar 2007, 00:25

Re: Köra endast linuxkärnan + GNU program

Inlägg av Heretic »

Konservburk skrev:
Heretic skrev:Men kan jag inte få tag på gamla GRUB?
sudo apt-get install grub ger dig gamla grub, till skillnad från sudo apt-get install grub-pc som ger dig nya grub.

Vill du kompilera från källkod så har du gamla grub här:
ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz

...och nya grub här:
ftp://alpha.gnu.org/gnu/grub/grub-1.98.tar.gz
Men...varför gjorde jag inte sudo apt-get install grub på en gång :P ::) ;D
Så nu har jag installerat det. Vart ska jag hämta grub nu?

Ursäkta om det tog lite tid med svara, håller på att kolsyra öl :)
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Heretic skrev:Men...varför gjorde jag inte sudo apt-get install grub på en gång :P ::) ;D
Så nu har jag installerat det. Vart ska jag hämta grub nu?
Jag utgår ifrån att ditt USB-minne är partitonerat med 1 partiton och att denna partition har vanlig FAT som filsystem. Då ska du först montera USB-minnet och lägga in några stage-filer som grub behöver:

Kod: Markera allt

sudo mount /dev/sdb1 /mnt
sudo mkdir -p /mnt/boot/grub
sudo cp /boot/grub/stage* /boot/grub/fat_stage1_5 /mnt/boot/grub/
sudo umount /mnt
Du måste förstås byta ut sdb1 mot vad som stämmer för dig.

Sedan startar du grub:

Kod: Markera allt

sudo grub
Väl inne i grub så använder du root-kommandot för att ange vilken partition du tänker arbeta med:

Kod: Markera allt

root (hd1,0)
I mitt fall första partitionen 0 på andra disken 1, dvs sdb1. Det kan förstås vara annorlunda för dig. Sedan är det bara att installera boot-koden på rätt disk:

Kod: Markera allt

setup (hd1)
För mig är USB-minnet den andra disken 1, dvs sdb. Det kan åter igen vara annorlunda för dig. Avsluta slutligen grub:

Kod: Markera allt

quit
Nu återstår bara att ställa in så att bios bootar från USB-minnet.
Heretic
Inlägg: 170
Blev medlem: 08 mar 2007, 00:25

Re: Köra endast linuxkärnan + GNU program

Inlägg av Heretic »

Tackar. Jag ska göra det imorgon. Sen är det bara busybox som väntar :)
Men jag förstog inte direkt hur man gjorde så all rörlig data kunde köras på ram?
Jag har ext4 på mitt USB.
cp: kan inte ta status på "/boot/grub/stage*": Filen eller katalogen finns inte
cp: kan inte ta status på "/boot/grub/fat_stage1_5": Filen eller katalogen finns inte
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Heretic skrev:
cp: kan inte ta status på "/boot/grub/stage*": Filen eller katalogen finns inte
cp: kan inte ta status på "/boot/grub/fat_stage1_5": Filen eller katalogen finns inte
Det där var mitt fel. Alla stage-filerna ligger i /usr/lib/grub/i386-pc/, det är bara jag som lagt kopior i min /boot/grub/ sedan tidigare.

EDIT: Du ska förstås ha e2fs_stage1_5 istället för fat_stage1_5 om du har ext4 istället för fat som filsystem.

Kod: Markera allt

sudo cp /usr/lib/grub/i386-pc/stage[12] /usr/lib/grub/i386-pc/e2fs_stage1_5 /mnt/boot/grub/
Heretic skrev:Men jag förstog inte direkt hur man gjorde så all rörlig data kunde köras på ram?
Du skapar en root-filsystemstruktur som du vet fungerar med chroot. Sedan packar du ihop den som initramfs, antingen löst och pekar på den från boot-loadern, eller annars inbakad direkt i kärnavbilden. Vi tar detaljerna när du har fått iordning på grub och busybox.
Heretic
Inlägg: 170
Blev medlem: 08 mar 2007, 00:25

Re: Köra endast linuxkärnan + GNU program

Inlägg av Heretic »

Så där ja!
Nu har jag kopierat över och jag har kvar linuxkärnan. Vad är nästa steg?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Heretic skrev:Så där ja!
Nu har jag kopierat över och jag har kvar linuxkärnan. Vad är nästa steg?
Har du testat så att USB-minnet går att boota nu? Alltså så att du kommer så långt som till grub?

Då är det väl dags för att få till busybox. Jag skulle kompilera på egen hand eftersom det ger en hel drös extra valmöjligheter. Annars kan du utgå från den färdigkompilerade busybox som redan följer med ubuntu. Typ så här:

Kod: Markera allt

mkdir -p initramfs/bin
cp /bin/busybox initramfs/bin/
sudo chroot initramfs busybox sh
Heretic
Inlägg: 170
Blev medlem: 08 mar 2007, 00:25

Re: Köra endast linuxkärnan + GNU program

Inlägg av Heretic »

Jag har ju bara en mapp i /media/disk.

/media/disk/boot/grub
Där ligger e2fs_stage1_5, stage1 och stage2

Ska inte linuxkärnan med?

Ska jag skapa en mapp som ser ut så här: /media/disk/initramfs/bin ?
Kopiera över BB till bin/ och sedan chroot initramfs och busybox och sh ?

Vad menas med -p?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Heretic skrev:Jag har ju bara en mapp i /media/disk.

/media/disk/boot/grub
Där ligger e2fs_stage1_5, stage1 och stage2

Ska inte linuxkärnan med?
Jo, kärnan ska med tids nog. Men du kan inte boota kärnan utan ett root-filsystem. Det är därför du behöver få till det där med busybox och initramfs först.
Heretic skrev:Ska jag skapa en mapp som ser ut så här: /media/disk/initramfs/bin ?
Kopiera över BB till bin/ och sedan chroot initramfs och busybox och sh ?
Typ så. Men du behöver inte lägga initramfs-katalogen på USB-minnet om du inte vill.
Heretic skrev:Vad menas med -p?
Flaggan -p ser till så att alla kataloger i hela sökvägen skapas. Istället för att köra mkdir a; mkdir a/b; mkdir a/b/c så räcker det med mkdir -p a/b/c
Heretic
Inlägg: 170
Blev medlem: 08 mar 2007, 00:25

Re: Köra endast linuxkärnan + GNU program

Inlägg av Heretic »

Kod: Markera allt

root@desktop-GA-7VAXFS:/media/disk/initramfs/bin# sudo chroot initramfs busybox sh
chroot: kan inte ändra rotkatalog till initramfs: Filen eller katalogen finns inte
root@desktop-GA-7VAXFS:/media/disk/initramfs/bin# 
Så jag förstår direkt inte varför det blir så här. Jag har fört över busybox till /media/disk/initramfs/bin/
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Heretic skrev:

Kod: Markera allt

root@desktop-GA-7VAXFS:/media/disk/initramfs/bin# sudo chroot initramfs busybox sh
chroot: kan inte ändra rotkatalog till initramfs: Filen eller katalogen finns inte
root@desktop-GA-7VAXFS:/media/disk/initramfs/bin# 
Så jag förstår direkt inte varför det blir så här. Jag har fört över busybox till /media/disk/initramfs/bin/
Du står i fel katalog. Skriv hela sökvägen om du är osäker:

Kod: Markera allt

sudo chroot /media/disk/initramfs /bin/busybox sh
Heretic
Inlägg: 170
Blev medlem: 08 mar 2007, 00:25

Re: Köra endast linuxkärnan + GNU program

Inlägg av Heretic »

Konservburk skrev:
Heretic skrev:

Kod: Markera allt

root@desktop-GA-7VAXFS:/media/disk/initramfs/bin# sudo chroot initramfs busybox sh
chroot: kan inte ändra rotkatalog till initramfs: Filen eller katalogen finns inte
root@desktop-GA-7VAXFS:/media/disk/initramfs/bin# 
Så jag förstår direkt inte varför det blir så här. Jag har fört över busybox till /media/disk/initramfs/bin/
Du står i fel katalog. Skriv hela sökvägen om du är osäker:

Kod: Markera allt

sudo chroot /media/disk/initramfs /bin/busybox sh
Ok, nu fungerar det. Men ska jag bara skriva exit nu?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Heretic skrev:Ok, nu fungerar det. Men ska jag bara skriva exit nu?
Ja, eller trycka ctrl-d.

Nu ska du packa ihop din nya root-filstruktur till en intramfs-fil och sedan lägga denna tillsammans med kärnavbilden på USB-minnet. Där ska du även skapa en fil menu.lst som talar om för grub var kärnan och root-filsystemet finns.

Jag återkommer med kommandon strax. Jag ska bara undersöka om något behövs i /dev och i så fall vad.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Jag kom på att du behöver ett init-skript i nya root-filstruktur. Helt enkelt ett vanligt skript som gör saker automatiskt direkt vid boot. Här har du ett förslag:

Kod: Markera allt

#!/bin/busybox sh
mkdir -p /dev /proc /sys
mount -t devtmpfs devfs /dev
mkdir -p /dev/pts
mount -t devpts ptsfs /dev/pts
mount -t proc procfs /proc
mount -t sysfs sysfs /sys
exec /bin/busybox sh
Spara detta i en fil som som du namnger init och som du lägger direkt i din nya root-filstruktur, dvs en nivå upp från där du redan lagt busybox. Glöm inte att göra init-skriptet körbart. Annars får du kernel panic.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Nu kommer vi till packeteringen. Det går antingen att bygga in direkt i kärnavbilden. Då pekar du bara General Setup -> Initramfs source file på katalogen där din nya root-filstruktur ligger och bygger om bzImage.

Vill du ha det hela löst så gör du följande:

Kod: Markera allt

cd /sökväg/till/initramfs
find | cpio --quiet -H newc -o | gzip -9 -n > /sökväg/till/usb/boot/initramfs.cpio.gz
Du ska även lägga in din kärna på samma ställe. Om du inte är säker på att du har lyckats bygga din egen kärna rätt så kan du köra med ubuntus standardkärna till att börja med.

Kod: Markera allt

cp /boot/vmlinuz* /sökväg/til/usb/boot/linux.img
Heretic
Inlägg: 170
Blev medlem: 08 mar 2007, 00:25

Re: Köra endast linuxkärnan + GNU program

Inlägg av Heretic »

Konservburk skrev:Jag kom på att du behöver ett init-skript i nya root-filstruktur. Helt enkelt ett vanligt skript som gör saker automatiskt direkt vid boot. Här har du ett förslag:

Kod: Markera allt

#!/bin/busybox sh
mkdir -p /dev /proc /sys
mount -t devtmpfs devfs /dev
mkdir -p /dev/pts
mount -t devpts ptsfs /dev/pts
mount -t proc procfs /proc
mount -t sysfs sysfs /sys
exec /bin/busybox sh
Spara detta i en fil som som du namnger init och som du lägger direkt i din nya root-filstruktur, dvs en nivå upp från där du redan lagt busybox. Glöm inte att göra init-skriptet körbart. Annars får du kernel panic.
Okej, gjorde chmod 777 på den :) Fungerar OK.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Köra endast linuxkärnan + GNU program

Inlägg av Konservburk »

Slutklämmen blir filen menu.lst som du lägger på USB-minnet i katalogen boot/grub/, dvs samma plats som stage-filerna. Det är en vanlig textfil där du talar om för grub vilken kärna och intitramfs den ska lämna över till. Här har du ett exempel på hur den skulle kunna se ut:

Kod: Markera allt

default 0
timeout 10

title linux
root (hd1)
kernel /boot/linux.img
initrd /boot/initramfs.cpio.gz
Det gäller förstås att (hd1) måste var rätt disk, men det fattar du säkert redan.
Skriv svar

Återgå till "Experimentverkstad"