Hoe mijn eigen besturingssysteem voor de framboos te bouwen of een bestaand besturingssysteem te configureren

Ik gebruik Raspbian met raspberry pi 2 ... Maar ik wil het aanpassen en een aantal functies verwijderen die ik niet echt nodig heb, om voordelen te nemen op de prestaties en ook om de procedure van de installatie van het besturingssysteem te begrijpen, dus hoe kan ik doe dat:

      
  1. Ik heb geconstateerd dat ik de kernel vanaf nul moet compileren, maar dit zou me veel tijd kosten om het hele proces te begrijpen
  2.   
  3. Hoe Raspbian te bouwen, maar met meer configuratieopties ...
  4.   
  5. Ik ben gewoon nieuw om Linux te gebruiken ...
  6.   

Alle hulp wordt gewaardeerd :)

3
Heb je dit cl.cam.ac.uk/projects/raspberrypi al gezien?/tutorials/os . merk op dat dit misschien niet werkt op een Pi 2. het is ouder dan de release. Ook maakt het niet uit hoe vaak je het afstemt, je zult er geen high performance computer van maken; op dezelfde manier kun je je dagelijkse bestuurder niet in een superwagen veranderen - hoe je hem ook afstemt - je wordt uiteindelijk beperkt door de onderliggende hardware.
toegevoegd de auteur doekman, de bron
Ten eerste is het verwijderen van dingen niet hoe je een realtime OS moet maken. Ten tweede wil je je eigen OS bouwen, maar "het compileren van de kernel vanaf nul zou veel tijd kosten". Als onderdeel van het bouwen van een OS wordt gecompileerd hoe lang verwacht u dat het leren om uw eigen besturingssysteem te maken te nemen? Misschien kan deze google-zoekopdracht google.com/…
toegevoegd de auteur doekman, de bron
@Steve Robillard maar ik kan het nog steeds afstemmen op wat ik nodig heb ... misschien door het besturingssysteem realistischer te maken?
toegevoegd de auteur George Panaghi, de bron
ja dat is een andere manier om dit te doen door een RTOS te gebruiken, maar ik wil iets gebruiken op basis van Debian ... dat betekent door Raspbian opnieuw te configureren naar mijn behoeften ... bijvoorbeeld de camerabibliotheek die ik heb gevonden om deze aan de framboos werkt alleen in debian-gebaseerde distributie ... dus ik wil niet dat de bibliotheek weer mijn eigendom moet worden voor een andere distributie ... heb je meegemaakt en wat bedoel ik of heb ik het mis !!!
toegevoegd de auteur George Panaghi, de bron

3 antwoord

om de prestaties te verbeteren

Dit roept de vraag op dat de mensen die "een bestaand OS" samenvoegden zich geen zorgen maakten over de uitvoering, of dat je het beter begreep dan hen (in welk geval je dit soort vraag niet zou stellen - ik probeer niet om je kleineren, alleen het voor de hand liggende verklaren). Als mensen hun auto's benaderen op de manier dat ze soms de computer naderen, zien we veel spullen achtergelaten op blokken op de oprit en meer blauwe rook op de snelwegen.

Als je dingen wilt leren, geweldig. Als je wilt doen alsof je je Chevy gaat aanpakken op de dag dat je je eerste sleutel koopt, stop dan nu. Het is geen goede mindset om te proberen te begrijpen hoe iets werkt. IMO.

Ik ontdekte dat ik de kernel vanaf nul moest compileren, maar dit zou me heel wat tijd kosten om het hele proces te begrijpen

U hoeft dit niet te doen, tenzij u een bepaalde reden hebt. Het configureren en compileren van de kernel is behoorlijk saai spul. Ik ben blij dat ik weet hoe ik het van tijd tot tijd moet doen, maar er valt niet veel te leren om zo te komen. In feite zou ik het een complete verspilling van tijd noemen in termen van educatieve waarde. Niettemin:

Configureren, compileren en installeren van een aangepaste Linux-kernel

Kernel .config benodigde opties

Installeer aangepaste kernel

Maar in plaats daarvan, mijn advies als je geïnteresseerd bent in hoe het besturingssysteem werkt (je zult dergelijke dingen moeten begrijpen voordat je er een gaat aanmaken) is om meer te weten te komen over de init-systeem . Op de huidige versies van Raspbian is dat systemd . Nadat je deze twee dingen hebt gelezen, ben je klaar om iets dieper in te gaan; kijk eens naar de Fedora-wiki , omdat zij degenen waren die het introduceerden, en omdat ze bieden de beste documentatie van elke linux distro, de Arch-wiki .

