ARCHINSTALL(1)

NUME
archinstall - documentație archinstall

archinstall este o bibliotecă care poate fi utilizată pentru a instala Arch Linux. Biblioteca vine împachetată cu diferite instalatoare pre-configurate, cum ar fi programul de instalare implicit de instalare ghidată „Guided installation” <#guided>.

Unele dintre caracteristicile lui archinstall sunt:

•   Context amiabil Biblioteca execută întotdeauna apelurile în ordine secvențială pentru a se asigura că etapele de instalare nu se suprapun sau nu se execută în ordinea greșită. De asemenea, acceptă (și utilizează) învăluitoare de context pentru a se asigura că sarcinile de curățare și cele finale, cum ar fi mkinitcpio, sunt apelate atunci când este necesar.

•   Transparență totală Jurnalele și informațiile pot fi găsite la /var/log/archinstall atât în ISO-ul live, cât și parțial pe sistemul instalat.

•   Accesibilitate ușoară Archinstall funcționează cu espeakup și alte instrumente de accesibilitate datorită utilizării unei interfețe tactile cu utilizatorul („touch user interface”: TUI).

INSTALARE GHIDATĂ

Archinstall este livrat cu un program de instalare ghidată <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py> pre-programată care vă ghidează prin pașii obligatorii, precum și prin unele configurații opționale care pot fi efectuate.

Notă: Alte scripturi preprogramate pot fi invocate executând archinstall <script> (fără .py). Pentru a vedea o listă completă de scripturi, executați archinstall --script list sau verificați codul sursă din directorul <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts>.

Notă: Este recomandat să rulați archinstall din ISO-ul oficial Arch Linux.

Avertisment Programul de instalare nu va configura WiFi înainte de începerea instalării. Trebuie să citiți despre conectarea la rețea în Arch Linux <https://wiki.archlinux.org/index.php/Network_configuration> înainte de a continua.

  Executarea instalării ghidate

Pentru a porni programul de instalare, rulați următoarele în cea mai recentă versiune ISO Arch Linux:

    archinstall

Deoarece <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py> este scriptul implicit, acesta este echivalentul executării archinstall guided

Instalarea ghidată permite, de asemenea, instalarea cu răspunsuri preconfigurate la toți pașii ghidați. Aceasta poate fi o modalitate rapidă și convenabilă de a relua una sau mai multe instalări.

Există două fișiere de configurare, ambele sunt opționale.

  --config

Acest parametru ia ca argument un fișier local .json și conține configurația generală și răspunsurile din meniu pentru programul de instalare ghidată.

  --config-url

Acest parametru ia ca argument un fișier .json de la distanță și conține configurația generală și răspunsurile din meniu pentru programul de instalare ghidată.

Notă: Puteți obține întotdeauna cele mai recente opțiuni pentru acest fișier cu archinstall --dry-run, care execută programul de instalare ghidat într-un mod sigur, în care nu se vor efectua acțiuni permanente pe sistemul dumneavoastră, ci se va simula o execuție și se va salva configurația pe disc.

  Exemplu de utilizare

    archinstall --config config.json

    archinstall --config-url https://domain.lan/config.json

