उबुंटू १८.०४ डेस्कटॉपवर CentOS armhfp VM सेटअप करा

काही काळापूर्वी, माझ्या एका प्रोजेक्टसाठी माझ्या उबुंटू १८.०४ डेस्कटॉपवर CentOS armhfp व्हर्च्युअल मशीन सेटअप करण्याची संधी मिळाली. जरी मी माझी चाचणी करण्यासाठी दुसरा मार्ग निवडू शकलो असतो ज्यामध्ये एसडी कार्डवर ARM इमेज फ्लॅश करणे आणि बोर्डवर बूट करणे समाविष्ट आहे, तरी मी QEMU वर काम करणे पसंत केले. कारण म्हणजे Cubietruck किंवा Raspberry Pi सारख्या बोर्डांची चाचणी करणे वेळखाऊ आहे. जर काहीतरी आपण इमेज करप्ट केली, तर आपण पुन्हा तीच प्रक्रिया अनुसरण करत असू जसे की एसडी कार्ड काढून टाकणे, योग्य OS इमेजसह पुन्हा फ्लॅश करणे आणि pkg/update/ ची बूट/चाचणी करणे, U-boot सेटिंग्ज बदलणे इ.

QEMU हा एक ओपन-सोर्स मशीन एम्युलेटर किंवा व्हर्च्युअलायझर आहे जो कोणत्याही आर्किटेक्चरची ऑपरेटिंग सिस्टम चालवण्यास सक्षम आहे. उबुंटू किंवा CentOS सारख्या बेस OS मध्ये QEMU वातावरण सेटअप करणे अगदी सोपे आहे.

पूर्वआवश्यकता

उबुंटू १८.०४ सिस्टममध्ये QEMU सक्षम करण्यासाठी QEMU आणि इतर सपोर्टिंग पॅकेजेस इंस्टॉल करा.

sudo apt-get update

sudo apt-get install -y qemu-kvm qemu virt-manager virt-viewer libvirt-bin

तुम्ही QEMU अधिकृत साइटवरून देखील डाउनलोड करू शकता. QEMU 5.0.0 डाउनलोड आणि बिल्ड करण्यासाठी:

wget https://download.qemu.org/qemu-5.0.0.tar.xz
tar xvJf qemu-5.0.0.tar.xz
cd qemu-5.0.0
./configure
make

Git वरून QEMU डाउनलोड आणि बिल्ड करण्यासाठी:

git clone https://git.qemu.org/git/qemu.git
cd qemu
git submodule init
git submodule update --recursive
./configure
make

सिस्टममध्ये ब्रिज नेटवर्किंग सेटअप करा. ब्रिज केलेले नेटवर्क हे व्हर्च्युअल मशीनला समर्पित नेटवर्क कार्ड आहे जे गेस्ट मशीनला नेटवर्कच्या बाहेर कनेक्ट होण्यास मदत करते, आणि हे QEMU वापरून व्हर्च्युअल मशीन तयार करण्यापूर्वी सेटअप केले जाणे आवश्यक आहे.

sudo apt-get install -y bridge-utils resolvconf

ब्रिज br1 तयार करण्यासाठी इंटरफेस फाइल संपादित करा. तुम्ही तुमच्या ब्रिजला स्थिर IP देखील नियुक्त करू शकता.

sudo nano /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)

auto lo

iface lo inet loopback

#Bridge Name #
auto br1

# Bridge Information #
iface br1 inet static
bridge_ports ens33
bridge_stp off
bridge_fd 9
# Bridge IP #
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
dns-nameservers 8.8.8.8

CentOS ARM इमेज डाउनलोड करा

ARM इमेज डाउनलोड किंवा इम्पोर्ट करा. येथे आम्ही CentOS ARM इमेज वापरत आहोत. तुम्ही ती CentOS पेजवरून डाउनलोड करू शकता किंवा CEntOS FTP सर्व्हरवरून wget/curl करू शकता. तुम्ही खालील लिंकवरून थेट इमेज डाउनलोड करू शकता.

किंवा तुम्ही कमांड लाइनवरून इमेज wget करू शकता.

wget http://centos.zero.com.ar/centos-altarch/7.8.2003/isos/armhfp/CentOS-Userland-7-armv7hl-generic-Minimal-2003-sda.raw.xz

QEMU चालवत आहे

QEMU ला इमेज बूट करण्यासाठी कर्नेल आणि initramfs फाइलची आवश्यकता असेल. तुम्ही kpartx आणि mount कमांड वापरून इमेज माउंट करून ह्या फाइल्स काढू शकता.

kpartx वापरून:
sudo kpartx -av (तुमच्या_इमेजचा_पाथ)

वरील कमांड चालवल्यास तुमच्या सिस्टममध्ये लूप डिव्हाइसेस तयार होतील. तुम्ही माउंट कमांड वापरून विशिष्ट लूप डिव्हाइस mnt वर माउंट करू शकता आणि इमेजमधून आवश्यक फाइल्स कॉपी करू शकता.

sudo mount /dev/mapper/loop21p2 /mnt/

एकदा तुमचे बदल पूर्ण झाले की, तुम्हाला mnt अनमाउंट करणे आणि लूप्स डिलीट करणे आवश्यक आहे.

sudo umount /mnt/
sudo kpart -dv (इमेजचा_पाथ)
mount कमांड वापरून:

इमेजमधील पार्टिशन्सचा स्टार्ट आणि एंड सेक्टर मिळवण्यासाठी parted कमांड वापरा.

sudo parted (इमेजचा_पाथ)

वरील कमांड चालवल्यास parted युटिलिटी उघडेल. Unit टाइप करा आणि एंटर दाबा. पर्याय b एंटर करा. एकदा ते झाले की, print टाइप करा आणि तुम्हाला आवश्यक माहिती मिळेल.

Image

mnt वर आवश्यक पार्टिशन माउंट करण्यासाठी ही माहिती वापरा. येथे मी पहिले पार्टिशन mnt वर माउंट करत आहे.

sudo mount -o loop,offset=4194304 (इमेज_पाथ) /mnt/

आम्ही इमेजमधून आवश्यक फाइल्स काढल्यामुळे, आता तुम्ही VM वातावरण चालवण्यासाठी QEMU कमांड वापरू शकता.

qemu-system-arm \
-M cubieboard -m 2048 -cpu arm1176 -dtb sun4i-a10-cubieboard.dtb \
-kernel vmlinuz-4.19.113-300.el7.armv7hl \
-append "ro root=UUID=64e0ba9f-b645-4ce1-925d-e1a723a580fd rhgb quiet LANG=en_US.UTF-8" \
-initrd initramfs-4.19.113-300.el7.armv7hl.img -nographic \
-drive file=(इमेज_फाइल_पाथ),format=raw,if=none,id=d1 \
-device ide-hd,drive=d1 -net user,hostfwd=tcp::10022-:22 -net nic

येथे मी VM ला 2GB RAM दिलेली आहे आणि इमेज बूट करण्यासाठी आवश्यक असलेली इतर माहिती दिली आहे जसे की कर्नेल, initrd इ.

एकदा इमेज यशस्वीरित्या बूट झाली की, तुम्हाला तुमच्या टर्मिनलवर लॉगिन स्क्रीन मिळेल.

Image

डीफॉल्टनुसार, रूट फाइल सिस्टम पार्टिशनचा आकार 2 GB पर्यंत मर्यादित आहे. पार्टिशनचा आकार खालील कमांडद्वारे वाढवता येतो.

[root@host ~]# /usr/bin/rootfs-expand