যদি ভিবক্সডি স্ক্রিপ্টগুলি আপনাকে আমার মত ততটা সমস্যা দিচ্ছে তবে আপনি এটি চেষ্টা করতে চাইতে পারেন; এটি একটি বরং সহজ সমাধান, পার্লে প্রয়োগ করা হয়েছে, যা একই কার্যকারিতা সরবরাহ করে। বিশেষত, ভিএম সিস্টেমের সাথে শুরু হয় (ধরে নিই যে পরিষেবাটি স্বয়ংক্রিয়ভাবে শুরু হবে যা পূর্বনির্ধারিত), এবং পরিষেবাটি বন্ধ হয়ে গেলে পরিষ্কারভাবে নেমে যায়।
আমার অভিজ্ঞতার সাথে মোকাবিলার জন্য যথেষ্ট সরল হওয়া বাদ দিয়ে vboxd সমাধানের মূল পার্থক্যগুলি হ'ল এই স্ক্রিপ্টটি কোনও ভিআরডিই পোর্ট সেটিংটি ভিবক্সহিডলেসকে দেয় না এবং ভিএম শটডাউনটি "এসপিপওয়ারবার্টন" এর মাধ্যমে "সাভেস্টেট" এর মাধ্যমে পরিচালিত হয় না ।
এটি যদি আপনার উদ্দেশ্যগুলির সাথে খাপ খায় না, তবে এটি পরিবর্তন করা যথেষ্ট সহজ; প্রথম ক্ষেত্রে, VBoxHeadless কমান্ড লাইন স্ট্রিং ($ সেমিডি) -এ '-e "টিসিপি / পোর্টস = [, পোর্ট ...]" যুক্ত করুন এবং দ্বিতীয় ক্ষেত্রে কেবল "এসিপিপাওয়ারবটন" কে "স্যাভ্যাসেট" এ পরিবর্তন করুন স্বাক্ষর হ্যান্ডলার
পার্ল লিপিটি এখানে:
#!/usr/bin/perl
# Service wrapper for VirtualBox VM.
use strict;
# Windows-style path pointing to your VirtualBox home directory
# (i.e., where your VirtualBox.xml lives)
my $vboxhome = 'c:\\Documents and Settings\\Aaron\\.VirtualBox';
# Cygwin path pointing to the VirtualBox install directory
my $vboxpath = '/cygdrive/c/Program Files/Oracle/VirtualBox';
# Name or UUID of your virtual machine
my $vmname = '{83dfb4b1-4243-4a07-9d37-9df5573792d8}';
$ENV{'VBOX_USER_HOME'} = $vboxhome;
my $exit_handler = sub {
print "Caught SIGTERM; shutting down VM.\n";
exec("'$vboxpath/VBoxManage.exe' controlvm $vmname acpipowerbutton");
};
$SIG{TERM} = $exit_handler;
print "[debug] pid $$\n";
# Command line for VBoxHeadless - add your VRDE port here if you want one
my $cmd = "'$vboxpath/VBoxHeadless.exe' --startvm $vmname 2>&1 1>/dev/null";
print "[debug] $cmd\n";
system($cmd);
print "VM died unexpectedly; exiting.\n";
এবং উইন্ডোজ পরিষেবাটি ইনস্টল করতে আমি ব্যবহৃত সাইগ্রানস্রভ কমান্ড লাইনটি এখানে দিয়েছি:
cygrunsrv --install '<service-name>' --desc '<description>' \
--path '/usr/bin/perl' --args '<full-path-to-service-script>' \
--chdir '<path-to-service-script-dir>' --termsig TERM --shutsig TERM \
--preshutdown --interactive
সেখান থেকে, এটি 'sc start <service-name>' জারি করার বিষয়টি হওয়া উচিত, এবং আপনার যেতে ভাল হওয়া উচিত - মনে রাখবেন, ডিফল্টরূপে, সাইগ্রানসারভ পরিষেবাদিগুলি / var / log / <service-name> এ লগ হয় .log, সুতরাং যদি কোনও কিছু খারাপ আচরণ করে তবে কোনও কারণ অনুসন্ধান করার জন্য এটিই প্রথম স্থান।
একটি বিষয় মনে রাখবেন যে, আপনি যখন ভিএম এভাবে চালাবেন, তখন এটি আপনার নিজের চেয়ে বিল্ট-ইন সিস্টেমে অ্যাকাউন্টের অধীনে চলবে। এটি হ'ল, পরিষেবা হিসাবে চলাকালীন আপনি ভার্চুয়ালবক্স কনসোলের মাধ্যমে ভিএম পরিচালনা করতে পারবেন না; এটি "পাওয়ার অফ" অবস্থায় উপস্থিত হবে এবং আপনি এর সেটিংসে যেতে সক্ষম হবেন না। (সার্ভিস হিসাবে চলমান অবস্থায় ভিএম তে পাওয়ার চেষ্টা করার প্রস্তাব দেওয়া হয় না - কী হবে তা আমি জানি না, তবে সর্বোপরি এটি কোনও অনিঃপত্তি হবে এবং সবচেয়ে খারাপভাবে এটি আপনার ভিএমকে জড়িয়ে দেবে)) আপনার যদি ভিএম এর সেটিংস পরিবর্তন করতে বা কনসোলে অ্যাক্সেসের প্রয়োজন হয় তবে প্রথমে পরিষেবাটি বন্ধ করুন (এবং VBoxHeadless.exe প্রস্থান করার জন্য অপেক্ষা করুন), এবং তারপরে এটি / ভার্চুয়ালবক্স কনসোলে এটি সাধারণভাবে আপনার পছন্দ মতো কনফিগার করুন।
ভার্চুয়ালবক্স কনসোল চালানোর জন্য আপনি সম্ভবত দ্বিতীয় ইন্টারেক্টিভ পরিষেবা ইনস্টল করে এই সমস্যাটি সমাধান করতে পারেন; যেহেতু এটি সিস্টেমে অ্যাকাউন্টের অধীনে কনসোলটিও চালিত করবে, তাই সম্ভবত এটি চলমান ভিএম দেখতে এবং পরিচালনা করতে সক্ষম হবে। আমার নিজে এটি করার দরকার নেই, সুতরাং এটি কাজ করবে কিনা তা আমি নিশ্চিত নই, তবে এটি কেন হবে না তার কোনও কারণ আমি দেখতে পাচ্ছি না। (যদি আপনি এটি চেষ্টা করেন, আমি এই উত্তরের একটি মন্তব্যকে প্রশংসা করব, এটি আপনার জন্য কীভাবে কাজ করেছে তা আমাকে জানান Thanks ধন্যবাদ!)
আশাকরি এটা সাহায্য করবে!