Conținutul lui https://domain.lan/config.json:

    {
      "additional-repositories": [],
      "archinstall-language": "English",
      "audio_config": null,
      "bootloader_config": {
        "bootloader": "Systemd-boot",
        "uki": false,
        "removable": false
      },
      "bootloader": "Systemd-boot",
      "debug": false,
      "disk_config": {
        "config_type": "manual_partitioning",
        "device_modifications": [
          {
            "device": "/dev/sda",
            "partitions": [
              {
                "btrfs": [],
                "flags": [
                  "boot"
                ],
                "fs_type": "fat32",
                "length": {
                  "sector_size": null,
                  "total_size": null,
                  "unit": "B",
                  "value": 99982592
                },
                "mount_options": [],
                "mountpoint": "/boot",
                "obj_id": "369f31a8-2781-4d6b-96e7-75680552b7c9",
                "start": {
                  "sector_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 512
                  },
                  "total_size": null,
                  "unit": "sectors",
                  "value": 34
                },
                "status": "create",
                "type": "primary"
              },
              {
                "btrfs": [],
                "flags": [],
                "fs_type": "fat32",
                "length": {
                  "sector_size": null,
                  "total_size": null,
                  "unit": "B",
                  "value": 100000000
                },
                "mount_options": [],
                "mountpoint": "/efi",
                "obj_id": "13cf2c96-8b0f-4ade-abaa-c530be589aad",
                "start": {
                  "sector_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 512
                  },
                  "total_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 16106127360
                  },
                  "unit": "MB",
                  "value": 100
                },
                "status": "create",
                "type": "primary"
              },
              {
                "btrfs": [],
                "flags": [],
                "fs_type": "ext4",
                "length": {
                  "sector_size": null,
                  "total_size": null,
                  "unit": "B",
                  "value": 15805127360
                },
                "mount_options": [],
                "mountpoint": "/",
                "obj_id": "3e75d045-21a4-429d-897e-8ec19a006e8b",
                "start": {
                  "sector_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 512
                  },
                  "total_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 16106127360
                  },
                  "unit": "MB",
                  "value": 301
                },
                "status": "create",
                "type": "primary"
              }
            ],
            "wipe": false
          }
        ]
      },
      "disk_encryption": {
        "encryption_type": "luks",
        "partitions": [
          "3e75d045-21a4-429d-897e-8ec19a006e8b"
        ]
      },
      "hostname": "archlinux",
      "kernels": [
        "linux"
      ],
      "locale_config": {
        "kb_layout": "us",
        "sys_enc": "UTF-8",
        "sys_lang": "en_US"
      },
      "mirror_config": {
        "custom_servers": [
          {
            "url": "https://mymirror.com/$repo/os/$arch"
          }
        ],
        "mirror_regions": {
          "Australia": [
            "http://archlinux.mirror.digitalpacific.com.au/$repo/os/$arch"
          ]
        },
        "optional_repositories": [
          "testing"
        ],
        "custom_repositories": [
          {
            "name": "myrepo",
            "url": "https://myrepo.com/$repo/os/$arch",
            "sign_check": "Required",
            "sign_option": "TrustAll"
          }
        ]
      },
      "network_config": {},
      "no_pkg_lookups": false,
      "ntp": true,
      "offline": false,
      "packages": [],
      "parallel downloads": 0,
      "profile_config": null,
      "save_config": null,
      "script": "guided",
      "silent": false,
      "swap": true,
      "timezone": "UTC",
      "version": "2.6.0"
    }

  opțiuni „--config”

Avertisment Toate intrările de chei și valori trebuie să fie conforme cu standardul JSON. Mai jos sunt prezentate exemple ușor de citit de către om, cu trimiteri, rupând efectiv sintaxa. Adaptați descrierile de mai jos pentru a se potrivi nevoilor dvs. și formatului JSON.

Notă: Derulați la dreapta în tabel pentru a vedea opțiunile necesare.

  opțiuni JSON
