কনটেন্টে যান

অননুপস্থিত ইনস্টল

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 না কনফিগারেশনে disk_encryption ব্লক থাকলে true
authorized_keys না SSH পাবলিক কী, প্রতি লাইনে একটি
tailscale_authkey না প্রথম বুটে আপনার tailnet-এ যোগ দেওয়ার জন্য Tailscale অথ কী

openssl passwd -6 "yourpassword" দিয়ে user_credentials.json-এর জন্য পাসওয়ার্ড হ্যাশ তৈরি করুন।

user_credentials.json-এর বদলে defer-provisioning নামে একটি খালি ফাইলও ফেলতে পারেন। তা একই অন্য-মালিকের-জন্য-প্রস্তুত ইনস্টল চালায় যা ইন্টারঅ্যাক্টিভভাবে ট্রিগার করতে পারেন: মেশিন কোনো ব্যক্তিগত বিবরণ ছাড়া ইনস্টল হয়, আর যে প্রথমে বুট করে সে তার কীবোর্ড বেছে নেয় এবং তার ব্যবহারকারী তৈরি করে। এটি ইমেজিং রিগের জন্য মোড, যেখানে ড্রাইভে কারো ক্রেডেনশিয়ালই থাকা উচিত নয়।

SSH অ্যাক্সেস

authorized_keys উপস্থিত থাকলে, ইনস্টল কীগুলো ব্যবহারকারীর ~/.ssh/authorized_keys হিসেবে সেট আপ করে, sshd সক্রিয় করে এবং এর জন্য ফায়ারওয়াল খোলে। (স্টক OmarOS ইনস্টল সার্ভিস নিষ্ক্রিয় ও পোর্ট বন্ধ সহ openssh পাঠায়, তাই অননুপস্থিত মেশিন অন্যথায় পৌঁছানো যেত না।) ইনস্টল শুধু আপনার কী যোগ করে — এটি SSH ডেমনের অন্য কোনো প্রমাণীকরণ সেটিং শিথিল করে না।

tailscale_authkey উপস্থিত থাকলে, মেশিন বদলে প্রথম বুটে আপনার tailnet-এ যোগ দেয়: Tailscale ISO-র বান্ডল করা প্যাকেজ থেকে ইনস্টল হয়, ফায়ারওয়াল tailnet ইন্টারফেস অনুমোদন করে, আর একটি ব্যাকগ্রাউন্ড জব মেশিনের আসলে নেটওয়ার্ক পেলেই যোগদান চালায়, সফল না হওয়া পর্যন্ত পুনরায় চেষ্টা করে। একটি পুনরায় ব্যবহারযোগ্য, প্রাক-অনুমোদিত কী ব্যবহার করুন যাতে একটি ড্রাইভ ইমেজ অনেক মেশিনে কাজ করতে পারে।

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 ড্রাইভকে তা যে গোপনীয় তা হিসেবে বিবেচনা করুন।