Sida 1 av 5
Köra endast linuxkärnan + GNU program
Postat: 28 mar 2011, 09:19
av Heretic
Jag har ett litet projekt. Jag tänker kompelimera en egen linuxkärna och ha programmen wget,vim,python,apache,gcc,irssi,bzip2,GRUB, lynx
Wget är för att kunna ladda ner en linuxkärna för att uppdatera.
VIM är för att kunna läsa text.
Python är för att kunna köra mina scripts.
Apache är för att kunna hosta upp en hemsida i HTML. MySQL behövs inte.
Irssi är för att kunna ha IRC - mest bara för det socialas skull.
bZip2 är för att kunna packa upp tarballs.
GRUB är för att boota linuxkärnan.
Lynx är för att kunna leta reda på en linuxkärna, om jag vill uppdatera den.
Och allt ska jag ha på ett USB minne. Men då kanske ni tänker att "nää, det går, men det kommer krasha". Men jag tänker inte skriva till minnet. Jag tänker bara läsa ifrån det.
Vi säger att jag har allt på ett USB minne. Det ska vara som en live-cd. Jag tänker inte installera själva oprativsystemet på USB, utan jag tänker bara ha filsystem ext3 på den, eller ext4. Jag stoppar in USB-stickan i USBenheten. Startar datorn från USB och sen installerar alla dessa program jag vill ha på usb minnet. Bara en gång räcker det.
Men alla rörlig data som kommer skrivas till USB-stickan ska lagras på RAM-minnet. Det kommer bara vara filer med lite text i. Filerna kommer bara vara några kb stort. Den disten ska vara så simpel som möjligt och jag kräver endast att den är snabb,stabil och all rörlig data lagras i RAM-minnet. Fast data som program + kärnan ska vara på USB-minnet och där ska den bara läsas. Visst om jag stänger av eller startar om datorn så tappar jag allt, därför tänker jag ha en mapp i USB minnet som en backup som sedan kopieras över till RAM-minnet, och då rullar allt på igen
Hårdvara:
* CDrom
* Floppy
* USB 1.0 2x
* 160 MB RAM
* 200 Mhz MMX
* Nätverkskort
Då är min frågeställning:
1. Det finns många manualer hur man kompelimerar program. Men just att kompelimera en linuxkärna och göra så GRUB bootar upp den, vet jag inte hur man gör. Det finns manualer hur man kompelimerar en ny linuxkärna, men inte hur man kompelimerar en linuxkärna och sedan gör den till en isofil som är bootbar.
2. Behöver jag swap? Hört att swap i USB är inget att rekommendera för jag ska inte skriva till USB, bara läsa. Kan jag ha en liten del av RAM-minnet som swap?
3. Hur lagrar man all rörlig data i RAM-minnet?
MvH
Re: Köra endast linuxkärnan + GNU program
Postat: 28 mar 2011, 13:41
av Konservburk
Heretic skrev:Jag har ett litet projekt. Jag tänker kompelimera en egen linuxkärna och ha programmen wget,vim,python,apache,gcc,irssi,bzip2,GRUB, lynx
Jag gillar projekt i den här stilen.
Heretic skrev:Wget är för att kunna ladda ner en linuxkärna för att uppdatera.
VIM är för att kunna läsa text.
Python är för att kunna köra mina scripts.
Apache är för att kunna hosta upp en hemsida i HTML. MySQL behövs inte.
Irssi är för att kunna ha IRC - mest bara för det socialas skull.
bZip2 är för att kunna packa upp tarballs.
GRUB är för att boota linuxkärnan.
Lynx är för att kunna leta reda på en linuxkärna, om jag vill uppdatera den.
Här skulle jag även vilja tipsa dig om
busybox som är en utomordetlig samling av nerbantade grundläggande verktyg.
Heretic skrev:Och allt ska jag ha på ett USB minne. Men då kanske ni tänker att "nää, det går, men det kommer krasha". Men jag tänker inte skriva till minnet. Jag tänker bara läsa ifrån det.
Vi säger att jag har allt på ett USB minne. Det ska vara som en live-cd. Jag tänker inte installera själva oprativsystemet på USB, utan jag tänker bara ha filsystem ext3 på den, eller ext4. Jag stoppar in USB-stickan i USBenheten. Startar datorn från USB och sen installerar alla dessa program jag vill ha på usb minnet. Bara en gång räcker det.
Men alla rörlig data som kommer skrivas till USB-stickan ska lagras på RAM-minnet. Det kommer bara vara filer med lite text i. Filerna kommer bara vara några kb stort. Den disten ska vara så simpel som möjligt och jag kräver endast att den är snabb,stabil och all rörlig data lagras i RAM-minnet. Fast data som program + kärnan ska vara på USB-minnet och där ska den bara läsas. Visst om jag stänger av eller startar om datorn så tappar jag allt, därför tänker jag ha en mapp i USB minnet som en backup som sedan kopieras över till RAM-minnet, och då rullar allt på igen

