Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Zelf een Linux distro/OS maken  (gelezen 13947 keer)

roelof92

  • Gast
Zelf een Linux distro/OS maken
« Gepost op: 2008/12/24, 21:33:49 »
Ik en een vriend willen zelf een Linux Distro of Linux-based OS maken, niet op een serieuze manier maar puur omdat we het willen kunnen. Nu vraag ik me af, hoe zit een Linux distro nou opgebouwd. Je hebt de GUI die geeft grafische informatie door aan de gebruiker en commando's aan de CLi, en de CLi die spreekt de Kernel aan en de Kernel is het hart die het geheugen coördineert en de hardware aanstuurt. Is het dan zo dat de CLi commando's in binary omzet om de kernel processen te laten uitvoeren? Of zet de CLi commando's om in een andere taal waarna de Kernel die taal in binary omzet om zo de hardware en applicaties te kunnen aansturen?
« Laatst bewerkt op: 2008/12/26, 23:13:48 door roelof92 »

Re: Zelf een Linux distro/OS maken
« Reactie #1 Gepost op: 2008/12/25, 23:57:40 »
Jij bekijkt het veel te ingewikkeld. Een GUI-programma en een CLI-programma zijn wezenlijk hetzelfde. Het enige verschil is dat een GUI-programma van X kan gebruik maken, de grafische interface (wat zelf ook een programma op zich is).
De binaire programmacode bestaat uit verschillende secties. Ik ben niet helemaal op de hoogte van de specificaties, maar het ziet er ongeveer zo uit:
header
libraries waarmee gelinkt moet worden
symbolen (=functies) die uit die libraries gehaald moeten worden
code
data
code
data
...
footer
"Code" is hier binaire code, dus wat je krijgt na het assembleren (een compiler zoals gcc doet niet veel meer dan het omzetten van programmacode, geschreven in bijvoorbeeld C of C++, naar assembleertaal)
Het proces van het compileren gaat als volgt ongeveer:
1) Compiler (cc1) zet C/C++-code om naar "tussencode"
2) "Tussencode" wordt geoptimaliseerd
3) "Tussencode" wordt omgezet naar Assemblertaal
4) Assemblertaal wordt met assembler (as) omgezet naar objectcode. Deze code bestaat enkel uit de deeltjes "code" en "data" en is dus niet uitvoerbaar
5) Linker (ld) zet verschillende objecten bij elkaar, en voegt header, footer, en benodigde libraries in.

Nu, waar staat hier de kernel, waar staat de CLI, waar staat X, en waar staat de GUI?
De kernel doet zogenaamd het "dynamisch linken". Het laadt een programma in in het geheugen en kijkt welke libraries er nodig zijn voor dat programma. De CLI is gewoon een verzameling van programma's. X is zowel een programma als een library, namelijk eentje die het mogelijk maakt om grafische interfaces te maken. Grafische programma's zijn dus ook gewoon programma's, die van de diensten van X gebruik maken. Dus het is niet zo dat de CLI een "backend" is voor de GUI.

Op je vraag of er "omzettingen" moeten gebeuren: nee, objectcode (dus zonder de headers en de footers) kan direct verstaan worden door de processor. Het enige wat de kernel nog moet doen is het dynamisch linken (dus libraries en objectcode in het geheugen zetten) en de processor vertellen wat hij moet uitvoeren.

Nu ik hoop dat ik duidelijk heb uitgelegd wat het verschil is tussen cli-programma's en gui-programma's (namelijk: geen), kan ik terugkomen op je eerste vraag: hoe je een linux-distro maakt. Kijk daarvoor even op de website http://www.linuxfromscratch.org . Kennis van Google is een pré (want niet alles werkt direct en zonder fouten -- ik heb al veel keren LFS gebouwd).

Ik hoop dat dit duidelijk was,

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Re: Zelf een Linux distro/OS maken
« Reactie #2 Gepost op: 2008/12/26, 15:06:02 »
Kan iemand soms ook die site hierboven uitleggen want daar begrijp ik niet veel van...

Offline siegi

  • Lid
