Kirjoittaja Aihe: GNU/Linuxin jousto-ominaisuudet  (Luettu 4653 kertaa)

tmv

  • Käyttäjä
  • Viestejä: 81
    • Profiili
GNU/Linuxin jousto-ominaisuudet
« : 24.11.15 - klo:21.08 »
Mikä tekee tietystä distrosta juuri sen kyseisen distron?

Voidaan varmasti sanoa, että /proc/sys hakemiston tiedostot, mutta entäpä hieman syvällisemmin?

Ja sitten. Seuraavan kysymyksen tarkoitus on hahmottaa myös edellistä kysymystä: onko mahdollista muokata esim. Ubuntu jakelusta täydellinen Arch Linux?

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #1 : 24.11.15 - klo:21.37 »
Kysytpä vaikeita. ;D Saahan sitä kysyä ja ajattelin yrittää vastata. Muilla on varmaan parempia näkemyksiä.

Mikä tekee tietystä distrosta juuri sen kyseisen distron?

Minä olisin ainakin äkkiseltään sitä mieltä, että pakettivarastot ovat se suurin yksittäinen juttu. Jakelun paketoijat ovat valinneet sinne haluamansa ohjelmat ja ehkä korjanneet niitä sekä useimmiten myös kääntäneet ne valmiiksi binääriksi (asennuspaketeiksi). Näistä ohjelmista on myös koostettu jakelun asennuslevy, joka sekin on omalla tavallaan tärkeä. Jakeluun kuuluu myös usein jokin ideologia ja jakelun ympärille on myös muodostunut yhteisö, joka toki on usein osittain päällekkäinen eri jakelujen välillä (itsekin käytän nykyään enemmän Fedoraa ja Arch Linuxia kuin Ubuntua). Jos jakelusta vaihtaisi kaikki paketit, vaihtuisivat kaikki ohjelmat ja sittenhän käytössä olisi jokin toinen jakelu, mutta voiko sitten sanoa, että muokkasi yhdestä jakelusta toisen vai tuliko vain asentaneeksi toisen jakelun.

Muuten esimerkiksi Debianin voi asentaa toisesta jakelusta käsin debootstrapillä ja tietysti Linux on myös mahdollista asentaa ilman mitään jakelua tai pakettienhallintaa. Tähän löytyy ohjeita esimerkiksi Linux From Scratch -sivustolta.

Ja sitten. Seuraavan kysymyksen tarkoitus on hahmottaa myös edellistä kysymystä: onko mahdollista muokata esim. Ubuntu jakelusta täydellinen Arch Linux?

Suurin ero näiden kahden välillä on varmaankin ideologiassa, koska Arch pyrkii olemaan mahdollisimman yksinkertainen ja antaa valta käyttäjälle, mutta Ubuntun ajatus on enemmänkin olla käyttäjäystävällinen yleisemmin käsitettävässä muodossa. Näkyvin ero lienee kuitenkin pakettienhallinnassa ja pakettivarastoissa, koska Arch käyttää omaa pacman pakettienhallintaansa ja Ubuntussa on käytössä apt-pakettienhallinta ja deb-paketit, jotka ovat peräisin Debianista. Tosin nyt Canonicalilla on tohina päällä siirtyä Snappy-paketteihin ja -pakettienhallintaan. Lisäksi Archin pakettivarastoissa pyritään julkaisemaan tuoreimmat vakaat versiot (Archilla itsellään ei ole versioita vaan se on ns. rolling release) toisin kuin Ubuntun varastoissa, joissa saatavilla ovat yleensä uusimmat ennen Ubuntun julkaisua ilmestyneet vakaat versiot.

Ehkäpä olisi mahdollista asentaa pacman Ubuntuun ja alkaa pikkuhiljaa korvaamaan järjestelmän osia Archin vastaavilla. Tällöin voisi ajatella, että Ubuntu muuntuisi Arch Linuxiksi.

