Hva er MLFS (Multilib-LFS)?
Multilib-LFS er en variant av LFS boken. Denne varianten bygger et system som kan kjøre 32-bit binærfiler.
Det høres trivielt ut, men det er det ikke. Nå til dags er nesten alle CPU-er i datamaskinene våre 64-bit, og de fleste av dem er Intel kompatible. Dette har skjedd før, for mange år siden, da 16-bit CPU-er (8086) var vanlige og nye 32-bit CPU-er kom opp (80386). Felles for alle disse CPU-ene er at de er i stand til å utføre maskininstruksjoner fra tidligere arkitekturer, noe som betyr at en 32-bit CPU kan utføre 16-bit instruksjoner, en 64-bit CPU kan utføre 32-bit instruksjoner, og så videre. Problemet er at det binære formatet som disse instruksjonene lagres i er forskjellig.
Siden denne CPU arkitekturen har eksistert i flere tiår nå, finnes det også mye programvare skrevet for den. Dessverre er noe av denne programvaren bare tilgjengelig i en forhåndskompilert binærfil, og ingen kildekode er lenger tilgjengelig. Dette kan skyldes flere forskjellige årsaker, for eksempel at kildekoden har gått tapt eller aldri blitt publisert på grunn av lisensproblemer, eller fordi skaperen ikke ønsket å gi ut kildekoden. I disse tilfellene er imidlertid binærfilen fortsatt tilgjengelig.
Siden formatet til 64-bits og 32-bits binærfiler er forskjellig, kan ikke disse gamle programmene kjøres på moderne systemer. Det er her multilib systemene kommer inn i bildet, og dermed Multilib-LFS. Multilib systemer sørger for miljøet slik at 32-bits binærfiler også kan kjøres på et 64-bits operativsystem. Dette må støttes i kjernen, men det må også være flere andre kjernebiblioteker tilgjengelige i 32-bits versjoner.
Men det er ikke alt. Det finnes en annen arkitektur som ligger noe mellom 32- og 64-biters. Den kalles x32. Det vil si at binærfilene opererer med hele instruksjonssettet til en 64-biters CPU, men adresseområdet er begrenset til 32-biters (~4 GB). Å kjøre slike binærfiler krever enten et system som er bygget eksplisitt for x32 eller et multilib system som er i stand til å kjøre disse binærfilene.
Multilib-LFS boken er basert på den faktiske LFS boken, men har noen utvidelser i instruksjonene. I de fleste tilfeller er disse utvidelsene repetisjoner av byggeinstruksjonene, men bare i en annen modus (m32 og/eller mx32).
Hvorfor skulle jeg ønske meg et MLFS system?
Vanligvis er det ikke nødvendig å kjøre et multilib system. Men det kan være omstendigheter der du trenger et:
Annen programvare krever multilib
For virtualisering (her VirtualBox) er m32 multilib nevnt som en forutsetning. Når du vil installere VirtualBox på et LFS system som din VM-vert, trenger du bare fire ekstra ikke-BLFS pakker. Hvis du vil gjenoppbygge 64-biters og 32-biters gjestetillegg, kreves et multilib operativsystem for å bygge dem.
Les på nett
Det finnes tre versjoner av Multilib-LFS på nett for sysv:
- MLFS sysv med m32 utvidelser (sannsynligvis den du vil ha)
- MLFS sysv med mx32 utvidelser
- MLFS sysv inkludert begge utvidelsene
- MLFS systemd med m32 utvidelser (sannsynligvis det du vil ha hvis du liker systemd)
- MLFS systemd med mx32 utvidelser
- MLFS systemd inkludert begge utvidelsene
Begrensninger
- MLFS er vanskelig å teste med mindre det finnes gamle binærfiler tilgjengelig. Når en slik binærfil er kjørbar, betyr det dessverre ikke at noen andre av disse binærfilene også vil kjøre. Det kan være BLFS bibliotekpakker som kreves som avhengigheter i det bestemte multilib miljøet. Verken MLFS eller BLFS dekker det for øyeblikket (det finnes ingen MBLFS), men MLFS bør gi brukeren en idé om hvordan man bygger multilib versjoner av biblioteker.
- MLFS er tilgjengelig for sysv og systemd som vanlig (REV=sysv eller REV=systemd som parameter til make kommandoen. Se Nedlasting). Merk at systemd varianten for øyeblikket vedlikeholdes på en «beste gjetning» basis. Det betyr at de systemd relaterte instruksjonene ikke er testet. Hvis du oppdager feil i instruksjonene, gi meg beskjed.
Takk til
- William Feely som startet et lignende prosjekt for et tiår siden
- DJ Lucas, Xi Ruoyao, Douglas R. Reno og mange flere