Re: Zelf een Linux distro/OS maken
« Reactie #3 Gepost op: 2008/12/26, 15:13:41 »
LFS komt zowiezo neer op gewoon veel lezen. Ik vraag me zelf af of je dat al gedaan hebt. Verder is het ook veel werk om een bruikbaar systeem te bekomen. En nog eens meer werk om het dan nog eens up to date te houden.

De hoofdpagina laat de verschillende projecten zien, maar je moet zowiezo beginnen met LFS.
Je maakt dus je keuze.
http://www.linuxfromscratch.org/lfs/
En daar kan je het boek toch online lezen, downloaden, bestellen.

roelof92

  • Gast
Re: Zelf een Linux distro/OS maken
« Reactie #4 Gepost op: 2008/12/26, 23:13:06 »
Ik ben een beginner in C++ (echt een paar weken) en ik heb nooit begrepen waarom er libraries zijn. Die binaire codes die uit de compiler komen sturen toch rechtstreeks de CPU aan? (in het geval van een kernel) misschien heb ik je niet goed begrepen, in dat geval sorry voor mijn newbie traag-van-begripheid

Maar dat komt er op neer dat een Linux distro puur de Linux kernel is met Gnome/KDE/Xfce erop en wat software erbij toch?
« Laatst bewerkt op: 2008/12/26, 23:15:20 door roelof92 »

Offline siegi

  • Lid
Re: Zelf een Linux distro/OS maken
« Reactie #5 Gepost op: 2008/12/26, 23:38:56 »
library is vertaald een bibliotheek.
Software programma's hebben eigenlijk veel gemeenschappelijke functies ze moeten bijv allemaal kunnen printen of afbeeldingen weergeven etc..
Omdat je deze code niet steeds opnieuw zou moeten schrijven kan je code gebruiken een de bibliotheek.

Dit is iets te simpel uitgelegd maja

roelof92

  • Gast
Re: Zelf een Linux distro/OS maken
« Reactie #6 Gepost op: 2008/12/27, 00:01:15 »
library is vertaald een bibliotheek.
Software programma's hebben eigenlijk veel gemeenschappelijke functies ze moeten bijv allemaal kunnen printen of afbeeldingen weergeven etc..
Omdat je deze code niet steeds opnieuw zou moeten schrijven kan je code gebruiken een de bibliotheek.

Dit is iets te simpel uitgelegd maja
Ik weet alleen dat programma's van C++ ze inderdaad gebruiken maar ik begrijp niet waarom. Ik weet dat libstdc++6 de Linux C++ library is maar bij Windows gebruik je toch .dll files? (als ik het goed begrepen heb:S)

Offline Double12

  • Lid
Re: Zelf een Linux distro/OS maken
« Reactie #7 Gepost op: 2008/12/27, 11:30:42 »
libstdc++6 is een library die de standaard functies van C++ geeft.
En zo heb je nog veel meer libraries. libpng om png-afbeeldingen weer te kunnen geven, libdbus om communicatie tussen verschillende programma's mogelijk te maken, etc, etc, etc.

Als je in Windows een programma compileert als programma, krijg je een .exe file en als je compileert als library een .dll file.
Als je in Linux een programma compileert als programma, krijg je meestal een uitvoerbaar bestand zonder extensie. Compileren als library geeft eewn .so file in Linux


Als je zelf een distributie maakt, compileer je de broncode van de software en pak je die gecompileerde bestanden in in pakketten. Gebruikers van je distributie pakken die pakketten met behulp van een programma uit en het programma staat op de juiste plek geinstalleerd.

Denk echter drie keer na voor je aan het bouwen van een distributie begint - zeker met je huidige kennis. Het maken van een distributie is zoveel werk dat het alleen de moeite waard is als je een doel wilt verwezenlijken wat een andere distributie nog niet heeft verwezenlijkt (dit doet SeySayux bijvoorbeeld). Er zijn namelijk al honderden/duizenden andere Linux-distributies. ;)

roelof92

  • Gast