Joku voisi varmaan väittää, että yhteisö (siis kehittäjät ja käyttäjät) tekevät jakelun. Odotan, että joku perustelee senkin. ;D
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Postimies

  • Käyttäjä
  • Viestejä: 2644
    • Profiili
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #2 : 24.11.15 - klo:23.19 »
Arch Linuxin saa  muistuttumaan Ubuntua, mutta Ubuntua tuskin Arch Linuxia. Ubuntun asennusmedilla olen asentanut Gentoon ja Arch Linuxin. Ubuntu on hankalampi asentaa debootstrapilla tai etänä. Arch Linuxia asentaessa voi tehdä niin paljon erilaisia valintoja, että tuskin on kahta samanlaista asennusta. Arch Linuxia en ole aikoihin käyttänyt, mutta Gentoossa ainakin softat saa alkuperäisessä asussaan ilman jakelun logoja. No työpöydän teemat ja muut kikkareet saa toki vaihdettua halutunlaisiksi. Suosittelen kokeilemaan Arch Linuxin asentamista chrootin alla vaikka etänä. Wiki on hyvä ja auttaa ymmärtämään miten järjestelmä toimii. Paketinhallinta on laaja ja sisältää paljon sellaista mitä Ubuntussa ei ole. Ubuntussa hyvä tuki eri laitteille valmiina.  Arch Linuxissa sitten jonkun bluetooth laitteen toimintaan saaminen voi viedä aikaa. Arch Linux on hyvä johonkin erikoistarkoitukseen. Perustyöpöydän saa Ubuntulla nopeasti kielituen kanssa. Jos haluaa vaikka htpc:n ilman tulostin, skanneri, kamera, bluetooth, samba... ym. ajureita ja palveluita sitä on Ubuntulla hankala toteuttaa.

Arch Linuxissa on myös suhteellisen helppo asentaa ohjelmia lähdekoodista. Mitä kääntäjää ja mitä optimointiasetuksia käyttää voi jonkin verran vaikuttaa suorituskykyyn. Gcc:ssä riittää erilaisia vipuja hurja määrä. Koodi voidaan optimoida tietylle prosessorille. Silloin systeemiä ei voi enää siirtää erilaiseen koneeseen ilman uudelleen käännöstä.

juyli

  • Vieras
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #3 : 25.11.15 - klo:00.21 »
Mikä tekee tietystä distrosta juuri sen kyseisen distron?
Ehkä lyhykäisyydessään: sopivasti käännetyn Linux-kernelin ympärille on koottu toimiva kirjastojen ja ohjelmien kokonaisuus, unohtamatta hakemistohierarkiaa ja (ehkä) päivitysmetodeja.

JaniAlander

  • Käyttäjä / moderaattori+
  • Viestejä: 3370
    • Profiili
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #4 : 25.11.15 - klo:11.47 »
Mulla on vähän semmoinen epäily, jos yrittää palan kerrallaan vaihtamalla tehdä Ubuntusta Archia, kaatuu koko korttitalo jossain kohtaa projektia näyttävään sekoamiseen. Eri jakeluissa on monesti erilaisia oletuksia esim. hakemistohierarkian yms. suhteen.

Linux itsessään ei taida pahemmin välittää noista hakemistohierarkioista yms.. Eikös joskus ollut sellainenkin projekti missä suurin piirtein murjottiin perinteinen Unix-tyylinen hierarkia ihan uuteen uskoon (Lähemmäs Windowsin tyyliä)?


Core i5-9400F 2.9ghz 32GB Ram, Nvidia RTX2060 Kubuntu 24.04-64bit, Windows 10 Pro 64-bit Samsung Series 5, AMD A-6 2.1 GHz 4 Gt Ram, Ubuntu 18.04 64-bit.
Lenovo T60 Core2Duo 2GB Ram Ati Mobility Radeon 128 MB Ubuntu Mate 16.04-64bit
Commodore Amiga 500 1MB Ram.

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #5 : 25.11.15 - klo:12.26 »
Linux itsessään ei taida pahemmin välittää noista hakemistohierarkioista yms.. Eikös joskus ollut sellainenkin projekti missä suurin piirtein murjottiin perinteinen Unix-tyylinen hierarkia ihan uuteen uskoon (Lähemmäs Windowsin tyyliä)?

Joo, vaihtoehtoisia virityksiä (kuten GoboLinux) on nähty vuosien varrella, ja tulevaisuuden kannalta mahdollisesti hyvin merkittäviä projekteja kehitetään tälläkin hetkellä. Nix ja siitä haarautunut GNU Guix edustavat järjestelmänlaajuisen pakettienhallinnan seuraavaa sukupolvea. NixOS:n hakemistohierarkia eroaa etenkin /usr:n osalta merkittävästi FHS:stä, mutta mahdollistaa saman paketin eri versioiden asentamisen ja käytön samanaikaisesti, ja mm. puhtaan rollbackin aiempaan tilaan.

