உபுண்டு 18.04 டெஸ்க்டாப்பில் CentOS armhfp VM அமைத்தல்

சில காலத்திற்கு முன்பு, எனது திட்டங்களில் ஒன்றிற்காக எனது உபுண்டு 18.04 டெஸ்க்டாப்பில் CentOS armhfp மெய்நிகர் இயந்திரத்தை அமைக்கும் வாய்ப்பு கிடைத்தது. ARM படிமத்தை ஒரு SD அட்டையில் எழுதி பலகையில் இயக்குவது உள்ளிட்ட எனது சோதனைகளை மற்றொரு வழியில் செய்யக்கூடியிருந்தாலும், QEMU-இல் பணியாற்ற நான் விரும்பினேன். காரணம், கியூபிட்ரக் அல்லது ராஸ்பெர்ரி பை போன்ற பலகைகளின் சோதனை நேரம் அதிகம் எடுக்கக்கூடியது. எப்படியாவது நாம் படிமத்தை சிதைத்துவிட்டால், SD அட்டையை அகற்றுதல், சரியான OS படிமத்துடன் மீண்டும் எழுதுதல் மற்றும் pkg/update/ ஐ இயக்குதல்/சோதித்தல், U-boot அமைப்புகளை மாற்றுதல் போன்ற அதே நடைமுறைகளை மீண்டும் செய்ய வேண்டியிருக்கும்.

QEMU என்பது ஒரு திறந்த மூல மென்பொருள் இயந்திர முன்மாதிரியாக்கி அல்லது மெய்நிகராக்கி ஆகும், இது எந்த கட்டமைப்பின் இயக்க முறைமைகளையும் இயக்கும் திறன் கொண்டது. உபுண்டு அல்லது CentOS போன்ற அடிப்படை OS-இல் QEMU சூழலை அமைப்பது மிகவும் எளிதானது.

முன்நிபந்தனைகள்

உபுண்டு 18.04 கணினியில் 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 (path_of_your_image)

மேலே உள்ள கட்டளையை இயக்குவது உங்கள் கணினியில் லூப் சாதனங்களை உருவாக்கும். mount கட்டளையைப் பயன்படுத்தி குறிப்பிட்ட லூப் சாதனத்தை mnt-க்கு ஏற்றலாம் மற்றும் படிமத்திலிருந்து தேவையான கோப்புகளை நகலெடுக்கலாம்.

sudo mount /dev/mapper/loop21p2 /mnt/

உங்கள் மாற்றங்கள் முடிந்ததும், mnt-ஐ ஏற்ற நீக்கி லூப்புகளை நீக்க வேண்டும்.

sudo umount /mnt/
sudo kpart -dv (path_of_the_image)
mount கட்டளை பயன்படுத்துதல்:

படிமத்தில் உள்ள பகிர்வுகளின் தொடக்க மற்றும் முடிவு பிரிவுகளைப் பெற parted கட்டளையைப் பயன்படுத்தவும்.

sudo parted (path_of_the_image)

மேலே உள்ள கட்டளையை இயக்குவது parted பயன்பாட்டைத் திறக்கும். Unit என்று தட்டச்சு செய்து enter அழுத்தவும். b விருப்பத்தை உள்ளிடவும். அது முடிந்ததும், print என்று தட்டச்சு செய்தால் தேவையான தகவலைப் பெறுவீர்கள்.

Image

தேவையான பகிர்வை 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 வழங்கியுள்ளேன் மற்றும் கர்னல், initrd போன்ற படிமத்தை இயக்க தேவையான பிற தகவல்களை வழங்கியுள்ளேன்.

படிமம் வெற்றிகரமாக இயக்கப்பட்டதும், உங்கள் முனையத்தில் உள்நுழைவுத் திரையைப் பெறுவீர்கள்.

Image

இயல்பாக, ரூட் கோப்பு முறை பகிர்வின் அளவு 2 GB வரை மட்டுப்படுத்தப்பட்டுள்ளது. பகிர்வின் அளவை பின்வரும் கட்டளையின் மூலம் அதிகரிக்கலாம்.

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