Re: Zelf een Linux distro/OS maken
« Reactie #8 Gepost op: 2008/12/27, 11:33:39 »
libstdc++6 is een library die de standaard functies van C++ geeft.
En zo heb je nog veel meer libraries. libpng om png-afbeeldingen weer te kunnen geven, libdbus om communicatie tussen verschillende programma's mogelijk te maken, etc, etc, etc.

Als je in Windows een programma compileert als programma, krijg je een .exe file en als je compileert als library een .dll file.
Als je in Linux een programma compileert als programma, krijg je meestal een uitvoerbaar bestand zonder extensie. Compileren als library geeft eewn .so file in Linux


Als je zelf een distributie maakt, compileer je de broncode van de software en pak je die gecompileerde bestanden in in pakketten. Gebruikers van je distributie pakken die pakketten met behulp van een programma uit en het programma staat op de juiste plek geinstalleerd.

Denk echter drie keer na voor je aan het bouwen van een distributie begint - zeker met je huidige kennis. Het maken van een distributie is zoveel werk dat het alleen de moeite waard is als je een doel wilt verwezenlijken wat een andere distributie nog niet heeft verwezenlijkt (dit doet SeySayux bijvoorbeeld). Er zijn namelijk al honderden/duizenden andere Linux-distributies. ;)
Laat ik zeggen dat ik het overweeg en dat puur omdat ik wil weten of ik het kan of niet. En als ik het kan, puur om het feit dat ik het kan, als hobbyist.

Offline Double12

  • Lid
Re: Zelf een Linux distro/OS maken
« Reactie #9 Gepost op: 2008/12/27, 17:30:36 »
Ik snap de reden waarom je het wil doen, dat lijkt me op zich een goede reden.
Het is alleen jammer dat het maken van een distributie geen eindproduct is. Het echte product is het onderhouden van de distributie. Je moet een flinke hoeveelheid gebruikers verzamelen die actief met de distributie bezig willen zijn, en je moet constant nieuwe versies van pakketten uitbrengen.

Dat is dus het onbevredigende aan het maken van een distributie: als je hem eenmaal afhebt, hem trots aan iedereen laat zien en dan niet meer onderhoudt, loopt hij binnen een maand achter en is niks meer waard.

Ik zou je eerder aanraden om wat te leren programmeren en open source software te gaan schrijven. Dat is ook een leuk project om samen met je vriend je talent te laten zien, en je hebt dan gewoon als eindproduct een programma. Vooral als een open source project wat groter wordt, komt er heel wat bij kijken.

roelof92

  • Gast
Re: Zelf een Linux distro/OS maken
« Reactie #10 Gepost op: 2008/12/27, 20:13:46 »
Ik snap de reden waarom je het wil doen, dat lijkt me op zich een goede reden.
Het is alleen jammer dat het maken van een distributie geen eindproduct is. Het echte product is het onderhouden van de distributie. Je moet een flinke hoeveelheid gebruikers verzamelen die actief met de distributie bezig willen zijn, en je moet constant nieuwe versies van pakketten uitbrengen.

Dat is dus het onbevredigende aan het maken van een distributie: als je hem eenmaal afhebt, hem trots aan iedereen laat zien en dan niet meer onderhoudt, loopt hij binnen een maand achter en is niks meer waard.

Ik zou je eerder aanraden om wat te leren programmeren en open source software te gaan schrijven. Dat is ook een leuk project om samen met je vriend je talent te laten zien, en je hebt dan gewoon als eindproduct een programma. Vooral als een open source project wat groter wordt, komt er heel wat bij kijken.
Het zelf ontwikkelen van een distro is ook zeker een doel voor lange termijn, van mij part over jaren, ik ben nu 16 jaar dus ik heb jaren de tijd, ik ben nog maar net begonnen met programmeren maar ik neem de tijd. Ik ben ook niet van plan de distributie daadwerkelijk te publiceren en te gebruiken maar ik wil het doen om mezelf te bewijzen. Wanneer ik het programmeren echt goed onder de knie heb wil ik zelf open-source software en driver's gaan schrijven voor Linux en specifieker voor KDE en ik zou graag mee willen helpen aan de ontwikkeling van de Kernel, Ubuntu (en dochter distributie's) en KDE. Maar dit zijn uiteraard plannen voor op lange termijn, het gaat erom dat ik eerst fatsoenlijk leer programmeren. Nu heb ik al wat ervaring, ik heb op mijn 8ste Logo geleerd uiteraard is dit niet serieus maar je leert wel al dat een bug je hele programma om zeep helpt en je leert netjes te programmeren door bij elke belangrijke opdracht die je geeft uit te leggen wat het doet en je leert om voor verschillende taken verschillende modules te maken en deze modules inelkaar over te laten gaan. Ik heb vanaf mijn 11de de wens te programmeren en ik heb een aantal maanden Visual Basic gedaan maar toen ik net begon begon de middelbare school en had ik het erg druk en ik ben daarna ziek geworden waardoor het niet zo erg meer leefde voor me. Dood zonde eigenlijk want anders was ik nu natuurlijk al veel verder.