https://nixos.org/nixos/about.html
http://dustycloud.org/misc/talks/guix/chicagolug_2015/guix_talk.html

tmv

  • Käyttäjä
  • Viestejä: 81
    • Profiili
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #6 : 25.11.15 - klo:12.26 »
Mulla on vähän semmoinen epäily, jos yrittää palan kerrallaan vaihtamalla tehdä Ubuntusta Archia, kaatuu koko korttitalo jossain kohtaa projektia näyttävään sekoamiseen. Eri jakeluissa on monesti erilaisia oletuksia esim. hakemistohierarkian yms. suhteen.

Eli voidaanko sanoa mitään spesifiä kohdetta sinänsä, mihin kohtaan se voisi kaatua? Jos lähtee poistamaan ubuntusta window managerin, Xorgin, dpkg-järjestelmän ym. Ja mitähän muita oletuksia eri jakeluilla on kuin hakemistohierarkia?

Jos jättää huomioimatta mahdolliset käytännön tekniset ongelmat, niin teoriassa voisi olla mahdollista poistaa käyttöjärjestelmästä kaikki paketit/ohjelmat ja jos järjestelmän haluaa vielä palauttaa, konsoli ja muutama ohjelma voisi olla hyödyllisiä.

#####

Ehkä Linux From Scratch voisi paljastaa miten järjestelmä todellisuudessa rakentuu. Mutta ei vaikuta ensi alkuun ihan parin illan projektilta, vaikka tuosta aikaisemminkin kuullut. Sellainen käsitys oli, että se tarjoaa kernelin tai itseasiassa sekin pitää kääntää itse ja sitten kasataan ohjelmia päälle. Mitä se sitten käytännössä tarkoittaakaan.

Lopuksi vielä teemaan liittyen:

Koodia: [Valitse]
# rm /bin/rmOnnistuuko ja miksi?

« Viimeksi muokattu: 25.11.15 - klo:12.30 kirjoittanut noquaa »

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #7 : 25.11.15 - klo:12.46 »
Eli voidaanko sanoa mitään spesifiä kohdetta sinänsä, mihin kohtaan se voisi kaatua? Jos lähtee poistamaan ubuntusta window managerin, Xorgin, dpkg-järjestelmän ym. Ja mitähän muita oletuksia eri jakeluilla on kuin hakemistohierarkia?

Kriittisin vaihe on C-peruskirjaston (yleensä glibc) ja muiden keskeisten kirjastojen, init-järjestelmän sekä keskeisten komentorivityökalujen korvaaminen uusilla. Nämä kaikki pitää vaihtaa "samanaikaisesti". Eli jos muokkaat järjestelmää sen ajon aikana, et voi korvata pelkkää glibc:tä toisen jakelun versiolla ja sitten jatkaa puuhastelua seuraavan kirjaston parissa, koska kaikki muut binäärit lakkaavat toimimasta glibc:n vaihdon kohdalla.


Jos jättää huomioimatta mahdolliset käytännön tekniset ongelmat, niin teoriassa voisi olla mahdollista poistaa käyttöjärjestelmästä kaikki paketit/ohjelmat ja jos järjestelmän haluaa vielä palauttaa, konsoli ja muutama ohjelma voisi olla hyödyllisiä.

On mahdollista, mutta käytännössä aika vaivalloista ja korttitalo sortuu herkästi. Käytännössä pitäisi joko asentaa chrootiin erillinen minimaalinen työskentely-ympäristö komentotulkkeineen ja perusohjelmineen, tai lähteä asentamaan uutta jakelua nykyisen järjestelmän rinnalle (omaan chrootiin) ja sitten korvata alla oleva Ubuntu uudella järjestelmällä kerralla.


Ehkä Linux From Scratch voisi paljastaa miten järjestelmä todellisuudessa rakentuu.

Kyllä.


Lopuksi vielä teemaan liittyen:

Koodia: [Valitse]
# rm /bin/rmOnnistuuko?

Onnistuu. rm ladataan muistiin ennen kuin se suoritetaan, eikä Linuxissa/Unixissa lukita käytössä olevia tiedostoja, joten rm voi vaivatta poistaa levyllä olevan version itsestään.

Koodia: [Valitse]
$ sudo cp /bin/rm /bin/rm.backup

$ sudo rm /bin/rm

