Premiär! Fyndchans i SweClockers Månadens Drop

En linux-distributions uppbyggnad!

Permalänk
Medlem

En linux-distributions uppbyggnad!

Eftersöker något material som beskriver hur en linuxdistribution faktiskt är uppbyggd. Inte bara själva kärnan, utan alltomkring också.
T.ex. kör vissa distributioner systemd o.s.v. och jag skulle då vilja kunna läsa lite mer vad det är och hur det hänger ihop med övriga systemet o.s.v. Med Arch linux får man ju installera mycket från grunden och lär sig en del, men ändå inte riktigt vad exakt allting är så att säga. Har ni någa källor, jag har inte riktigt hittat några bra?

Visa signatur

WS: Mac Studio M1 Max | 32 GB | 1TB | Mac OS
WS: Intel i5 12600K | 64 GB DDR4 @3600 Mhz | 2x1TB nvme 2x1TB SSD SATA | Windows 11 & Manjaro Linux
Bärbar: Macbook Pro 14" | M1 Pro | 16GB RAM | 512GB SSD | Mac OS
Servrar: Intel i7 10700K | 64 GB DDR4 @3600Mhz | 3 TB SSD + 22TB HDD | Unraid |
4x Raspberry pi 4b 8Gb | Dietpi |

Permalänk
Medlem
Skrivet av SanTeoX:

Eftersöker något material som beskriver hur en linuxdistribution faktiskt är uppbyggd. Inte bara själva kärnan, utan alltomkring också.
T.ex. kör vissa distributioner systemd o.s.v. och jag skulle då vilja kunna läsa lite mer vad det är och hur det hänger ihop med övriga systemet o.s.v. Med Arch linux får man ju installera mycket från grunden och lär sig en del, men ändå inte riktigt vad exakt allting är så att säga. Har ni någa källor, jag har inte riktigt hittat några bra?

Googla "Linux from scratch" den dokumentationen guidar dig hur du bygger allt från början.

Här är lite info om LFS

https://en.wikipedia.org/wiki/Linux_From_Scratch

Visa signatur

Mac Mini M2 Pro
5K

Permalänk
Medlem

Jag känner inte till någon text eller bok som beskriver allt.
http://dflund.se/~triad/gnulinux/gnulinux-2upl.pdf
Här är en bok på svenska som hyfsat grundligt beskriver hur gamla linux system funkade. Mycket har ändrats sedan boken skrevs men den kanske ändå kan vara användbar.

Eftersom Linux ekosystem ändras så ofta föreslås jag att du själv kolla upp vilka komponenter ett modernt system använder och själv kollar upp vad de är till för. Alla distributioner har någon form av system set med program som måste vara installerade. Det är vanligtvis de mest grundläggande komponenterna som måste finnas installerade för att systemet ska fungera.

T.ex. har alla system en kernel, ett C bibliotek, någon device manager som har hand om filerna i /dev (vanligtvis udev) osv...
Här har du en lista på alla paket i gentoos system set. Kolla upp vad alla dessa program gör och hur de fungerar och hur de interagerar med varandra så har du en hyfsad bild av hur linux system funkar. Notera att enbart de mest grundläggande paketen är med. Det finns t.ex. ingen desktop eller annat grafiskt system. Gentoo kompilerar allt från source så vissa paket måste vara med bara för att kunna kompilera andra saker. De flesta distributionerna inkluderar inte GCC i system settet.

Vad som är med i system settet beror på vilken arkitektur och profil man använder. Jag använder default/linux/amd64/13.0/desktop/kde.

Vissa av paketen är "virtual". De betyder att det finns många olika paket som kan ersätta varandra. T.ex. så krävs det ett C bibliotek (virtual/libc) men det finns många olika bibliotek att välja bland och bara ett behöver vara installerat (sys-libs/glibc vs sys-libs/musl vs sys-libs/uclibc). Det första paketet i virtual är default om man inte har något av de andra installerade redan.