Offline Double12

  • Lid
Re: Zelf een Linux distro/OS maken
« Reactie #11 Gepost op: 2008/12/27, 22:44:33 »
Hmm ja, dat is zoals het gaat met programmeren. Ik had toen ik 9 of 10 jaar oud was al Qbasic en Visual Basic geleerd. Later ben ik nog met andere Basic-dialecten aan de slag gegaan. Maar ik wist nooit zo wat ik zou programmeren, dus ik deed maar andere dingen. Een tijd geleden wilde ik, gestimuleerd door iemand anders, weer eens een nieuwe taal leren. Ik ging toen C++ leren. Eerst op Windows, en toen ik eenmaal Linux gebruikte, ook op Linux.
Dat boek over C++ heb ik nog niet uitgemaakt, op zich een kwalijke zaak, aangezien je de principes van C++ eigenlijk goed zou moeten leren.
Maar ja, je moet er ook in de praktijk mee werken. Ik werk dus nu aan twee open source projecten: 1 in C++ en 1 in C.

Re: Zelf een Linux distro/OS maken
« Reactie #12 Gepost op: 2008/12/28, 09:39:19 »
Ik raad aan om eerst in Java te beginnen als je C++ wilt leren:
1) De standaardbibliotheek is 100x groter dan die van C++, dus je hebt héél veel code die al voor je geschreven is
2) Je moet niet denken aan cross-platform toestanden
3) Je moet niet denken aan packaging-toestanden
4) Java is veel simpeler voor de computer om hulp bij te geven omdat de taal eenvoudiger is, dus je hebt programma's die je helpen bij het programmeren, suggesties geven, zeggen wanneer je iets fout hebt gedaan, etc... zoals Netbeans: http://www.netbeans.org -- Netbeans kan ik zekere mate trouwens ook C++. Dus je hebt direct de juiste tool voor beide talen.
5) Je moet je niets aantrekken van pointers en references -- vrij moeilijk onderwerp als je er niets van begrijpt.
6) Je moet je ook niets aantrekken van geheugenbeheer -- ook vrij moeilijk.
7) Je bent verplicht object-georiënteerd te werken -- je ontwikkelt dus direct een goede programmeerstijl.
8) Java is geschreven in K&R-stijl -- je programmeerstijl is dus direct stukken beter (subjectief argument ;) )

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

roelof92

  • Gast
Re: Zelf een Linux distro/OS maken
« Reactie #13 Gepost op: 2008/12/28, 12:57:39 »
Ik raad aan om eerst in Java te beginnen als je C++ wilt leren:
1) De standaardbibliotheek is 100x groter dan die van C++, dus je hebt héél veel code die al voor je geschreven is
2) Je moet niet denken aan cross-platform toestanden
3) Je moet niet denken aan packaging-toestanden
4) Java is veel simpeler voor de computer om hulp bij te geven omdat de taal eenvoudiger is, dus je hebt programma's die je helpen bij het programmeren, suggesties geven, zeggen wanneer je iets fout hebt gedaan, etc... zoals Netbeans: http://www.netbeans.org -- Netbeans kan ik zekere mate trouwens ook C++. Dus je hebt direct de juiste tool voor beide talen.
5) Je moet je niets aantrekken van pointers en references -- vrij moeilijk onderwerp als je er niets van begrijpt.
6) Je moet je ook niets aantrekken van geheugenbeheer -- ook vrij moeilijk.
7) Je bent verplicht object-georiënteerd te werken -- je ontwikkelt dus direct een goede programmeerstijl.
8) Java is geschreven in K&R-stijl -- je programmeerstijl is dus direct stukken beter (subjectief argument ;) )

