Een reparatiedisk aanpassen: de weg naar LFS

Vaak hebben we een systeem moeten repareren vanaf een LiveCD, en op een bepaald moment in het proces hebben we een tool gemist en wanneer we het willen installeren, vertelt het LiveCD OS ons dat er geen ruimte meer is en knoflook en water (om af te neuken en vast te houden).

Dit probleem is echt bij me gekomen omdat ik naar LFS ging (Linux FromScratch), wat een gids is (GEEN distributie zelf) om een ​​aangepaste Linux. Het punt van deze "distributie" is dat je vanaf elke LiveCD, en met de juiste tools, de kernelcode en andere tools downloadt om je eigen systeem te bouwen (alles beetje bij beetje compilerend). Als je de stapsgewijze handleiding wilt volgen, heb je verschillende tools en compilers nodig, en er is geen liveCD bij alles, dus je moet er een aanpassen.

Laten we het doen. We zullen de SystemRescueCD, die een redelijk uitgebreide Gentoo-gebaseerde omgeving biedt.

In ons voorbeeld (een Linux vanaf nul installeren volgens het Linux From Scratch-boek) missen we de Bison- en Makeinfo-programma's, dus gaan we een nieuwe ISO-image van deze schijf maken, maar met de nieuwe tools.

LET OP: Gentoo is een distributie die compileert in situ alle pakketten moeten worden geïnstalleerd, daarom is het proces van het toevoegen en bijwerken van programma's traag.

