Sida 2 av 5
Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 16:46
av Heretic
Konservburk skrev:
Vad har du för rättigheter på
/usr/local/lib/grub/i386-pc/ ? Är den monterad read-only?
http://pastebin.com/xR6YYqL2
Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 17:06
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.
Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 17:17
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.
Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 18:44
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
Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 21:26
av Heretic
Men...varför gjorde jag inte sudo apt-get install grub på en gång
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

Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 23:04
av Konservburk
Heretic skrev:Men...varför gjorde jag inte sudo apt-get install grub på en gång
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:
Väl inne i grub så använder du
root-kommandot för att ange vilken partition du tänker arbeta med:
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:
För mig är USB-minnet den andra disken 1, dvs sdb. Det kan åter igen vara annorlunda för dig. Avsluta slutligen grub:
Nu återstår bara att ställa in så att bios bootar från USB-minnet.
Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 23:39
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
Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 23:51
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.
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 16:30
av Heretic
Så där ja!
Nu har jag kopierat över och jag har kvar linuxkärnan. Vad är nästa steg?
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 16:52
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
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 17:03
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?
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 17:10
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
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 17:21
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/
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 17:27
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
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 17:32
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?
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 17:49
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.
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 18:22
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.
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 18:29
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
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 18:33
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.
Re: Köra endast linuxkärnan + GNU program
Postat: 31 mar 2011, 18:34
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.