- SeySayux
Java spreekt me niet erg aan, ik wil liever Native applicaties schrijven dan onder een VM werken. Zoiezo hou ik van wat uitdaging, als ik na C++ van plan ben Java te leren dan doe ik het dan en dan leert Java makkelijker omdat ik C++ al ken. Ik ben absoluut geen fan van Java.

Re: Zelf een Linux distro/OS maken
« Reactie #14 Gepost op: 2008/12/28, 16:56:14 »
Voor het geval dat iemand jouw het "java-is-traag-omdat-het-in-een-vm-draait" fabeltje heeft wijsgemaakt, laat ik dan zeggen dat de helft van de programma's in Ubuntu in Python zijn geschreven, en die draaien ook in een VM (zelfs eentje dat nog minder geoptimaliseerd is dan Java).
Verder heb je ook nog gcj, dat compileert java-programma's naar native binairies.

Mocht je toch nog c++ willen gebruiken, even wat tips:
1) installeer boost. De "standaardbibilotheek" (omg ik begin te lachen) is namelijk nogal... beperkt. (sterk eufimisme). Dependencies++
2) Tenzij je een grote fan bent van geheugenbeheer (nogal moeilijk onderwerp), link je best je programma met een garbage collector. Dependencies++
3) Als je binaire relocatie wilt (zodat je programma kan uitgevoerd worden onafhankelijk in welke map het staat), heb je binreloc nodig. Dependencies++
3) Iets als reflection ga je niet snel vinden in C++... maar er zijn libraries voor. Dependencies++
4) Ben ik al bij networking gekomen? Of File I/O? tenzij je graag posix leert zal dat wel zuur opbreken. Niet te vergeten dat POSIX alleen werkt op Linux. Voor het porten (als je ertoe komt om te porten), zal je weer meer code kunnen schrijven, en oh ja, MFC (Windows) of CF (Mac) gaan leren... Of weer een of andere library zoeken. Dependencies++

Dus straks heb je een programma'tje dat misschien 2x niks doet, maar waar je een hele vloot aan dependencies voor moet installeren... Welkom bij C++.
Vergeet ik nog haast het verschil tussen doorgeven als pointer, reference of copy. En templates. Oh, virtual methods al uitgelegd?

Niet dat ik C++ wil afkraken. Integendeel. C++ is een zeer goede programmeertaal, ik gebruik hem dagelijks. Maar je moet het onder de knie krijgen. En dat is iets wat ik ook nog niet helemaal heb klaar gekregen ;) .

Java is veel noob-safer: als je wilt leren programmeren (je zegt hier dat je Basic hebt gedaan, dus je kent de "basis") is het beter. De stap van Basic naar C++ is nogal groot. Ik spreek hier uit ervaring. Ik heb al eerder C++ proberen te leren, en ik verstond er niets van. Nadat ik wat ervaring had met Java, ging C++ er als niets in.

En oh ja, begin alsjeblieft niet in Python. Zeker als je niet van VM's houd en dergelijke. Java is nogal redelijk algemeen geaccepteerd, met andere woorden, voor Java is er overal veel ondersteuning. Python staat eigenlijk nog verder af van "native" omdat je hier direct van source-code interpreteert i.p.v. bytecode. Vergeet ik bijna te zeggen dat het packagen ongeloofelijk moeilijk is. En dat het absoluut niet goed is om mee te beginnen als je later C of C++ wilt leren, omdat de syntax helemaal anders is. Het lijkt mij meer op een soort markup language of zoiets.
Hieronder een paar voorbeelden (een simpele klasse met een functie)
Python: (denk even in dat die vier spaties tabs zijn, anders wil Python niet werken ;) )
class Foo:
    def __init__(self):
        self->doSomething("Hello world!")
    def doSomething (self, mytxt):
        print(mytxt)