Debian, waarvan Raspbian een variant is, produceert ook een aantal goede documentatie. Deze pagina is een goede uitleg van wat "init" is en een inleiding tot systemd "service bestanden". Merk op dat pi OS's geen initramfs gebruiken (dat zou kunnen, maar er zou niet veel zin hebben, omdat ze hoe dan ook een aangepaste kernel nodig hebben, 1 zie # 4 in het antwoord daarop "Configureren, compileren , en installeren ... "vraag).

Beware there is a lot of stuff around about SysV init and the raspberry pi. This refers to /etc/init.d and scripts that run from there, and commands like update-rc.d (we have a lot of that here). While systemd supports this for backward compatibility, skip learning about it. It is history, and it is not coming back. You will see these two things distinguished in most of the above articles (in fact the fedora one is sort of for people who've got to know SysV -- this applies now to Raspbian, since it just switched over).

Pas ook op in de valkuil van voortdurend "frambozen pi" opnemen in uw zoekopdrachten. Veel mensen lijken te geloven dat linux en debian gisteren zijn uitgevonden voor de raspberry pi en/of dat de raspberry pi een aanzienlijk deel van de hedendaagse linux-systemen vertegenwoordigt en/of dat er iets speciaals is met het Raspbian OS. Alle drie deze dingen zijn erg, erg fout. Wat erger is, sommige van deze mensen hebben gruwelijke blogs geschreven die proberen dingen uit te leggen die elders al beter zijn uitgelegd. Ik geloof dat sommigen van hen dit letterlijk doen, omdat ze denken dat de contextualisering ervan in termen van de "raspberry pi" hen helpt om op Google te komen, omdat het anders gewoon overbodig, vaak van slechte kwaliteit, regurgitatie zou zijn.

There are also some very good pi pages around; it's up to you to decide between them (that's the internet). When in doubt, ask about it here. Questions such as "I read [this] [here] about the Pi. Does that mean _______?" are usually totally appropriate here, or on U&L.

Het grootste probleem met het leren hoe init werkt, is dat je veel moet rebooten - maar dan, net als het compileren van de kernel, en het is meestal veel ondoorgrondelijker als het niet werkt. De pi is op deze manier een beetje handig, omdat je gemakkelijk met een laptop of wat dan ook op hetzelfde moment kunt zitten. Init-systemen zijn ingewikkeld en het kan lang duren om ze te begrijpen, maar als u serieus dingen wilt aanpassen, kunt u niet zonder gaan.


1. Hoewel het een werkende methode is om te schakelen tussen besturingssystemen, zoals hier voorgesteld , zou dit een geweldig onderwijsproject. Wees gewaarschuwd dat als je vanaf nul begint, als je dit soort dingen fulltime studeert, het maanden duurt voordat je het goed hebt gedaan.

