विषय पर बढ़ें

Unattended Installs

OmarOS ISO कीबोर्ड पर किसी के बिना ही खुद को इंस्टॉल कर सकता है। अगर इंस्टॉलर को cidata लेबल वाली दूसरी ड्राइव मिलती है जिसमें उसकी कॉन्फ़िगरेशन फ़ाइलें हैं, तो यह उन्हें कॉपी कर लेता है, सेटअप विज़ार्ड को पूरी तरह छोड़ देता है, और अपने आप तैयार सिस्टम में रीबूट हो जाता है। कोई विशेष ISO बिल्ड नहीं, कोई अतिरिक्त बूट मेनू प्रविष्टि नहीं — ऐसी कोई ड्राइव संलग्न न होने पर, कुछ नहीं बदलता और आपको सामान्य विज़ार्ड मिलता है।

यह OmarOS को डिस्पोज़ेबल डेव एनवायरनमेंट के लिए बेस इमेज के रूप में बढ़िया बनाता है: Proxmox में या Packer के साथ एक VM बनाएँ, उसे बूट करें, चले जाएँ, SSH से अंदर जाएँ। cidata cloud-init NoCloud लेबल है, इसलिए सभी सामान्य वर्चुअलाइज़ेशन टूलिंग पहले से जानती हैं कि ऐसी ड्राइव कैसे संलग्न करनी है।

कॉन्फ़िगरेशन फ़ाइलें

फ़ाइलें ठीक वही हैं जो इंस्टॉलर का अपना विज़ार्ड लिखता है, इसलिए शुरुआती सेट पाने का सबसे आसान तरीका एक इंटरैक्टिव इंस्टॉल चलाना है (मान लीजिए, VM में) और जो कुछ उसने /root में लिखा उसे कॉपी करना है:

फ़ाइल आवश्यक उद्देश्य
user_configuration.json हाँ डिस्क, होस्टनाम, टाइमज़ोन, कीबोर्ड
user_credentials.json हाँ यूज़रनेम और पासवर्ड हैश
user_full_name.txt नहीं Git पूरा नाम
user_email_address.txt नहीं Git ईमेल
user_encrypt_installation.txt नहीं true जब कॉन्फ़िगरेशन में disk_encryption ब्लॉक हो
authorized_keys नहीं SSH सार्वजनिक कुंजियाँ, प्रति पंक्ति एक
tailscale_authkey नहीं पहले बूट पर आपके टेलनेट से जुड़ने के लिए Tailscale प्राधिकरण कुंजी

user_credentials.json के लिए पासवर्ड हैश openssl passwd -6 "yourpassword" से बनाएँ।

आप user_credentials.json के स्थान पर defer-provisioning नामक एक खाली फ़ाइल भी रख सकते हैं। यह वही दूसरे मालिक के लिए तैयार इंस्टॉल चलाता है जिसे आप इंटरैक्टिव रूप से ट्रिगर कर सकते हैं: मशीन बिना किसी व्यक्तिगत विवरण के इंस्टॉल होती है, और जो कोई इसे पहले बूट करता है वह अपना कीबोर्ड चुनता है और अपना यूज़र बनाता है। यह इमेजिंग रिग के लिए मोड है, जहाँ ड्राइव पर किसी के क्रेडेंशियल बिल्कुल नहीं होने चाहिए।

SSH एक्सेस

जब authorized_keys मौजूद होता है, तो इंस्टॉल कुंजियों को यूज़र के ~/.ssh/authorized_keys के रूप में सेट अप करता है, sshd सक्षम करता है, और इसके लिए फ़ायरवॉल खोलता है। (एक स्टॉक OmarOS इंस्टॉल openssh को सेवा अक्षम और पोर्ट बंद करके भेजता है, इसलिए एक अनअटेंडेड मशीन अन्यथा पहुँच से बाहर होगी।) इंस्टॉल केवल आपकी कुंजियाँ जोड़ता है — यह SSH डेमन की किसी अन्य प्रमाणीकरण सेटिंग को ढीला नहीं करता।

जब tailscale_authkey मौजूद होता है, तो मशीन इसके बजाय पहले बूट पर आपके टेलनेट से जुड़ जाती है: Tailscale ISO के बंडल किए गए पैकेजों से इंस्टॉल किया जाता है, फ़ायरवॉल टेलनेट इंटरफ़ेस की अनुमति देता है, और एक बैकग्राउंड जॉब जैसे ही मशीन के पास वास्तव में नेटवर्क होता है जुड़ाव चलाता है, सफल होने तक पुनः प्रयास करता है। एक पुनः प्रयोज्य, पूर्व-अधिकृत कुंजी का इस्तेमाल करें ताकि एक ड्राइव इमेज कई मशीनों को सेवा दे सके।

cidata ड्राइव बनाना

सही लेबल वाला कोई भी फ़ाइलसिस्टम काम करता है। एक छोटा ISO आसान तरीका है:

mkdir cidata
cp user_configuration.json user_credentials.json authorized_keys cidata/
genisoimage -output cidata.iso -volid cidata -joliet -rock cidata/

फिर इसे OmarOS ISO के साथ-साथ VM से संलग्न करें। यहाँ एक पूर्ण Proxmox उदाहरण है:

qm create 101 --name my-omaros \
  --bios ovmf --machine q35 --cpu host --cores 4 --memory 8192 \
  --ostype l26 --scsihw virtio-scsi-single \
  --efidisk0 local-lvm:0,efitype=4m,pre-enrolled-keys=0 \
  --scsi0 local-lvm:40,discard=on,iothread=1 \
  --net0 virtio,bridge=vmbr0 --vga virtio --serial0 socket \
  --ide2 local:iso/omaros.iso,media=cdrom \
  --ide3 local:iso/cidata.iso,media=cdrom \
  --boot order='scsi0;ide2'

qm start 101

बूट क्रम जानबूझकर डिस्क को पहले सूचीबद्ध करता है: खाली डिस्क पहले बूट पर ISO पर गिर जाती है, और इंस्टॉल किया गया सिस्टम उसके बाद हमेशा डिस्क से बूट होता है।

दो चेतावनियाँ

एन्क्रिप्ट किए गए अनअटेंडेड इंस्टॉल पूरी तरह अनअटेंडेड नहीं हैं — किसी को अभी भी पहले बूट पर LUKS पासफ़्रेज़ टाइप करना होता है। और user_configuration.json में disk_encryption ब्लॉक उस पासफ़्रेज़ को सादे टेक्स्ट में रखता है, इसलिए एन्क्रिप्ट किए गए इंस्टॉल से बनी cidata ड्राइव को उस रहस्य की तरह मानें जो यह है।