if __name__ is "__main__":
    new Foo()

Java:
public class Foo {
     public Foo() {
          doSomething("Hello World!");
     }
     public void doSomething(String mytxt) {
          System.out.println(mytxt);
     }
     public static void main(String args[]) {
          new Foo();
     }
}
C++, bestand Foo.h:
#ifndef _FOO_H
#define _FOO_H
class Foo {
public:
    Foo();
    virtual ~Foo();
    void doSomething(const char *) const;
};
#endif // _FOO_H
C++, bestand Foo.cpp:
#include "Foo.h"
#include <iostream>

Foo::Foo() {
   doSomething("Hello world!");
}

Foo::~Foo() {
}

void Foo::doSomething(const char * c) const {
     std::cout << c << endl;
}
C++, main.cpp:
#include "Foo.h"

int main(int argc, char * argv[]) {
    Foo * f = new Foo();
    delete f;
    return 0;
}

Uiteraard beslis jij. Ik dring niemand iets op.

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline eendje

  • Lid
Re: Zelf een Linux distro/OS maken
« Reactie #15 Gepost op: 2008/12/28, 17:13:00 »
Python staat eigenlijk nog verder af van "native" omdat je hier direct van source-code interpreteert i.p.v. bytecode.
Is alleen de eerste keer als je runt, daarna wordt de gemaakte bytecode gerund.
Citaat
Vergeet ik bijna te zeggen dat het packagen ongeloofelijk moeilijk is.
Ik heb nog nooit iets gepackaged. Wat maakt packagen van Python moeilijker dan een ander taal? Kan me bijna niet voorstellen dat dat moeilijker is dan bij andere taal.

Citaat
Python: (denk even in dat die vier spaties tabs zijn, anders wil Python niet werken ;) )
class Foo:
    def __init__(self):
        self->doSomething("Hello world!")
    def doSomething (self, mytxt):
        print(mytxt)

if __name__ is "__main__":
    new Foo()


Spaties kan toch ook (als je het maar consequent doet) toch?
Een dag niets geleerd is een dag niet geleefd!
Ik blog dus ik besta!
__________________________________________________________
Een vraag? Heb je al eens gekeken op: http://wiki.ubuntu-nl.org/FAQ?

Re: Zelf een Linux distro/OS maken
« Reactie #16 Gepost op: 2008/12/28, 18:47:34 »
Gewoon instellen in Gedit dat een tab 4 spaties is.

Re: Zelf een Linux distro/OS maken
« Reactie #17 Gepost op: 2008/12/28, 21:03:27 »
Python staat eigenlijk nog verder af van "native" omdat je hier direct van source-code interpreteert i.p.v. bytecode.
Is alleen de eerste keer als je runt, daarna wordt de gemaakte bytecode gerund.
En in het geval dat je geen r+w permissies hebt? zoals wanneer het programma staat in /usr/bin ?
Citaat
Citaat
Vergeet ik bijna te zeggen dat het packagen ongeloofelijk moeilijk is.

Ik heb nog nooit iets gepackaged. Wat maakt packagen van Python moeilijker dan een ander taal? Kan me bijna niet voorstellen dat dat moeilijker is dan bij andere taal.
De meeste python-programma's zijn hardcoded-unix gemaakt. Als je in C++ een cross-platform toolkit gebruikt (zoals Qt) of in Java werkt, dan werkt het programma direct op alle systemen. Ik zie dat je nog nooit een python-programma voor Mac gepackaged hebt, maar ik nodig je uit om bijv. Phatch of Vidiqatch (om een paar te noemen die ik geprobeerd heb -- en waar ik de moed bij ben verloren -- te noemen) te packagen voor Mac. Niet zeggen dat je geen Mac hebt, cp, mv, en rm staan waarschijnlijk ook op jouw computer? Voor vidqatch kan je al direct Python als framework gaan compileren, eveneens Pil, Qt 4.3, PyQt, en nog een paar anderen. have fun.
Citaat
Citaat
Python: (denk even in dat die vier spaties tabs zijn, anders wil Python niet werken ;) )
class Foo:
    def __init__(self):
        self->doSomething("Hello world!")
    def doSomething (self, mytxt):
        print(mytxt)