Det låter som att
initramfs kan vara något för dig.
Heretic skrev:Hårdvara:
* CDrom
* Floppy
* USB 1.0 2x
* 160 MB RAM
* 200 Mhz MMX
* Nätverkskort
Då är min frågeställning:
1. Det finns många manualer hur man kompelimerar program. Men just att kompelimera en linuxkärna och göra så GRUB bootar upp den, vet jag inte hur man gör. Det finns manualer hur man kompelimerar en ny linuxkärna, men inte hur man kompelimerar en linuxkärna och sedan gör den till en isofil som är bootbar.
Det går i korthet ut på att du först laddar ner och packar upp kärnans källkod. Sedan går du in i källkodskatalogen där du ställer in mer i detalj vad som ska kompileras. Jag brukar använda kommandot
make menuconfig till detta. Att göra dessa inställningar är nog den svåraste biten eftersom det kräver att du har åtminstone grundläggande koll på vilken hårdvara du har. Därefter kör du helt enkelt kommandot
make för att bygga kärnan. Slutligen kopierar du den nya kärnavbilden till lämplig plats (någonstans på USB-minnet i ditt fall) och ändrar så att boot-loadern (t.ex. GRUB) läser in den nya kärnan nästa gång du bootar.
Heretic skrev:2. Behöver jag swap? Hört att swap i USB är inget att rekommendera för jag ska inte skriva till USB, bara läsa. Kan jag ha en liten del av RAM-minnet som swap?
Tanken med swap är att det ska vara en utökning av RAM-minnet. Att lägga swap i RAM-minnet är därför inte någon bra idé. Jag skulle nog skippa swap helt i ditt fall.
Heretic skrev:3. Hur lagrar man all rörlig data i RAM-minnet?
Det finns flera olika sätt. Mitt förslag är
initramfs, vilket innebär att du lägger rootfilsystemet helt i RAM-minnet.
Re: Köra endast linuxkärnan + GNU program
Postat: 28 mar 2011, 17:04
av Heretic
Okej. Jag ska använda busyBox, fast vissa program som python och Irssi måste jag ladda ner. Men bra tips var det.
När jag kompelimerar, måste jag göra det i linux då?
Ok, då skippar jag swap. Och jag ska använda initramfs.
Men vilket filsystem ska jag ha på USB minnet?
Re: Köra endast linuxkärnan + GNU program
Postat: 28 mar 2011, 18:26
av Konservburk
Heretic skrev:Okej. Jag ska använda busyBox, fast vissa program som python och Irssi måste jag ladda ner. Men bra tips var det.
Det som
busybox helt eller delvis saknar får du förstås köra separat. Du kanske behöver en mer avancerad webbserver än den som ingår i
busybox och du kanske inte nöjer dig med en nerbantad
vi utan vill ha hela
vim istället.
Heretic skrev:När jag kompelimerar, måste jag göra det i linux då?
Inte nödvändigtvis, men det blir lättare eftersom du slipper bry dig om hur korskompilering går till.
Heretic skrev:Men vilket filsystem ska jag ha på USB minnet?
Det beror på vad du är ute efter. Det viktigaste är att boot-loadern kommer åt kärnavbilden. Du är med andra ord begränsad av den boot-loader du väljer. Vill du även kunna använda USB-minnet i windows så kan vanlig FAT vara lämpligt.
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 18:26
av Heretic
Okej, nu har jag konfiugera kärnan (använde mitt linux förra config i /boot katalogen) och komplimerat den med make. Det var rätt så mycket tryckande N och Y, men jag tog Y när det stog t.ex. (Y/n/?) eller N när det stog (N/y/?). Alltså storbokstav.
http://www.cyberciti.biz/tips/compiling ... el-26.html
Ska jag fortsätta till
och sluta vid
?
Sen då?
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 18:45
av Konservburk
Behöver du moduler? Själv skulle jag skippat den biten och istället kompilerat in de nödvändiga drivrutinerna direkt i kärnan.
Efter kompileringen hamna den nya kärnavbilden under källkodsträdet:
arch/x86/boot/bzImage
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 21:33
av Heretic
Nope behöver inga moduler