app-arch/bzip2-1.0.6-r6 app-arch/gzip-1.6 app-arch/tar-1.27.1-r2 app-arch/xz-utils-5.2.2 app-shells/bash-4.3_p42-r1 dev-lang/perl-5.20.2 dev-lang/python-2.7.10-r1 net-misc/iputils-20121221-r1 net-misc/rsync-3.1.2 net-misc/wget-1.16.3-r1 sys-apps/baselayout-2.2 sys-apps/busybox-1.24.1 sys-apps/coreutils-8.23 sys-apps/debianutils-4.4 sys-apps/diffutils-3.3 sys-apps/file-5.22 sys-apps/findutils-4.4.2-r1 sys-apps/gawk-4.0.2 sys-apps/grep-2.21-r1 sys-apps/iproute2-4.3.0 sys-apps/kbd-1.15.5-r1 sys-apps/man-pages-4.03 sys-apps/net-tools-1.60_p20141019041918-r1 sys-apps/openrc-0.19.1 sys-apps/sed-4.2.1-r1 sys-apps/util-linux-2.26.2 sys-apps/which-2.20-r1 sys-devel/binutils-2.25.1-r1 sys-devel/bison-3.0.4-r1 sys-devel/flex-2.5.39-r1 sys-devel/gcc-4.9.3 sys-devel/gnuconfig-20150727 sys-devel/libtool-2.4.6 sys-devel/make-4.1-r1 sys-devel/patch-2.7.5 sys-fs/e2fsprogs-1.42.13 sys-process/procps-3.3.10-r1 sys-process/psmisc-22.21-r2 virtual/dev-manager-0 virtual/udev sys-apps/busybox[mdev] sys-fs/devfsd sys-fs/static-dev sys-freebsd/freebsd-sbin virtual/editor-0 app-editors/nano app-editors/dav app-editors/e3 app-editors/ee app-editors/efte app-editors/elvis app-editors/emacs app-editors/emacs-vcs app-editors/emact app-editors/ersatz-emacs app-editors/fe app-editors/jasspa-microemacs app-editors/jed app-editors/joe app-editors/jove app-editors/le app-editors/levee app-editors/lpe app-editors/mg app-editors/ne app-editors/neovim app-editors/ng app-editors/nvi app-editors/qemacs app-editors/teco app-editors/uemacs-pk app-editors/vile app-editors/vim app-editors/gvim app-editors/xemacs app-editors/zile app-misc/mc[edit] dev-lisp/cmucl mail-client/alpine[-onlyalpine] sys-apps/ed virtual/libc-0 sys-libs/glibc:2.2 sys-libs/musl sys-libs/uclibc sys-freebsd/freebsd-lib virtual/linux-sources-1 sys-kernel/gentoo-sources sys-kernel/vanilla-sources sys-kernel/ck-sources sys-kernel/git-sources sys-kernel/hardened-sources sys-kernel/mips-sources sys-kernel/openvz-sources sys-kernel/pf-sources sys-kernel/rsbac-sources sys-kernel/rt-sources sys-kernel/tuxonice-sources sys-kernel/usermode-sources sys-kernel/xbox-sources sys-kernel/zen-sources sys-kernel/aufs-sources sys-kernel/raspberrypi-sources virtual/man-0-r1 sys-apps/man-db sys-apps/man virtual/modutils-0 sys-apps/kmod sys-apps/modutils virtual/os-headers-0 sys-kernel/linux-headers:0 sys-freebsd/freebsd-lib virtual/package-manager-0 sys-apps/portage sys-apps/paludis sys-apps/pkgcore virtual/pager-0 sys-apps/less sys-apps/more sys-apps/most sys-apps/util-linux[ncurses] app-text/lv app-editors/vim[vim-pager] virtual/service-manager-0 sys-apps/openrc sys-apps/baselayout-prefix-2.2 sys-apps/systemd virtual/shadow-0 sys-apps/shadow-4.1 sys-apps/hardened-shadow virtual/ssh-0 net-misc/openssh net-misc/dropbear

Permalänk
Medlem

Hur "en linuxdistribution" är uppbyggd går inte att generellt svara på, då det är precis det problemet varje distribution löser - hur systemet ska byggas upp och paketeras.

LFS är bra för att förstå vilka olika komponenter som (oftast) ingår i ett system. Beroende på hur du är lagd kanske det dock är lite väl lågnivå (checka ut källkod, patcha, kompilera) - men väldigt lärorikt.

Du nämner systemd och nu vill det sig ju så väl att många distributioner har valt att använda detta initsystem. Därför är du nog inne på rätt väg att börja förstå syftet med ett initsystem och hur (systemd i det här fallet) fungerar.
Detta kan vara väldigt överväldigande om man kommer rakt in i dagens situation utan att kunna historiken. Jag skulle därför rekommendera att först läsa på lite om hur det brukade fungera för att få ett bra utgångsläge att förstå framförallt varför systemd skapades och vilka problem det löser. (Innan användes främst "SysVinit" vilket i stort sett bara är en samling shellscript som exekveras i en viss ordning.)
Lennart Poetterings blogg (http://0pointer.net/blog/projects/systemd.html) är en bra början även om hans poster tenderar att bli väldigt långa!

Permalänk
Medlem

Tack för era svar!

Anledningen till att jag frågar är att jag vill öka min kunskap kring hur allt hänger ihop i en linux-distribution. Jag är en ganska van användare av linux, både i arbetet och på hemmafronten, men har egentligen inte gått in på djupet för att förstå hur allt faktiskt fungerar.

På mina egna maskiner kör jag Ubuntu Server, Ubuntu desktop, Linux Mint, Arch linux på några raspberry pi:s (inget gui, enbart som servrar) o.s.v.

Visa signatur

WS: Mac Studio M1 Max | 32 GB | 1TB | Mac OS
WS: Intel i5 12600K | 64 GB DDR4 @3600 Mhz | 2x1TB nvme 2x1TB SSD SATA | Windows 11 & Manjaro Linux
Bärbar: Macbook Pro 14" | M1 Pro | 16GB RAM | 512GB SSD | Mac OS
Servrar: Intel i7 10700K | 64 GB DDR4 @3600Mhz | 3 TB SSD + 22TB HDD | Unraid |
4x Raspberry pi 4b 8Gb | Dietpi |