$ ls /bin/rm
ls: tiedostoa /bin/rm ei voi käsitellä: Tiedostoa tai hakemistoa ei ole

$ sudo mv /bin/rm.backup /bin/rm
« Viimeksi muokattu: 25.11.15 - klo:12.49 kirjoittanut nm »

JaniAlander

  • Käyttäjä / moderaattori+
  • Viestejä: 3370
    • Profiili
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #8 : 25.11.15 - klo:15.00 »
Tuollaisena teoreettisena pohdintana, miten mahtaisi temppu Ubuntusta Debian onnistua? Olettaen että valitaan lähdejärjestelmän ja kohdejärjestelmän versio huolellisesti. Nehän ovat sikäli lähisukulaisia, ettei luulisi vastaavassa määrin ongelmia tulevan.
Core i5-9400F 2.9ghz 32GB Ram, Nvidia RTX2060 Kubuntu 24.04-64bit, Windows 10 Pro 64-bit Samsung Series 5, AMD A-6 2.1 GHz 4 Gt Ram, Ubuntu 18.04 64-bit.
Lenovo T60 Core2Duo 2GB Ram Ati Mobility Radeon 128 MB Ubuntu Mate 16.04-64bit
Commodore Amiga 500 1MB Ram.

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #9 : 25.11.15 - klo:15.39 »
Tuollaisena teoreettisena pohdintana, miten mahtaisi temppu Ubuntusta Debian onnistua? Olettaen että valitaan lähdejärjestelmän ja kohdejärjestelmän versio huolellisesti. Nehän ovat sikäli lähisukulaisia, ettei luulisi vastaavassa määrin ongelmia tulevan.

Teoriassa on mahdollista korvata suoraan Ubuntun pakettilähteet Debianin lähteillä ja pakottaa Debianin paketit asentumaan järjestelmään. Todennäköisesti tässä kuitenkin päätyy aika syvään suohon ratkomaan pakettien riippuvuusongelmia.

Postimies

  • Käyttäjä
  • Viestejä: 2644
    • Profiili
Vs: GNU/Linuxin jousto-ominaisuudet
« Vastaus #10 : 25.11.15 - klo:21.43 »
Eli voidaanko sanoa mitään spesifiä kohdetta sinänsä, mihin kohtaan se voisi kaatua? Jos lähtee poistamaan ubuntusta window managerin, Xorgin, dpkg-järjestelmän ym. Ja mitähän muita oletuksia eri jakeluilla on kuin hakemistohierarkia?

Kriittisin vaihe on C-peruskirjaston (yleensä glibc) ja muiden keskeisten kirjastojen, init-järjestelmän sekä keskeisten komentorivityökalujen korvaaminen uusilla. Nämä kaikki pitää vaihtaa "samanaikaisesti". Eli jos muokkaat järjestelmää sen ajon aikana, et voi korvata pelkkää glibc:tä toisen jakelun versiolla ja sitten jatkaa puuhastelua seuraavan kirjaston parissa, koska kaikki muut binäärit lakkaavat toimimasta glibc:n vaihdon kohdalla.

Eikös tuon voisi tehdä joku metapaketti? Chrootin alla ainakin voisi mennä läpi.

Gentoossa jos vaihdetaan c-kääntäjää ja/tai kääntäjän asetuksia tehdään näin.
1. Asennetaan uusi kääntäjä ja otetaan se käyttöön.
2. Käännetään kerneli ja asennetaan se
3. ajetaan emerge -e system
4. käynnistetään uudestaan ja ajetaan emerge -e world

Jos kaikki menee kerralla läpi on koko systeemin binaarit käännetty uusiksi ja päivitetty. Samalla voi muuttaa käynnistysjärjestelmän ja kaikkea muutakin. Jos haluaa varman päälle pelata niin lopuksi vielä emerge -c (poistetaan turhat kirjastot) ja emerge -e world toisen kerran. Eli lyhyesti:

5. emerge -c && emerge -e world

emerge -c poistaa vanhan kääntäjän, mutta ei vanhoja kerneleitä - tai jos ollaan tarkkoja vanhojen kerneleiden lähdekoodit lähtee mutta ei asennettuja binaareja. C-kääntäjähän käännetään osaksi itsellään. Jostain minulla on sellainen käsitys, että se tarvitsisi pari käännöstä.  Kumpi on ensin muna vai kana? Lähdekielinen C pitänee ensin jollain kääntää...