Hoewel een pakketbeheerder wordt gebruikt (zoals Debian's apt-get), wordt in plaats van pakketten te downloaden de broncode gedownload om deze op uw machine te compileren.

Voor het proces heb je een Linux-partitie nodig (bijvoorbeeld ext4) met minimaal 1.5G gratis, hoewel meer wordt aanbevolen. Als je niet met je partities wilt spelen, maak dan gebruik van een virtuele machine. Het is natuurlijk aan te raden dat de partitie meerdere optredens heeft, aangezien tijdens het compileren, installeren, synchroniseren van repositories ... tijdelijke ruimte nodig is; Ik raad aan om een ​​8G + 2G swappartitie te gebruiken (met 4G + 1G zou het voldoende moeten zijn, maar we kunnen je verzekeren dat als RAM / swap ontbreekt, het proces nog langzamer zal zijn).

Ervan uitgaande dat u een virtuele machine met een 10G-schijf hebt gemaakt, start u deze door hem te laten opstarten vanaf de nieuw gedownloade SystemRescueCd. Eenmaal binnen partitioneren we met fdisk (als je de grafische sessie hebt gestart, kun je dat doen met gparted, maar het doel van dit bericht is om het gebruik van basistools te leren). fdisk is een interactieve opdracht:

  • met de optie "n" maken we een nieuwe partitie aan
  • met de optie "t" veranderen we het type bestandssysteem dat in de partitie komt
  • met de optie «w» schrijven we naar de schijf
  • met de optie «q» vertrekken we zonder de wijzigingen te schrijven

Als we de "n" optie gebruiken, geeft het ons verschillende opties, de hele tijd zullen we de standaard gebruiken, behalve bij het instellen van de laatste sector in de eerste partitie, die we zullen moeten schrijven "+ 8G", waarmee we aan het programma aangeven dat we willen dat onze partitie 8GB bezet.

Bij het maken van de tweede partitie zullen we de standaardopties gebruiken, aangezien de rest van de ruimte bezet zal zijn. Om fdisk te vertellen dat de tweede partitie van het type swap zal zijn, gebruik je de "t" optie (de hexcode voor swap is 82). De interface ziet er als volgt uit:

% fdisk / dev / sda Commando (m voor hulp):

Als alles klaar is, gebruiken we de "w" optie om de wijzigingen naar schijf te schrijven en af ​​te sluiten.
Nu is het tijd om de partities te formatteren. We beginnen met de swap om er direct gebruik van te kunnen maken:

% mkswap / dev / sda2% swapon / dev / sda2

We hebben de swappartitie al geformatteerd, en met het commando ruilen we zijn ermee begonnen. Nu formatteren we de eerste partitie in ext4:

% mkfs.ext4 /dev/sda1

We kunnen beginnen met het volgen van de stappen beschreven in http://www.sysresccd.org/Sysresccd-manual-en_How_to_personalize_SystemRescueCd, hier vertaal / beschrijf ik ze met een vreemde aantekening.

We mounten de partitie op zijn plaats (de LiveCD wordt al voorbereid geleverd met een map / mnt / custom waar de partitie waarin we de juiste wijzigingen zullen aanbrengen, moet worden gemount). Ook na het aankoppelen zullen we de bestanden van de schijf moeten extraheren, dit wordt bereikt met een script dat al is voorbereid. Het script duurt even (aangezien het honderden megabytes geheugen dumpt), als je wilt controleren of het echt werkt, ga dan naar een andere terminal (met bijvoorbeeld Alt + F4) en voer een df -h.

% mount / dev / sda2 / mnt / custom% / usr / sbin / sysresccd-aangepast extract

Als je nu naar binnen navigeert / mnt / custom / customcd, ziet u verschillende mappen. In / mnt / custom / customcd / files het rootbestandssysteem wordt gevonden. Nu is het tijd om het toekomstige nieuwe systeem te chroot. Hier ga ik de commando's plaatsen, voor meer informatie over chroot kun je zien deze tutorial heb ik een maand geleden geschreven

% mount -o bind / proc / mnt / custom / customcd / files / proc% mount -o bind / dev / mnt / custom / customcd / files / dev% mount -o bind / sys / mnt / custom / customcd / files / sys% chroot / mnt / custom / customcd / files / bin / bash # gcc-config $ (gcc-config -c)

We zitten al in het gechroot-systeem, dat het LiveCD-systeem zal zijn zodra we het opstarten. We zullen de ontbrekende pakketten (bison en texinfo) installeren met behulp van het commando te voorschijn komen (wie verzorgt het pakket van portage van gentoo).

Eerst synchroniseren we de portage-structuur (het equivalent van apt-get update)
# emerge-webrsync OPMERKING: we gebruiken dit commando in plaats van "emerge –sync" omdat het sneller is, aangezien het een tar pack van het web downloadt. Deze stap is nodig, want als je niet tevoorschijn komt, zal het automatisch tevoorschijn komen –sync, wat het vertraagt.

Na het synchroniseren van de portage tree kunnen we doorgaan met het installeren van de pakketten:

# emerge sys-devel / bison # emerge sys-devel / texinfo
Bizon zal even duren om te compileren, wees geduldig

We laten chroot:# exit

We ontkoppelen "/ proc" zodat de nieuw geïnstalleerde pakketten worden opgeslagen in squashfs. We ontkoppelen ook "/ dev" en "/ sys" zodat we het later niet vergeten
% umount /mnt/custom/customcd/files/proc
% umount /mnt/custom/customcd/files/dev
% umount /mnt/custom/customcd/files/sys

Omdat we het nieuwe squashbestandssysteem al klaar hebben, maken we het met het volgende commando
% /usr/sbin/sysresccd-custom squashfs
Als we een bestand aan de ISO-afbeelding willen toevoegen maar we willen dat het buiten squashfs staat, moeten we het in de map «/ mnt / custom / customcd / isoroot» plaatsen

% cp -a my-files /mnt/custom/customcd/isoroot

Op dit punt vertelt de officiële gids je dat je de keymap kunt instellen om op te starten met een standaardtoetsenbord (bijvoorbeeld "es" voor Spaanse toetsenborden). Maar door verschillende tests uit te voeren, werkte het script dat ze voor mij gebruiken niet en het resulteerde in een fout bij het laden van de kernel, dus ik zal deze stap overslaan.

Het glorieuze moment is aangebroken, we kunnen nu de nieuwe ISO-afbeelding genereren met ons aangepaste systeem!
% /usr/sbin/sysresccd-custom isogen my_srcd
"My_srcd" is de naam die we aan het volume geven, je mag het noemen zoals je wilt. De afbeelding wordt opgeslagen in «/ mnt / custom / customcd / isofile», daarnaast wordt er ook een .md5-bestand gegenereerd 🙂

Als u op een virtuele schijf werkt, blijft de cruciale stap: extraheer de ISO-afbeelding van het virtuele systeem. Er zijn verschillende manieren om dit te doen, ik zal een simpele uitleggen (in VirtualBox) om te voorkomen dat je "gasttoevoegingen" of iets dergelijks moet installeren.
We zullen de client gebruiken om het bestand via een ssh-tunnel te verkrijgen. Om dit te doen, moeten we eerst het gastsysteem configureren met een root-wachtwoord. De ssh-server start automatisch, we herstarten hem nog steeds voor het geval dat.
% passwd
% /etc/init.d/sshd restart

We moeten de port forwarding van de virtuele machine configureren. In VirtualBox gaat het als volgt:

  1. U hebt toegang tot de configuratie van de virtuele machine
  2. In de netwerksectie heb je al een adapter in NAT geconfigureerd
  3. Zoek naar de optie voor poortdoorschakeling
  4. U voegt een nieuwe regel toe, met de enige parameters "hostpoort" en "gastpoort"
  5. host = 3022 en guest = 22

Hiermee hebben we bereikt dat poort 3022 van onze pc 22 is van de virtuele machine. We starten de Filezilla-client:

  1. In de serverparameter schrijven we: sftp: // localhost
  2. In de gebruikersnaam parameter schrijven we: root
  3. In de wachtwoordparameter plaatsen we degene die we gebruiken in «passwd»
  4. In de poortparameter schrijven we: 3022
  5. Klik op «Snelle verbinding»

Als alles goed is gegaan, kunnen we naar links navigeren op onze pc en naar rechts in de virtuele machine. Het is voldoende om (in de virtuele machine) toegang te krijgen tot de map «/ mnt / custom / customcd / isofile» en de ISO-afbeelding naar de gewenste plaats op onze pc te slepen.

!! Gefeliciteerd !! Als alles goed is gegaan, heb je je ISO-image klaar met een aangepaste SystemRescueCD en klaar om op te starten vanaf een CD, USB ...


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Leeuw zei

    Wat een goede gids, ietwat ingewikkeld maar erg handig.
    Goede bijdrage.

  2.   Leper_Ivan zei

    Dan met wat meer tijd, en zonder zoveel ongemak in de ogen, zal ik het grondig lezen. Het lijkt erg nuttig en interessant.

  3.   Carlos Sanchez zei

    Hallo woqer, zeer goede post!

    Ik werk al een aantal jaren bij LFS en ik heb mijn eigen iso gemaakt die je van dienst kan zijn, het heeft alles wat je nodig hebt om te compileren, aangezien het een LFS is. 😀 Ik hoop dat het nuttig voor je is

    http://vegnux.org.ve/files/isos/neonatox-06.2rc6.linux-i686-xfce4.iso