8
toegevoegd
Pas op voor het XY-probleem ! Vooral hier, omdat er konijnenholen zijn waar je lang in zou kunnen vallen voordat je je realiseert dat je het nogal hebt verspild. Dit is de reden waarom ik de performance chimera noemde. Een misvatting die mensen vaak hebben is dat "al deze software mijn systeem vertraagt" of "het het geheugen in beslag neemt". De laatste is ingewikkelder dan de eerste, maar een kort verhaal: als je het niet gebruikt, doet het niets (het is vaak op een smartphone, maar niet op de pi).
toegevoegd de auteur David Harris, de bron
Je zult het zeker niet veranderen in een real-time systeem door gebruikerssoftware uit te trekken; aangezien het besturingssysteem multitasking is, zijn de meeste dingen die enkele milliseconden onderbreken eigenlijk kernel-dingen. Kernels zijn waanzinnig complex en moeten veel jongleren om ons een platform te bieden waar alle andere dingen leuk kunnen spelen. Hoe dan ook, mijn punt over XY is als je iets specifieks doet en het gevoel hebt dat er een probleem is met de nauwkeurigheid van de uitvoering of de tijd, vraag er dan specifiek naar . Er kan al dan niet iets zijn wat je kunt doen.
toegevoegd de auteur David Harris, de bron
Ik zeg niet dat ze perfect zijn. Dat artikel is in orde wat het aantonen van een aantal fundamentele dingen betreft, maar het zal de prestaties van wat dan ook niet meetbaar verbeteren. De dingen over chkconfig en inetd waren jaren geleden oud, wat een slecht teken is omdat het artikel is gedateerd in 2015 - hoe dan ook, het is heel erg richt zich op init -diensten. WRT de GUI, dit is een goed voorbeeld van wat ik bedoelde met het XY-probleem. Als je het uitschakelen standaard wilt starten (je hoeft het niet te verwijderen ), vraag dan hoe je het kunt uitschakelen (het is een init-service/profiel opnieuw).
toegevoegd de auteur David Harris, de bron
Het is geen configuratiebestand. Init is een programma dat is gestart door de kernel (het enige programma dat ooit door de kernel is gestart) en het draait altijd (je kunt het niet echt stoppen). Ik denk dat je op Jessie de GUI moet kunnen uitschakelen met sudo systemctl set-default multi-user.target , ervan uitgaande dat Raspbian niet iets geks heeft gedaan. Op piepen vind ik het een beetje ingewikkelder maar probeer update.rc-d lightdm S 2 3 4 5 uit te schakelen en kijk of dat werkt.
toegevoegd de auteur David Harris, de bron
U do moet die eerste paarkoppelingen lezen (het "init system" wikipedia-artikel en de "systemd" -versie uit de volgende zin) als u enige hoop wilt hebben om het systeem verder aan te passen dan kopiëren alleen van mogelijk zeer verkeerde/ongepaste artikelen op internet ...
toegevoegd de auteur David Harris, de bron
Het is al een tijdje langer dan de pi, het is gewoon dat Debian het pas dit jaar begon te gebruiken - en hoewel je op dit punt een soort keuze hebt (voornamelijk door piepend te blijven en niet te upgraden, ooit) - het zal moeilijker en moeilijker worden om bij te blijven. Hoe dan ook, momenteel kan de update.rc-d lightdm ... werken, ongeacht welke wordt gebruikt,
toegevoegd de auteur David Harris, de bron
Merk op dat systemd en sysv beide implementaties van een init-systeem zijn, dus "init" is in die zin abstract. Er is geen init-programma dat door beiden wordt gebruikt; het zijn verschillende versies van een init-programma. Je kunt bijna alles gebruiken in plaats van ze, hoewel wat in de meeste gevallen zal gebeuren niet wenselijk is;) Je zou bijvoorbeeld bash (de shell) voor init kunnen gebruiken, in welk geval je gewoon naar een enkele shell-prompt boot en er is niks anders.
toegevoegd de auteur David Harris, de bron
bedankt @goldilocks ... het zal me veel tijd kosten om dit te begrijpen ... wat ik bedoel met de prestaties om het besturingssysteem meer realtime te maken, bijvoorbeeld het uitschakelen van een aantal dingen: applicaties en services die ik niet zal gebruiken moet het gebruik van msconfig commando in windows .... Dus bouwen vanaf nul zal veel tijd kosten en het is het niet waard ..., In de andere hand heb ik de BUILDROOT tool gevonden om mijn afbeelding aan te passen met behulp van cross-compilatie: dat lijkt interessant ... wat denk je?
toegevoegd de auteur George Panaghi, de bron
dus vertel je me dat de raspbian of een andere andere distributie die met de framboos kan worden gebruikt al effectief en efficiënt is en ik kan niets anders doen om het te verbeteren of opnieuw in te stellen? voor het probleem met de prestaties was ik misschien niet goed geweest om het probleem te beschrijven, maar ik dacht erover ongewenste services uit te schakelen, zoals hier wordt weergegeven [link] ( tecmint.com/remove-unwanted-services-from-linux ) ... ik weet dat sommige software niets te maken heeft met geheugengebruik, maar sommige anderen doet ...
toegevoegd de auteur George Panaghi, de bron
wat ik echt nodig heb is om het CPU-verbruik te verminderen, bijvoorbeeld door de grafische interface te verwijderen voor exp ...
toegevoegd de auteur George Panaghi, de bron
door het configuratiebestand te gebruiken .... waar kan ik het vinden?
toegevoegd de auteur George Panaghi, de bron
ok nu ik ze heb gelezen is de init de eerste en de laatste taak gelanceerd in linux en het start ook de andere taak, want de suystemd is een alternatief voor systemV (dat init gebruikt) maar het is erg recent ik weet niet of ik ga het gebruiken
toegevoegd de auteur George Panaghi, de bron

U zou kunnen overwegen om de Raspbian NetInstaller te gebruiken om een ​​minimaal systeem te installeren en uw systeem op te bouwen vanaf daar.