if __name__ is "__main__":
    new Foo()


Spaties kan toch ook (als je het maar consequent doet) toch?
Nee, ik heb het geprobeerd, en bij mij slikt python alleen maar tabs. Kan ook zijn dat het komt doordat toen ik indertijd python probeerde te leren, ik de interpreter van Jython gebruikte.

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Re: Zelf een Linux distro/OS maken
« Reactie #18 Gepost op: 2008/12/28, 21:19:22 »
Dat van die Python en tabs is onzin. Ik gebruik alleen spaties in mijn programma's en dat werkt. Het moeten zelfs niet overal hetzelfde aantal spaties zijn, zolang alles wat bij elkaar hoort maar even ver is ingesprongen.

Offline eendje

  • Lid
Re: Zelf een Linux distro/OS maken
« Reactie #19 Gepost op: 2008/12/28, 23:42:48 »
Python staat eigenlijk nog verder af van "native" omdat je hier direct van source-code interpreteert i.p.v. bytecode.
Is alleen de eerste keer als je runt, daarna wordt de gemaakte bytecode gerund.
En in het geval dat je geen r+w permissies hebt? zoals wanneer het programma staat in /usr/bin ?
Oeps vergeten. Gelukkig schijnt het voor performance niet zo veel uit te maken, maar je hebt wel een punt ...
Citaat
Vergeet ik bijna te zeggen dat het packagen ongeloofelijk moeilijk is.
Citaat
Citaat
Ik heb nog nooit iets gepackaged. Wat maakt packagen van Python moeilijker dan een ander taal? Kan me bijna niet voorstellen dat dat moeilijker is dan bij andere taal.
De meeste python-programma's zijn hardcoded-unix gemaakt. Als je in C++ een cross-platform toolkit gebruikt (zoals Qt) of in Java werkt, dan werkt het programma direct op alle systemen.
Dat moet je de programmeur aanrekenen en niet de taal. Ik heb een programmaatje geschreven dat op zowel Windows als Linux werkt zonder problemen. Een Mac heb ik niet dus testen gaat een beetje moeilijk ondanks cp, rm en mv :D
Citaat
Ik zie dat je nog nooit een python-programma voor Mac gepackaged hebt, maar ik nodig je uit om bijv. Phatch of Vidiqatch (om een paar te noemen die ik geprobeerd heb -- en waar ik de moed bij ben verloren -- te noemen) te packagen voor Mac. Niet zeggen dat je geen Mac hebt, cp, mv, en rm staan waarschijnlijk ook op jouw computer? Voor vidqatch kan je al direct Python als framework gaan compileren, eveneens Pil, Qt 4.3, PyQt, en nog een paar anderen. have fun.
Citaat
Nooit geweten dat die libraries niet voor Mac bestaan... Maar dat is natuurlijk niet mijn fout. Vraag het de ontwikkelaars of ze een versie uitbrengen voor Mac. En dan, iets wat voor Quartz geschreven is werkt ook niet op Windows of Linux, dus...
Citaat
Citaat
Citaat
Python: (denk even in dat die vier spaties tabs zijn, anders wil Python niet werken ;) )
class Foo:
    def __init__(self):
        self->doSomething("Hello world!")
    def doSomething (self, mytxt):
        print(mytxt)

if __name__ is "__main__":
    new Foo()


Spaties kan toch ook (als je het maar consequent doet) toch?
Nee, ik heb het geprobeerd, en bij mij slikt python alleen maar tabs. Kan ook zijn dat het komt doordat toen ik indertijd python probeerde te leren, ik de interpreter van Jython gebruikte.

- SeySayux

Werkt hier prima en ben blijkbaar niet de enige ;) Wordt trouwens niet aangeraden door de ontwikkelaar, die spaties..
Een dag niets geleerd is een dag niet geleefd!
Ik blog dus ik besta!
__________________________________________________________
Een vraag? Heb je al eens gekeken op: http://wiki.ubuntu-nl.org/FAQ?

Offline oo7

  • Lid
