Ubuntu 18.04 ડેસ્કટોપ પર CentOS armhfp VM સેટ કરો
મારા એક પ્રોજેક્ટ માટે, મેં મારા Ubuntu 18.04 ડેસ્કટોપ પર CentOS armhfp વર્ચ્યુઅલ મશીન સેટ કર્યું. હું બીજી રીતે પણ પરીક્ષણ કરી શક્યો હોત, ARM ઇમેજને SD કાર્ડ પર ફ્લેશ કરીને અને બોર્ડ પર બૂટ કરીને, પરંતુ મેં QEMU માં કામ કરવાનું પસંદ કર્યું. Cubietruck અથવા Raspberry Pi જેવા બોર્ડ પર પરીક્ષણ કરવું સમય માંગી લેતું છે. જો ઇમેજ ભ્રષ્ટ થઈ જાય, તો તમારે આખી પ્રક્રિયા ફરીથી કરવી પડે: SD કાર્ડ દૂર કરો, સાચી OS ઇમેજ ફરીથી ફ્લેશ કરો, પેકેજ અથવા અપડેટ બૂટ કરો અને પરીક્ષણ કરો, U-Boot સેટિંગ્સ બદલો, વગેરે.
QEMU એ ઓપન-સોર્સ મશીન એમ્યુલેટર અને વર્ચ્યુઅલાઈઝર છે જે ઘણી આર્કિટેક્ચર માટે ઓપરેટિંગ સિસ્ટમ ચલાવી શકે છે. Ubuntu અથવા CentOS જેવા બેઝ OS પર QEMU એન્વાયર્નમેન્ટ સેટ કરવું સીધું છે.
પૂર્વઆવશ્યકતાઓ
Ubuntu 18.04 સિસ્ટમ પર 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 નામનું બ્રિજ બનાવવા માટે interfaces ફાઇલ સંપાદિત કરો. તમે બ્રિજને સ્ટેટિક 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 ને ઇમેજ બૂટ કરવા માટે kernel અને initramfs ફાઇલોની જરૂર છે. તમે kpartx અથવા mount કમાન્ડ વડે ઇમેજ માઉન્ટ કરીને આ ફાઇલો કાઢી શકો છો.
kpartx નો ઉપયોગ કરીને:
sudo kpartx -av (path_of_your_image)
આ કમાન્ડ તમારી સિસ્ટમ પર લૂપ ડિવાઇસ બનાવે છે. mount કમાન્ડ વડે જરૂરી લૂપ ડિવાઇસ /mnt પર માઉન્ટ કરો અને ઇમેજમાંથી જરૂરી ફાઇલો કોપી કરો.
sudo mount /dev/mapper/loop21p2 /mnt/
પૂરું થયા પછી, /mnt અનમાઉન્ટ કરો અને લૂપ ડિવાઇસ ડિલીટ કરો.
sudo umount /mnt/
sudo kpartx -dv (path_of_the_image)
mount કમાન્ડનો ઉપયોગ કરીને:
ઇમેજમાંના પાર્ટીશનોના સ્ટાર્ટ અને એન્ડ સેક્ટર મેળવવા માટે parted કમાન્ડનો ઉપયોગ કરો.
sudo parted (path_of_the_image)
આ કમાન્ડ parted યુટિલિટી ખોલે છે. unit ટાઇપ કરો અને Enter દબાવો, પછી b વિકલ્પ દાખલ કરો. પછી જરૂરી માહિતી દર્શાવવા માટે print ટાઇપ કરો.
/mnt પર જરૂરી પાર્ટીશન માઉન્ટ કરવા માટે આ માહિતીનો ઉપયોગ કરો. આ ઉદાહરણ /mnt પર પ્રથમ પાર્ટીશન માઉન્ટ કરે છે.
sudo mount -o loop,offset=4194304 (image_path) /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=(Image_file_path),format=raw,if=none,id=d1 \
-device ide-hd,drive=d1 -net user,hostfwd=tcp::10022-:22 -net nic
આ કમાન્ડ VM ને 2GB RAM આપે છે અને ઇમેજ બૂટ કરવા માટે જરૂરી અન્ય માહિતી પૂરી પાડે છે, જેમ કે kernel અને initrd.
એકવાર ઇમેજ બૂટ થાય, તમારા ટર્મિનલમાં લોગિન પ્રોમ્પ્ટ દેખાય છે.
મૂળભૂત રીતે, રૂટ ફાઇલ સિસ્ટમ પાર્ટીશન 2 GB સુધી મર્યાદિત છે. તમે નીચેના કમાન્ડ વડે પાર્ટીશનનું કદ વધારી શકો છો.
[root@host ~]# /usr/bin/rootfs-expand