3
toegevoegd
Correct. Het bevat alleen de essentiële benodigdheden om een ​​actief systeem en een SSH-server te hebben, zodat u op afstand kunt inloggen. Het bevat geen X of andere grafische hulpmiddelen/programma's/enz. Als je ze wilt, moet je ze zelf installeren. Door configuratiebestanden te gebruiken, kunt u extra pakketten installeren tijdens de (initiële) installatie. Zie github.com/debian-pi/& hellip; voor details.
toegevoegd de auteur Florian Bösch, de bron
U hoeft alleen maar de pakketten te vinden die u wilt/nodig hebt. APT (apt-get/aptitude) zal de afhankelijkheden achterhalen en voor u installeren.
toegevoegd de auteur Florian Bösch, de bron
Heb je de README zelfs gelezen? In github.com/debian-pi/raspbian-ua-netinst#intro je kunt zien dat de server-preset (= standaard) je een SSH-server en NTP geeft en die zijn behoorlijk nutteloos zonder netwerken. In datzelfde gedeelte van de documentatie kun je ook lezen dat alleen de 'basis'-preset geen netwerkmogelijkheden heeft (en dus geen ssh-server of ntp). Maar als u de vooraf ingestelde optie wijzigt, wordt verwacht dat u weet wat u doet en dus uitvindt welke pakketten u nodig heeft als u 'basis' wilt met netwerken.
toegevoegd de auteur Florian Bösch, de bron
ik moet eerst weten welke pakketten ik nodig heb en hun afhankelijkheden ... het lijkt interessant ik zal het proberen en het resultaat vergelijken
toegevoegd de auteur George Panaghi, de bron
dus bijvoorbeeld voor netwerken om te weten welk pakket ik nodig heb !!! alle hints
toegevoegd de auteur George Panaghi, de bron
wat bedoel je met minimaal systeem? : dus na het installeren moet ik alle dingen installeren die ik nodig heb
toegevoegd de auteur George Panaghi, de bron

Ik heb onlangs een bericht geschreven over het compileren van een kernel voor de Pi met behulp van ELLCC. http://ellcc.org/blog/?p=26435 Hoewel in die blogpost specifiek wordt uitgelegd hoe het is om voor de Raspberry Pi B + te bouwen, heb ik vervolgens met dezelfde techniek een kernel voor de Raspberry Pi 2 gebouwd. Ik stel een 0.1.24-release van ELLCC samen die het proces nog eenvoudiger zal maken.

2
toegevoegd
Gemakkelijk. Nadat je een initiële build hebt gedaan waardoor de Linux-bron is gedownload, cd naar de directory arm-linux-engeabihf/bcm2709 waar de Linux-kernelbron is (of iets dergelijks, ik ben nu niet op mijn systeem). Je kunt een "make menuconfig" in die map doen om de kernel te configureren.
toegevoegd de auteur MetaEd, de bron
Ja, bekijk ellcc.org/blog/?p=26628 U kunt opgeven welk gebruikersland dingen om op te nemen door het 'build'-bestand te bewerken. Als u wilt bepalen welke kernelmodules u moet opnemen, moet u een 'make menuconfig' doen in b.v. de directory arm-linux-engeabihf/bcm2709 /.
toegevoegd de auteur MetaEd, de bron
@Frankenstein: ik heb een bijgewerkte blogpost met wat meer informatie: ellcc.org/blog/?p = 26595
toegevoegd de auteur MetaEd, de bron
./build -packages = "kernel scp ..." bcmrpi U kunt de lijst met pakketten zien die beschikbaar zijn aan de bovenkant van het build-script.
toegevoegd de auteur MetaEd, de bron
Google. :-) De meeste pakketten zijn groepen basisvoorzieningen. Sommige liggen voor de hand (bijvoorbeeld vim).
toegevoegd de auteur MetaEd, de bron
Sorry, nee "=": ./build -pakketten "kernel" bcmrpi
toegevoegd de auteur MetaEd, de bron
Plz, kun je me vertellen waar kan ik de bcm2709-directory vinden ... ik wil precies controle hebben over welke kernelmodules worden geïnstalleerd
toegevoegd de auteur George Panaghi, de bron
bij het proberen van ./ build -packages = "kernel" bcmrpi geeft hij me een onbekende optie: -packages = kernel ... kan je helpen
toegevoegd de auteur George Panaghi, de bron
toegevoegd de auteur George Panaghi, de bron
maar ik wil ook weten wat elk pakket doet?
toegevoegd de auteur George Panaghi, de bron
ok ik gebruik pi B + de build zal zo zijn? cd ellcc/libecc/ecclinux/ ./ build bcmrpi dit zal een minimale installatie zijn zonder de pakketten die je hebt vermeld, maar hoe kan ik de juiste pakketten kiezen: bijv. kernel, sinit ...
toegevoegd de auteur George Panaghi, de bron
kan ik alsjeblieft jouw methode gebruiken om wensmodule te kiezen om te behouden of te verwijderen in het installatieproces?
toegevoegd de auteur George Panaghi, de bron
ik heb nog nooit van ELLCC gehoord maar ik zal het proberen en laten weten ... bedankt
toegevoegd de auteur George Panaghi, de bron