Re: Zelf een Linux distro/OS maken
« Reactie #20 Gepost op: 2009/01/03, 16:23:54 »
als je het heel makkelijk voor jezelf wilt houden, maak dan simpelweg gebruik van Ubuntu Blokkendoos http://wiki.ubuntu-nl.org/UbuntuBlokkendoos
Misschien niet echt wat je wilt, maar het geeft je wel een goede indruk van hoe alles in elkaar zit en het is een goed begin
http://www.000webhost.com/74168.html Beste gratis webhosting die er is!!!
Wie zich via deze link aanmeld helpt een arme student (ik dus)

Re: Zelf een Linux distro/OS maken
« Reactie #21 Gepost op: 2009/01/06, 14:02:10 »
Om nog even terug te komen op dat packagen, dat is in Python dus juist heel goed geregeld. Daarvoor gebruik je de zogenaamde 'distutils' package. Uit m'n hoofd gaat het ongeveer als volgt:

- Je maakt een bestand setup.py waarin je de distutils module importeert en alle opties zet zoals versienummer, naam van het programma, license, welke python bestanden moeten worden geinstalleerd, welke databestanden, waar precies, etc.
- Als je nu het programma lokaal wilt installeren zorgt 'sudo python setup.py install' voor alles.
- Met 'python setup.py sdist' maak je een tar.gz of zip source package die iemand anders kan downloaden, uitpakken en installeren met het bovenstaande commando
- Met 'python setup.py bdist' hetzelfde maar de modules alvast gecompileerd naar bytecode
- Met 'python setup.py bdist_wininst' een gecompileerde versie met ingebouwde windows installer zodat een windows gebruiker alleen maar hoeft te dubbelklikken, en next, next, finish te doen. :)

Edit: Het maken van setup.py doet de programmeur dus meestal zelf, als je als gebruiker het pakket los wilt installeren is het 'sudo python setup.py install' commando voldoende. (Nog beter is natuurlijk installeren via je pakketbeheersysteem).
« Laatst bewerkt op: 2009/01/06, 20:09:50 door Jasper Groenewegen »

Re: Zelf een Linux distro/OS maken
« Reactie #22 Gepost op: 2009/01/06, 19:35:43 »
Om nog even terug te komen op dat packagen, dat is in Python dus juist heel goed geregeld. Daarvoor gebruik je de zogenaamde 'distutils' package. Uit m'n hoofd gaat het ongeveer als volgt:

- Je maakt een bestand setup.py waarin je de distutils module importeert en alle opties zet zoals versienummer, naam van het programma, license, welke python bestanden moeten worden geinstalleerd, welke databestanden, waar precies, etc.
- Als je nu het programma lokaal wilt installeren zorgt 'sudo python setup.py install' voor alles.
- Met 'python setup.py sdist' maak je een tar.gz of zip source package die iemand anders kan downloaden, uitpakken en installeren met het bovenstaande commando
- Met 'python setup.py bdist' hetzelfde maar de modules alvast gecompileerd naar bytecode
- Met 'python setup.py bdist_wininst' een gecompileerde versie met ingebouwde windows installer zodat een windows gebruiker alleen maar hoeft te dubbelklikken, en next, next, finish te doen. :)
alias py2applet=/Library/Frameworks/Python.framework/Versions/Current/bin/py2applet
py2applet --make-setup
python setup.py py2app -f QtCore -f QtGUI

Werkt prima hier :). Ik neem dus terug wat ik gezegd had.
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline eendje

  • Lid
Re: Zelf een Linux distro/OS maken
« Reactie #23 Gepost op: 2009/01/06, 21:27:43 »

alias py2applet=/Library/Frameworks/Python.framework/Versions/Current/bin/py2applet
py2applet --make-setup
python setup.py py2app -f QtCore -f QtGUI

Werkt prima hier :). Ik neem dus terug wat ik gezegd had.

Dat siert je :)
Een dag niets geleerd is een dag niet geleefd!
Ik blog dus ik besta!
__________________________________________________________
Een vraag? Heb je al eens gekeken op: http://wiki.ubuntu-nl.org/FAQ?