Cheie | Valoare(i) | Descriere | Necesar
additional-repositories | [ multilib <https://wiki.archlinux.org/title/Official_repositories#multilib>, testing <https://wiki.archlinux.org/title/Official_repositories#Testing_repositories> ] | Activează unul sau mai multe dintre depozitele de testare și multilib înainte de a continua cu instalarea | Nu
archinstall-language | lang <https://github.com/archlinux/archinstall/blob/master/archinstall/locales/languages.json> | Stabilește limba utilizată de TUI (asigurați-vă că utilizați valoarea ``lang`` și nu valoarea ``abbr``) | Nu
audio_config | pipewire <https://wiki.archlinux.org/title/PipeWire>, pulseaudio <https://wiki.archlinux.org/title/PulseAudio> | Serverul audio care urmează să fie instalat | Nu
bootloader_config | { bootloader: Systemd-boot <https://wiki.archlinux.org/title/Systemd-boot>, grub <https://wiki.archlinux.org/title/GRUB>, limine <https://wiki.archlinux.org/title/Limine>, uki: true/false, removable: true/false } | Configurarea încărcătorului de pornire. bootloader selectează încărcătorul de pornire care urmează să fie instalat (grub/limine obligatoriu cu BIOS). uki activează imaginile nucleului unificate (numai UEFI, Numai systemd-boot/limine). removable instalează pe ruta implicită a suportului amovibil /EFI/BOOT/ în loc de NVRAM (numai UEFI, numai grub/limine) | Da
debug | true, false | Activează ieșirea de depanare. | Nu
disk_config | Citiți mai multe la Configurare disc <#disk-config> | Conține configurația de disc dorită pentru a fi utilizată în timpul instalării | Nu
disk_encryption | Citiți mai multe la Criptare disc <#disk-encryption> | Parametrii pentru criptarea discului aplicată peste disk_config | Nu
hostname | șir | Un șir de caractere care definește numele de gazdă al mașinii dvs. în rețea (implicit ``archinstall``) | Nu
kernels | [ linux <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-hardened <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-lts <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-rt <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-rt-lts <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-zen <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels> ] | Definește ce nuclee ar trebui instalate și configurate în opțiunile încărcătorului de pornire | Da
custom_commands | Citiți mai multe la Comenzi personalizate <#custom-commands> | Comenzi personalizate care vor fi executate post-instalare cu «chroot» în interiorul sistemului instalat | Nu
locale_config | {kb_layout: lang <https://wiki.archlinux.org/title/Linux_console/Keyboard_configuration>, sys_enc: Character encoding <https://wiki.archlinux.org/title/Locale>, sys_lang: locale <https://wiki.archlinux.org/title/Locale>} | Definește aranjamentul tastaturii, codificarea sistemului și limba sistemului | Nu
mirror_config | {custom_mirrors: [ <https://>... ], mirror_regions: { "Worldwide": [ "<https://geo.mirror.pkgbuild.com/$repo/os/$arch>" ] } } | Definește diferite oglinzi (valoarea implicită este ``/etc/pacman.d/mirrors`` din ISO dacă nu este definită) | Nu
network_config | `consultați opțiunile din secțiunea Configurare rețea` | Stabilește ce tip de configurație de rețea (dacă există) trebuie să fie utilizat | Nu
no_pkg_lookups | true, false | Dezactivează verificarea pachetelor în raport cu <https://archlinux.org/packages/> | Nu
ntp | true, false | activează sau dezactivează NTP <https://wiki.archlinux.org/title/Network_Time_Protocol_daemon> în timpul instalării | Nu
offline | true, false | activează sau dezactivează anumite verificări ale serviciilor din rețea, cum ar fi disponibilitatea de acces la oglindă etc. | Nu
packages | [ <pachet1>, <pachet2>, ... ] | O listă de pachete pentru instalare în timpul instalării | Nu
parallel downloads | 0-∞ | stabilește un număr dat de descărcări paralele care urmează să fie utilizate de <https://wiki.archlinux.org/title/Pacman#Enabling_parallel_downloads> | Nu
profile_config | `citiți mai multe în secțiunea profiluri` | Instalează un profil dat, dacă este definit | Nu
script | guided <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py> (default), minimal <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/minimal.py>, only_hdd <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/only_hdd.py>, Când este utilizat pentru a rula automat o instalare, acesta stabilește ce script să se execute automat. | Nu |
silent | true, false | dezactivează sau activează întrebările utilizatorului folosind TUI | Nu
swap | true, false | activează sau dezactivează spațiul de interschimb (swap) | Nu
timezone | timezone <https://wiki.archlinux.org/title/System_time#Time_zone> | stabilește un fus orar pentru sistemul instalat | Nu

Notă: Dacă nu sunt găsite intrări în disk_config, instalarea ghidată archinstall va utiliza orice este montat în prezent în /mnt/archinstall fără a efectua nicio operație pe disc.

  Opțiuni pentru „--creds”

Creds este un fișier de configurare separat pentru a separa opțiunile normale de datele mai sensibile, cum ar fi parolele. Mai jos este prezentat un exemplu de definire a parolei root, iar mai jos sunt descrise alte valori care pot fi definite.

    {
        "root_enc_password" : "SecretSfânt2022"
    }

  opțiuni „--creds”
Cheie | Valori | Descriere | Necesar
!encryption-password | șir | Parola pentru criptarea discului, nu este criptat dacă nu este furnizată parola | Nu
root_enc_password | șir | Parola contului de root | Nu
users | { "username": "<UTILIZATOR>", "enc_password": "<PAROLĂ_HASH>", "sudo": false } | Lista acreditărilor utilizatorului obișnuit, a se vedea configurația pentru referință | Poate că

Notă: users este opțional numai dacă root_enc_password a fost definit. În caz contrar, users va fi impus, iar numărul minim de utilizatori cu privilegii sudo necesar va fi fixat la 1.

PROBLEME CUNOSCUTE

Unele probleme nu fac parte din sfera de aplicare a proiectelor archinstal <https://github.com/archlinux/archinstall/>, iar cele despre care știm sunt enumerate mai jos.

  Se așteaptă sincronizarea timpului #2144 <https://github.com/archlinux/archinstall/issues/2144>

Cauza principală obișnuită a acestei situații este topologia rețelei. Mai precis, timedatectl show <https://github.com/ archlinux/archinstall/blob/e6344f93f7e476d05bbcd642f2ed91fdde545870/archinstall/lib/installer.py#L136> nu poate efectua o sincronizare corectă a orei cu serverele implicite.

Repornirea systemd-timesyncd.service ar putea funcționa, dar cel mai adesea trebuie să configurați /etc/systemd/timesyncd.conf pentru a se potrivi cu structura rețelei dumneavoastră.

Notă: Dacă știți că ora este corectă pe mașină, puteți rula archinstall --skip-ntp pentru a ignora sincronizarea cu ora.

  Se așteaptă finalizarea sincronizării inelului de chei Arch Linux (archlinux-keyring-wkd-sync). #2679 <https://github.com/archlinux/archinstall/issues/2679>

archlinux-keyring-wkd-sync.service sau archlinux-keyring-wkd-sync.timer se poate bloca „indefinit” uneori. Acest lucru se datorează, de obicei, unei incapacități de a ajunge la serverele de chei sau unei conexiuni lente către serverele de chei.

Scriptul /usr/bin/archlinux-keyring-wkd-sync poate fi rulat manual, pentru a verifica dacă se execută lent sau nu.

Dacă systemctl show --property=ActiveEnterTimestamp --no-pager archlinux-keyring-wkd-sync.timer nu arată nimic, înseamnă că sincronizarea integrată nu s-a încheiat niciodată. De asemenea, systemctl show --no-pager -p SubState --value archlinux-keyring-wkd-sync.service arată cel mai probabil dead, ceea ce înseamnă că serviciul nu s-a încheiat niciodată.

Pentru a remedia acest lucru, încercați următoarele:

    # killall gpg-agent
    # rm -rf /etc/pacman.d/gnupg
    # pacman-key --init
    # pacman-key --populate
    # pacman -Sy archlinux-keyring
    # systemctl restart archlinux-keyring-wkd-sync.timer

Notă: Dacă știți că ISO este cel mai recent și că aveți chei GPG valide, încercați archinstall --skip-wkd pentru a ignora așteptarea sincronizării.

Dacă omiteți sincronizarea WKD, s-ar putea să ajungeți la:

    > error: archinstall: signature from "Anton Hvornum (Torxed) <torxed@archlinux.org>" is unknown trust
    > :: File /var/cache/pacman/pkg/archinstall-1.2.3-4-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
    > Do you want to delete it? [Y/n]

  Lipsește controlorul proprietar Nvidia #2002 <https://github.com/archlinux/archinstall/issues/2002>

În unele cazuri, este posibil ca controlorul nvidia să nu aibă instalate toate pachetele necesare. Acest lucru se datorează selecției nucleului și/sau configurațiilor de componente ale mașinii care necesită pachete suplimentare pentru a funcționa corect.

O soluție comună este să instalați pachetul linux-headers <https://archlinux.org/packages/core/x86_64/linux-headers/> și pachetul nvidia-dkms <https://archlinux.org/packages/extra/x86_64/nvidia-dkms/>

  ARM, 32bit și alte tipuri de CPU-uri dau eroare #1686 <https://github.com/archlinux/archinstall/issues/1686>, #2185 <https://github.com/archlinux/archinstall/issues/2185>

Aceasta este o problemă cunoscută, care poate apărea în diverse situații. Oficial doar x86_64 <https://wiki.archlinux.org/title/Frequently_asked_questions#What_architectures_does_Arch_support?> este acceptat de Arch Linux. Prin urmare, puține eforturi au fost depuse pentru a sprijini alte platforme.

În teorie, alte arhitecturi ar trebui să funcționeze, dar pot apărea mici ciudățenii.

PR-urile (pull-requests) sunt binevenite, dar vă rugăm să respectați întârzierile în fuzionare. Alte remedieri, probleme sau caracteristici vor fi prioritizate conform motivelor de mai sus.

  Inelul de chei este dezactualizat #2213 <https://github.com/archlinux/archinstall/issues/2213>

Problemele cheie care lipsesc tind să fie faptul că pachetul archlinux-keyring <https://archlinux.org/packages/core/any/archlinux-keyring/> nu este actualizat, de obicei ca urmare a unei ISO învechite. Există o încercare din partea upstream de a rezolva această problemă, și aceasta este archlinux-keyring-wkd-sync.service <https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/blob/7e672dad10652a80d1cc575d75cdb46442cd7f96/wkd_sync/archlinux-keyring-wkd-sync.service.in>

Serviciul pornește aproape imediat în timpul pornirii, iar dacă rețeaua nu este configurată la timp - serviciul va eșua. Ulterior, execuția archinstall ar putea funcționa pe un inel de chei vechi, în ciuda existenței unui serviciu de actualizare pentru acesta.

Nu există nicio modalitate fiabilă de a rezolva în timp această problemă în archinstall. În schimb, eforturile pentru serviciul din amonte ar trebui să fie considerate calea de urmat. Și / sau chei care nu expiră între o cantitate rezonabilă de ISO-uri.

Notă: Problema poate apărea și la noile ISO-uri, chiar și la câteva zile după lansare, deoarece unele chei pot expira imediat după ce inelul de chei este „inscripționat” în ISO.

Notă: O altă problemă frecventă legată de faptul că rețeaua nu este configurată este că ora poate să nu fie configurată corect, ceea ce face ca inelul de chei să nu poată fi actualizat. Consultați „se așteaptă pentru sincronizarea orei” Waiting for time sync #2144.

  Pachete AUR

Aceasta este, de asemenea, o problemă generală. AUR nu este admis <https://wiki.archlinux.org/title/Arch_User_Repository#Updating_packages>, și până când acest lucru nu se schimbă nu putem folosi pachetele AUR pentru a rezolva cererile de caracteristici în archinstall.

Acest lucru înseamnă că cererile de caracteristici, cum ar fi suportul pentru sisteme de fișiere precum ZFS <https://aur.archlinux.org/packages/zfs-linux> nu pot fi adăugate, iar problemele nu pot fi rezolvate nici prin utilizarea pachetelor AUR.

Notă: Dar în spiritul oferirii de opțiuni comunității, archinstall acceptă module Python <#archinstall-plugins>, ceea ce înseamnă că puteți rula archinstall --plugin <url> și puteți găsi sursa unui modul AUR.

torxed/archinstall-aur <https://github.com/torxed/archinstall-aur> este o implementare de referință pentru module:

    # archinstall --plugin https://archlinux.life/aur-plugin

phisch/archinstall-aur <https://github.com/phisch/archinstall-aur> este o altă alternativă:

    # archinstall --plugin https://raw.githubusercontent.com/phisch/archinstall-aur/master/archinstall-aur.py

Avertisment Acest lucru va permite utilizarea fără suport a AUR în timpul instalării.

RAPORTAREA PROBLEMELOR ȘI ERORILOR

Problemele și erorile trebuie să fie raportate la <https://github.com/archlinux/archinstall/issues>.

Întrebările generale, îmbunătățirile și problemele de securitate pot fi raportate și acolo. Pentru rezolvări rapide sau dacă aveți nevoie de ajutor, accesați serverul Discord, care are un canal de ajutor.

  Fișiere de jurnal

Atunci când trimiteți un tichet de ajutor, vă rugăm să includeți /var/log/archinstall/install.log. Acesta poate fi găsit atât pe ISO-ul live, dar și în sistemul de fișiere instalat dacă pachetele de bază au fost atașate.

SFAT:
O modalitate ușoară de a trimite jurnale este curl -F 'file=@/var/log/archinstall/install.log' https://0x0.st.
Fiți precauți atunci când trimiteți alte fișiere jurnal, dar archinstall promite să păstreze install.log în siguranță pentru publicarea publică!

Există fișiere jurnal suplimentare sub /var/log/archinstall/ care pot fi utile:

•   /var/log/archinstall/user_configuration.json - Stochează majoritatea răspunsurilor ghidate din programul de instalare

•   /var/log/archinstall/user_credentials.json - Stochează orice nume de utilizator sau parole, care pot fi pasate la --creds

•   /var/log/archinstall/user_disk_layouts.json - Stochează discurile alese și dispunerea lor

•   /var/log/archinstall/install.log - Un fișier jurnal despre pașii parcurși de archinstall

•   /var/log/archinstall/cmd_history.txt - Un istoric complet al comenzilor, comandă cu comandă în ordine

•   /var/log/archinstall/cmd_output.txt - O ieșire brută din toate comenzile care au fost executate de archinstall

    Avertisment Încercăm doar să garantăm că /var/log/archinstall/install.log este lipsit de informații sensibile. Orice alt fișier jurnal trebuie lipit cu cu cea mai mare atenție!

DISCORD

Există un canal discord care este frecventat de unii <https://github.com/archlinux/archinstall/graphs/contributors>.

Pentru a vă alătura serverului, mergeți la <https://discord.gg/aDeMffrxNg> și alăturați-vă. Nu există multe reguli, în afară de bunul simț și tratarea celorlalți cu respect. Discuția generală este, de asemenea, pentru lucruri care nu țin de subiect.

Există rolul @Party Animals dacă doriți notificări cu privire la noile lansări care sunt publicate în canalul #Release Party. Un alt lucru este rolul @Contributors care poate fi activat de către contributori scriind !verify și urmând procesul de verificare.

Intrați, sperăm să vă vedem acolo! : )

BIBLIOTECA PYTHON

Archinstall se livrează pe PyPi <https://pypi.org/> ca archinstall <pypi.org/project/archinstall/>. Dar biblioteca poate fi instalată și manual.

Avertisment Acești pași nu sunt necesari dacă doriți să utilizați archinstall pe ISO-ul oficial Arch Linux.

  Instalarea cu pacman

Archinstall se află în <https://wiki.archlinux.org/index.php/Official_repositories> Și va instala de asemenea archinstall ca o bibliotecă python.

Pentru a instala atât biblioteca, cât și scriptul archinstall:

    pacman -S archinstall

Alternativ, puteți instala doar biblioteca și nu executabilul ajutător utilizând pachetul python-archinstall.

  Instalarea prin intermediul PyPi

Conceptul de bază al PyPi se aplică folosind pip.

    pip install archinstall

  Instalarea folosind codul sursă

De asemenea, puteți instala folosind codul sursă. Din motive de simplitate, vom utiliza git clone în acest exemplu.

    git clone https://github.com/archlinux/archinstall

Puteți fie să mutați dosarul în proiectul dvs. și să faceți pur și simplu

    import archinstall

Sau puteți utiliza compilatorul PyPa <https://github.com/pypa/build> și programul de instalare <https://github.com/pypa/installer> pentru a-l instala în ruta modulelor python.

    $ cd archinstall
    $ python -m build .
    $ python -m installer dist/*.whl

MODUL PYTHON

Archinstall acceptă rularea în modul de modul <https://docs.python.org/3/library/__main__.html> Modul în care biblioteca este invocată în modul de modul este limitat la executarea scripturilor din dosarul <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts>.

Prin urmare, este important să plasați orice script sau profil pe care doriți să îl invocați în dosarul „examples” înainte de compilare și instalare.

  Cerințe prealabile

Vom presupune că ați urmat metoda Instalare folosind codul sursă <#installing-python-manual>. Înainte de instalarea efectivă a bibliotecii, va trebui să plasați scripturile de instalare personalizate sub <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts>ca fișier python.

Mai multe despre modul de creare a acestora în secțiunea următoare.

Avertisment Acest lucru se poate schimba în viitor, deoarece această metodă este în prezent un pic rigidă. Ruta scriptului va deveni un parametru. Dar, pentru moment, acest lucru este de la nivel de concepție.

  Crearea unui script

Să creăm un program de instalare test_installer - ca exemplu. Aceasta presupunând că dosarul ./archinstall este o clonă git a depozitului principal. Începem prin a crea "scripts <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts>/test_installer.py". Plasarea aici este importantă mai târziu.

Acest script poate fi acum deja apelat folosind python -m archinstall --script test_installer după o instalare reușită a bibliotecii în sine. Dar scriptul nu va face prea multe. Așa că vom face ceva simplu, cum ar fi listarea tuturor discurilor dure, ca exemplu.

Pentru a face acest lucru, vom începe prin a importa archinstall în "scripts <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts>/test_installer.py" și vom apela o funcție în archinstall.

    from archinstall.lib.disk.device_handler import device_handler
    from pprint import pprint
    pprint(device_handler.devices)

Acum, continuați și faceți referire la metoda de instalare «Instalarea folosind codul sursă» <#installing-python-manual>. După rularea python -m archinstall test_installer ar trebui să apară ceva asemănător:

    [
        BDevice(
            disk=<parted.disk.Disk object at 0x7fbe17156050>,
            device_info=_DeviceInfo(
                model='PC801 NVMe SK hynix 512GB',
                path=PosixPath('/dev/nvme0n1'),
                type='nvme',
                total_size=Size(value=512110190592, unit=<Unit.B: 1>,
                sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
                free_space_regions=[
                    <archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4250>,
                    <archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4c50>,
                    <archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4a10>],
                sector_size=SectorSize(value=512, unit=<Unit.B: 1>),
                read_only=False,
                dirty=False
            ),
            partition_infos=[
                _PartitionInfo(
                    partition=<parted.partition.Partition object at 0x7fbe166c4a90>,
                    name='primary',
                    type=<PartitionType.PRIMARY: 'primary'>,
                    fs_type=<FilesystemType.FAT32: 'fat32'>,
                    path='/dev/nvme0n1p1',
                    start=Size(value=2048, unit=<Unit.sectors: 'sectors'>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
                    length=Size(value=535822336, unit=<Unit.B: 1>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
                    flags=[
                        <PartitionFlag.BOOT: flag_id=1, alias=None>,
                        <PartitionFlag.ESP: flag_id=18, alias=None>
                    ],
                    partn=1,
                    partuuid='a26be943-c193-41f4-9930-9341cf5f6b19',
                    uuid='6EE9-2C00',
                    disk=<parted.disk.Disk object at 0x7fbe17156050>,
                    mountpoints=[
                        PosixPath('/boot')
                    ],
                    btrfs_subvol_infos=[]
                ),
                _PartitionInfo(...)
            ]
        )
    ]

Aceasta înseamnă că scriptul dvs. se află în locul potrivit, iar archinstall funcționează conform planului.

Notă: Majoritatea apelurilor, inclusiv cel de mai sus, necesită privilegii root <https://en.wikipedia.org/wiki/Superuser>.

MODULE PYTHON

archinstall acceptă module prin două metode.

Prima metodă este direct prin parametrul --plugin atunci când rulează ca instrument CLI. Aceasta va încărca un anumit modul plugin local sau de la distanță prin intermediul unei rute.

A doua metodă este prin intermediul funcției integrate Python de descoperire a modulelor <https://packaging.python.org/en/latest/specifications/ entry-points/> folosind punctele de intrare <https://docs.python.org/3/library/importlib.metadata.html#entry-points> clasificate ca archinstall.plugin.

  --plugin parametru

Parametrul are avantajul de a fi stocat în starea --conf, ceea ce înseamnă că atunci când se rulează din nou o instalare - modulul va fi încărcat automat. Limitarea sa este că necesită ca o rută inițială să fie cunoscută și scrisă și să fie complicată.

  Detectarea modulelor

Această metodă permite încărcarea mai multor module, cu dezavantajul că acestea trebuie să fie instalate în prealabil în sistemul care rulează archinstall. Acest lucru îi vizează în principal pe cei care își construiesc propriile ISO-uri și pachete de configurare specifice pentru nevoile lor.

  Ce este acceptat?

În prezent, documentația pentru acest lucru este săracă. Până la rezolvarea acestei probleme, cel mai bun mod de a găsi caracteristicile acceptate este de a căuta în codul sursă pentru plugin.on_ <https://github.com/search?q=repo%3Aarchlinux%2Farchinstall+%22plugin.on_%22&type=code>, deoarece acest lucru va oferi o indicație clară a apelurilor efectuate către module.

  Cum funcționează acesta?

Modulele archinstall utilizează o abordare bazată pe descoperire în care modulele sunt interogate pentru anumite funcții. Ca exemplu, dacă un modul plugin are următoarea funcție:

    def on_pacstrap(*packages):
        ...

Funcția archinstall.Pacman().strap([„unele pachete”]) este codificată pentru a itera modulele și pentru a căuta on_pacstrap în modul. Dacă funcția există, .strap() va apela funcția modulului și va înlocui lista inițială de pachete cu rezultatul din modul.

Cel mai bun mod de a documenta aceste apeluri este în prezent nedecis, deoarece este greu de documentat acest comportament dinamic.

  Scrieți propriul dvs. modul?

Cea mai simplă modalitate actuală este de a consulta o implementare de referință sau comunitatea. Două dintre acestea sunt:

•   torxed/archinstall-aur <https://github.com/torxed/archinstall-aur>

•   phisch/archinstall-aur <https://github.com/phisch/archinstall-aur>

    Și căutați plugin.on_ <https://github.com/search?q=repo%3Aarchlinux%2Farchinstall+%22plugin.on_%22&type=code> în codul de bază pentru a afla ce va căuta archinstall. PR-urile „pull-requests” sunt binevenite pentru a lărgi suportul pentru acest lucru.

ARCHINSTALL.INSTALLER

Programul de instalare este clasa principală pentru accesarea unei instanțe de instalare. Puteți considera această clasă ca fiind instalația pe care ați efectuat-o sau o veți efectua.

Orice este legat de în interiorul instalației, va fi găsit în această clasă.

Autor
Anton Hvornum

Drepturi de autor
2022, Anton Hvornum

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.