Så då är den klar.
Hittar inte arch/x86/boot/bzImage

Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 22:15
av Konservburk
Testa om make bzImage ger något. Kolla även med find -name bzImage och se om den hamnat någon annan stans.
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 22:23
av Heretic
kör make bzImage nu. bzImage fanns inte. Men när bzImage är klar. Ska jag bara kopiera över den på USB minnet? BusyBox då?
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 22:31
av Konservburk
Det viktiga är att du lägger kärnavbilden någonstans där boot-loadern kommer åt den.
När det gäller busybox så ska den läggas i din initramfs tillsammans med övriga program du vill kunna använda. Ett hett tips är att testa med chroot först så att du vet att allting fungerar som det ska. Först därefter gör du en avbild, antingen separat eller inbyggd i kärnavbilden.
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 22:44
av Heretic
Okej, nu är bzimage klar

Hur införskaffar man boot loadern? Ska jag ladda ner GRUB från GNU?
Hur ska jag få tag på initramfs ?
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 22:50
av Konservburk
Du kan ta vilken boot-loader du vill, och du kan hämta den var du vill. Själv tycker jag det är smidigt med atp-get install, men det spelar egentligen ingen roll. Det viktiga är att du installerar boot-loaderns boot-kod på USB-minnet.
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 23:03
av Konservburk
När det gäller din initramfs så skapar du den själv. Utgå från en vanlig katalogstruktur med allt som är nödvändigt för att den ska fungera som root-filsystem åt din kärna (vilket egentligen inte är speciellt mycket). Det borde räcka med bin/busybox till att börja med, och eventuellt några småsaker i dev också. Testa som sagt med chroot så att du ser att det hela fungerar.
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 23:04
av Heretic
Konservburk skrev:Du kan ta vilken boot-loader du vill, och du kan hämta den var du vill. Själv tycker jag det är smidigt med atp-get install, men det spelar egentligen ingen roll. Det viktiga är att du installerar boot-loaderns boot-kod på USB-minnet.
Men vi säger att jag tar GRUB.
ftp://alpha.gnu.org/gnu/grub/grub-1.98.tar.gz
Då packar jag upp den. Sen ska jag komplimera den? Sen ska jag lägga den på USB minnet och göra en länk till bzimage?
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 23:21
av Konservburk
Typ så. Kompilera och sen
grub-install eller helt enkelt starta upp och installera innifrån
grub. Jag har inte bekantatat mig tillräckligt mycket med nya
grub ännu för att på rak arm veta hur du gör sista steget. I gamla
grup legacy var det bara att lägga till ett par rader i en fil
menu.lst som anger var kärnavbilden finns.
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 23:32
av Heretic
Konservburk skrev:
Typ så. Kompilera och sen
grub-install eller helt enkelt starta upp och installera innifrån
grub. Jag har inte bekantatat mig tillräckligt mycket med nya
grub ännu för att på rak arm veta hur du gör sista steget. I gamla
grup legacy var det bara att lägga till ett par rader i en fil
menu.lst som anger var kärnavbilden finns.
Okej, nu har jag gjort det. Fick detta medelande. Tror att det är OK.
GRUB2 will be compiled with following components:
Platform: i386-pc
With memory debugging: No
efiemu runtime: Yes
grub-fstest: Yes
grub-mkfont: No (need freetype2 library)
Men vart är GRUB nu då?
Re: Köra endast linuxkärnan + GNU program
Postat: 29 mar 2011, 23:42
av Konservburk
Heretic skrev:Men vart är GRUB nu då?
Om du kör
make install brukar det bli under
/usr/local, och annars kan du alltid kolla med
find -name grub för att se var i källkodsträdet den hamnat. Det är väl också förstås möjligt att den heter
grub2 istället, jag vet inte.
Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 00:02
av Heretic
Konservburk skrev:Heretic skrev:Men vart är GRUB nu då?
Om du kör
make install brukar det bli under
/usr/local, och annars kan du alltid kolla med
find -name grub för att se var i källkodsträdet den hamnat. Det är väl också förstås möjligt att den heter
grub2 istället, jag vet inte.
Okej, steg 1 är iallafall klart. bzimage är klar.
Kod: Markera allt
mkdir -p -- /usr/local/lib/grub/i386-pc
mkdir: kan inte skapa katalog "/usr/local/lib/grub": Åtkomst nekas
make: *** [install-local] Fel 1
Nu vet vi iallafall vart GRUB kommer ligga. Men det tar vi imorgon

Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 16:17
av Heretic
Så här ser det ut om jag kört make install, root eller vanligt
http://pastebin.com/LUDmYRsL
Re: Köra endast linuxkärnan + GNU program
Postat: 30 mar 2011, 16:22
av Konservburk
Vad har du för rättigheter på
/usr/local/lib/grub/i386-pc/ ? Är den monterad read-only?