Bine, iată ghidul pe care l-am găsit că a funcționat după două zile de încercări și erori. Ubuntu ar face bine din partea comunității lor să posteze câteva instrucțiuni pentru utilizatorii locali. https://www.agiliq.com/blog/2012/07/using-ubuntu-cloud-images-in-kvm/
Am reușit să găsesc nucleul versiunii „vmlinuz-virtual-generic” într-un folder „despachetat” îngropat din linkul de versiuni de imagini din cloud de mai sus. https://cloud-images.ubuntu.com/focal/current/unpacked/. Pagina principală are alte versiuni decât pentru Focal https://cloud-images.ubuntu.com. Aceasta este cea mai importantă parte, deoarece initrd-userve.img nu recunoaște discul rădăcină. De asemenea, puteți utiliza a normal nucleul ubuntu.
The esenta ei este a folosi qemu-img create -b ubuntu-*-server-cloudimg-amd64.img -f qcow2 samename.img.qcow2
comandă pentru a crea VM (sau pur și simplu utilizați GUI create în virt-mgr). Acesta va oferi opțiunea de configurare înainte de instalare și apoi de a porni VM-ul. Veți dori să adăugați nucleul și initrd din descărcările „dezîmpachetate” la secțiunea Direct Boot din Boot Options plus aceste argumente de pornire: ro init=/usr/lib/cloud-init/uncloud-init root=/dev/vda ds=nocloud ubuntu-pass=initialpassword
. Trebuie să porniți de două ori pentru ca parola să funcționeze. De fapt, doar rw root=/dev/vda1 init=/bin/bash
va lucra pentru a crea un utilizator și o nouă parolă.
Observați aceste instrucțiuni spun vda
. A trebuit să folosesc vda1
deoarece există două partiții de pornire vda14 pentru GPT/bios_boot și vda15 pentru partiția EFI/ESP/boot-flagged. Fișierul original .img brut folosește sdaX, fyi.. conversia în qcow2 sau doar utilizarea qemu-img este ceea ce se schimbă aparent.
Mai multe detalii:
Paginile de ajutor mai vechi spun că fișierele kernel și discheta sunt incluse în fișierul tar. Aparent, acesta nu mai este cazul și m-a condus la mai multe încercări și erori. Erorile obișnuite sunt suspendate pe „GRUB_FORCE_PARTUUID încercând initrdless boot”, „Eroare necunoscută comanda hwmatch” și „random: fast init done”. De fapt, primele două sunt atunci când nu se utilizează Direct Boot. Importul Ova în VirtualBox pornește singur, așa că descoperă cumva fișierele interne ale nucleului. Mi-ar plăcea să știu cum să fac asta în KVM. M-am uitat la fișierele XML, dar nu am văzut un indiciu evident pe lângă el, creând o dischetă, punându-mă în căutarea pentru a găsi discheta care m-a condus la pagina principală de ghid de mai sus. A treia eroare pe care am citat-o este atunci când aceste fișiere interne ale nucleului nu sunt găsite, chiar dacă fstab-ul are etichetele corecte pentru unitățile de pornire. Nici măcar nu ajunge la grub, așa că nu pot specifica acolo UUID-uri de disc, deși se potrivesc în fișierul grub (evident pentru că utilizarea Direct Boot nu schimbă nimic din toate acestea).
Iată un răspuns la întrebarea mea inițială. Din nou, pe baza conținutului mai vechi de tar cu dischetă, etc. M-a dus să caut mai profund fișierele „vmlinuz-virtual”: Unde este documentată utilizarea imaginii pentru oaspeți în cloud Ubuntu pe OpenStack?
Alte resurse:
Argumentele nucleului uncloud-init
spune-i cloud-init că este un VM local și nocloud
arg setează rețelele locale (în loc să trebuiască să intri și să schimbi /etc/netplan/*yaml pentru a elimina adresa mac fixă și să folosești netplan se aplică
și apoi systemctl reporniți rețeaua
)
Iată mai multe informații pe care le-am învățat:
Încercarea de a seta fișierele yaml cloud-init într-un mod ușor, cu un fișier local, m-a condus la această soluție pentru utilizarea cloud-init cu un server iso Ubuntu: https://discourse.ubuntu.com/t/automated-server-install-quickstart/16614. Are câteva comenzi simple pentru a crea fișierele și apoi rulează un server mic și îngrijit pentru a crea semințele din locația netă. Se instalează și pornește cu Kvm. Din păcate, după ce a folosit imaginea brută pentru a crea o mașină virtuală în Virtmanager, acesta nu ar porni deoarece nu a putut găsi /stillmounted/casper/initrd din anumite motive. Așa că am copiat fișierele kernel din ISO montat și am încercat să le folosesc (pentru că bănuiesc că imaginea cloud de mai sus nu are drivere audio în nucleul său), dar a stat și pe fișierele casper/initrd.
Așa că m-am întors la ovulele VirtualBox. My-seed.iso a funcționat pentru a schimba numele serverului.După o căutare îndelungată despre cum să treci parametrii kernelului (nu poți să folosești un cuplu folosind vboxmanage setextradata), am redescoperit că poți apăsa Shift în timpul pornirii pentru a edita argumentele Grub. După ce am folosit init=/bin/bash pentru a seta în sfârșit parola și vga=792 pentru a mări dimensiunea afișajului, am găsit o eroare în imaginea din fișierul visudo pe care #include..
lipsește un spațiu care ucide sudo. După ce am devenit apt să actualizez, am descoperit că există o eroare VirtualBox care nu permite clipboard-ul bidirecțional în versiunile recente: https://superuser.com/questions/1293042/bidirectional-clipboard-not-working-in-virtualbox. Dar cel puțin am în sfârșit o modalitate de a crea o mașină virtuală Ubuntu de bază fără a fi nevoie să trec prin întregul proces de instalare. Această metodă ar trebui să funcționeze pentru multe alte distribuții. (O, de asemenea, atingeți /etc/cloud/cloud-init.disabled
comanda de mai sus pare să funcționeze).
Informații ulterioare:
- My-config.iso funcționează doar la prima rulare. (cu excepția cazului în care există o modalitate de a declanșa cloud-init).
- Țineți shift pentru a intra în Grub. Utilizați arg-ul nucleului
vga=792
pentru un terminal mai mare. Setați grub timeout în /etc/default/grub și rulați update-grub.
- Audio nu funcționează pe aceste imagini cloud fără instalare
apt install linux-generic
(aproximativ 800 Mbs). Și setați ieșirea audio activată în Vbox.
Ultima actualizare: În cele din urmă, mi-am dat seama cheia pentru ca imaginea cloud să pornească fără a utiliza fișierele Direct Boot. Practic, fie instalați versiunea generică a nucleului non-kvm folosind apt install linux-image-$(uname -r)
și schimbați kvm în generic (~90Mb), sau utilizați nucleul kvm și ssh în VM folosind systemctl enable [email protected] && systemctl start [email protected]
, atunci consola virtsh <vm-name>
. Pentru a intra inițial pentru a face un utilizator să folosească root=/dev/vda1 init=/bin/bash rw
pentru argumentele nucleului. Apoi ștergeți sau mutați două fișiere /etc/grub.d/01.. și /etc/default/grub.d/50.. și comentați prima linie din /etc/default/grub.d/40-force- partuuid.cfg. Schimbați /etc/default/grub ascuns
la meniul
, reglați timeout etc., dacă doriți. Atunci update-grub
și ar trebui să funcționeze.