مجاز یا واقعیت؟ مساله این است!
نمیخوام در مورد این سوال صحبت کنم، چون جوابش خیلی بیشتر از یه متنه، اونم یه شبه راهنما!!
میخوام در مورد این مساله توی دنیای گنو/لینوکس، صحبت کنم. برای چی از ماشینهای مجازی استفاده کنیم؟ من فکر کردم و به نظرم رسید که دلایلش میتونه اینا باشه: (اگه بازم هست، ممنون میشم بدونم)
آزمایش توزیعهای متفاوت: تا جایی که میدونم بیشتر از ۴۰۰ توزیع داریم که اگه هر کدوم هر سال یه شماره جلو برن میشه بیشتر از یه توزیع در روز! (که امیدوارم جزو اون دسته کاربرا نباشید که به جای کار با گنو/لینوکس و تمرکز روی یک توزیع، فقط توزیع عوض کنید! البته بگم اگه کسی توزیعهای متفاوت رو ببینه، اشکالی نداره. اشکال مال وقتیه که تمام کار با گنو/لینوکس بشه این
. چون ما حق داریم که توزیع دلخواهمون انتخاب کنیم) ولی جدا از این، چند روز قبل از نگارش این شبه راهنما، برای یه کاری میخواستم چندتا توزیع تغییریافته (Remastered) رو امتحان کنم، به جای رایت سیدی و دردسرهاش، خیلی ساده از ماشین مجازی استفاده کردم و همه چیز خیلی تمیز انجام شد...
تازه دیدم که بعضیا برای تست برنامهها و محیطهای شبکهای از ماشین مجازی استفاده میکنن و به جای یه شبکه واقعی، از یه مجازیش استفاده میکنن که قابل حمله و گسترش! میتونید شبکه رو اون طوری که دوست دارید تشکیل بدید و هر بلایی که میترسید سر یه شبکه واقعی در بیارید میتونید سر این شبکه بیچاره مجازی دربیارید. (البته ماشین شما هم باید اونقدری قوی باشه که بتونه این کار رو بکنه.
)
آخریش که شاید این شبه راهنما دلیل اصلی نگارشش باشه (آخر آوردم چون حاشیهش معمولا زیاده!
) ، اجرای ویندوزه! (درسته تا حالا یه بار اسمش رو آوردم هنوز دو تا جا داره! تا جایی که یادمه نُرم استانداردش سه بار در روزه
) متاسفانه خیلی از شرکتهای تولید نرمافزار (از نظر من) اشتباه میکنن و خودشون رو از دنیای گنو/لینوکس محروم میکنن و تجربیات خودشون به یه سیستم عامل محدود میکنن. به هر حال این انتخابیه که اونا کردن و بهش احترام میگذارم.
یه نکته دیگه هم هست که این بحث رو تموم میکنه اونم اینه که ما گنو/لینوکسیها نیومدیم که نسل ویندوز و هر چی برنامه سورس بسته هست رو منقرض کنیم!!
این یه «اشتباه مصطلح» بین گنو/لینوکسیهاست که امیدوارم به سرعت مرتفع بشه!
البته امیدوارم از این برداشت اشتباه نشه که بعد از خوندن این شبه راهنما مثل فیلما سفید بپوشیم، از اون ور متحول بشیم و با گل بریم به استقبال هر چی سورس بسته هست و بگیم «من با پیام محبت و دوستی اومدم!» و یا از این به بعد با شنیدن اسم ویندوز، از ته دل لبخند بزنیم (البته میدونم اکثر دوستان لبخند میزنن ولی به دلایل دیگه!
). راهش این نیست
! نکته اصلی اینجاست که ما گنو/لینوکسی هستیم و میگیم که این ویندوز شماست ، این گنو/لینوکس – به ویژه اوبونتوی – ما. (دیگه نگم؟ چشم! پس «اون سیستم عامل» که از این مقدار استاندارد بیشتر نشه!
) کاملا
فنی و به دور از حاشیه مساله خودش حل میشه. مساله انقراض رو هم به زمان واگذار میکنیم!
(کلمه
فنی رو ضخیم نوشتم! اشاره به خودم که همیشه شبه راهنما مینویسم!)
به هر حال مشکل اصلی همینه که گفتم : خیلی از برنامهها فقط نسخه «اون سیستم عامل» رو دارن [برنامههای بیگانه
] (منظورم برنامههایی هستن که معادل گنو/لینوکسی ندارن یا یک سری قابلیت توی نسخه «اون سیستم عامل» هست که توی گنو/لینوکس نیست. یادمون هم باشه، دونستن نقص یعنی امکان برای کامل کردن، به خصوص توی دنیای متن باز.) کاربر میتونه دوتا کار کنه:
۱) اونقدر صبر کنه که نسخه گنو/لینوکسی بیرون بیاد که در از یک ساعت تا چند قرن ممکنه طول بکشه!
۲) کلا بیخیال کار بشه و یا بره توی «اون سیستم عامل» کارکنه. که اولی ممکنه در مواردی تا ابد طول بکشه و دومی چندان مورد پسند نیست! پس یه راه هست و اون استفاده از یه نسخه مجازیه.
علاوه بر این، داشتن«اون سیستم عامل» برای کاربرای جدید خیلی میتونه مفید باشه. تا بتونن همه کارها رو به روش گنو/لینوکسی (The GNU/Linux Way) انجام بدن. تغییر خوبه اما نه تغییر ناگهانی. اگه کسی به گنو/لینوکس علاقهمند بشه، کم کم کارا رو به روشش انجام میده. پس داشتن «اون سیستم عامل» به شکل مجازی، برای کار میتونه مفید باشه... پس خوبه که روش استفاده از برنامه VirtualBox رو کاملتر بدونیم.
و اما VirtualBox...
یک برنامه هست که میتونه برای شما ماشین مجازی بسازه و اونا رو اجرا کنه (به سیستم شما میگن میزبان، به سیستم عاملی که توی ماشین مجازی هست میگن مهمان). یه نسخه از این برنامه OSE هست، یعنی Open Source Edition که به صورت رایگان میشه ازش استفاده کرد. امکاناتش در مقابل نسخه تجاریش کمتره ولی کارهای عادی و Business (کد نویسی، کارای گرافیک دوبعدی معمول) رو راه میاندازه.
این نرمافزار توی مخازن اوبونتو هست. ولی فکر میکنم که نسخه جدیدش نباشه (از این مطمئن نیستم، کسی میدونه، لطفا بگه) به هر حال میشه توی گاتسی از مخازن نصبش کرد:
sudo apt-get install virtualbox-ose virtualbox-ose-source
sudo module-assistant prepare
sudo module-assistant update
sudo module-assistant unpack virtualbox-ose
sudo module-assistant auto-install virtualbox-ose
و یا میشه از خود سایت (
www.virtualbox.org) دانلود کرد و نصب کرد. مال من که از خود سایت دانلود شده ونسخه 1.5.4 هست. این نسخه خیلی از باگهای نسخههای قبلی رو بر طرف کرده. و من فرضم اینه که با این نسخه کار میکنید.
کار ساده شروع میشه. یک ویزارد با زدن کلید New باز میشه که شما رو قدم به قدم جلو میبره: از اسم و نوع سیستم عامل شروع میشه، میزان حافظه اصلی، بعدش میزان دیسک مجازی. در این قدم میتونید که از یک دیسک مجازی قدیمی استفاده کنید – که وجود داره – یا یکی جدید بسازید. اگه بسازید، دو گزینه اصلی اول کاره: Dynamically expanding image و Fixed-size image. فرقشون باهم اینه که اولی، کم کم فضا رو میگیره. مثلا اول دو گیگ و بعد که فضا پرشد، یه دو گیگی دیگه اضافه میکنه تا برسه به حداکثر فضا. دومی کل، فضا رو یه جا میگیره. بعدش ماشین حاضره و با تموم کردن این قدمها شما یه ماشین آماده دارید. میتونید برای تنظیمات بیشتر وقتی ماشین خاموشه یعنی Power off شده با زدن Settings تنظیمش کنید.
اما شاید جالبترین بخش یه برنامه، اجرا کردنش باشه! یه مشکل توی VirtualBox هست که تا جایی که من میدونم کلا وجود داشته (اینکه چرا همچنان هست، نمیدونم. اگه برنامه خودم بود، میگفتم باگ رو به دلیل یه احساس نستالژیک نگه داشتم!
) به هر حال با زدن دکمه استارت شما با یک خطا مواجه میشید! برای اینکه این مساله رو حل کنید، یک راه ساده هست که من اون رو میگم و مستلزم یک ری استارت کردن کامپیوتره. اگه دوست ندارید که این کار رو بکنید: (بعدش یه راه ساده تر نوشتم.)
قبلش باید گروهها رو تنظیم کنید. توی System->Administration->Users and Groups، دکمه Manage Groups رو بزنید و به گروه vboxusers، کاربر خودتون رو اضافه کنید. یا با دستور فرمان:
sudo gpasswd -a my_username vboxusers
یک راه دیگه هم برای ری استارت نکردن
اینجا گفته شده که کسی دیگه لازم نیست ریاستارت کنید. یا کلا کار رو از همین راهنمای اصلی دنبال کنه. (راستی نگفتم؟ راهنمای اصلی آدرسش همونه و عکسهای خوبی داره که میتونید ازش استفاده کنید:
این دستور رو بزنید:
ls -l /dev/vboxdrv
یه خروجی میده که باید شبیه این باشه:
crw-rw---- 1 root vboxusers 10, 62 2007-10-08 13:27 /dev/vboxdrv
اگه خروجیش شبیه این نبود، لازمه که ماژول رو دوباره بارگذاری کنید:
sudo rmmod vboxdrv
sudo modprobe vboxdrv
اما روش سادهتر: ری استارت! (یادمون باشه، توی گنو/لینوکس مجبور نیستیم، برای قدم به قدم این کار رو بکنیم! من به سادگی روشها اعتقاد دارم که لزوما فنیترین راه نیست!) ولی اگه توی گاتسی(۷.۱۰) هستید، الان عجله نکنید. یه کار دیگه هم هست، بعدش!
راستی توی راهنما گفته که ماژول مربوط هسته باید هر بار لود بشه. من خودم این کار رو نکردم و مشکلی ندارم. ولی راهنما گفته پس من اینجا میارمش:
echo "vboxdrv" | sudo tee -a /etc/modules
راه اندازی USB
این یه مشکله که ظاهرا مربوط به گاتسی میشه! (برای این گفتم صبر کنید!) ظاهرا توی گاتسی یه چیزی تو مایههای proc/bus/usb/ که قبلا کار میکرد، دیگه نیست! به همین دلیل باید راه اندازیش کنید. راستی دقت کردید که موقع زدن settings یه خطای مربوط به USB میداد؟ به همین دلیله. پس باید کارای زیر رو انجام بدید:
توی فایلetc/init.d/mountdevsubfs.sh/ یه قسمت هست که با (#)، کامنت گذاشتن. با دستور
sudo gedit /etc/init.d/mountdevsubfs.sh
بازش کنید و این قسمت رو پیدا کنید
#
# Magic to make /proc/bus/usb work
#
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount --rbind /dev/bus/usb /proc/bus/usb
با برداشتن علامتهای # از چهار خط آخر، اولین کار انجام میشه.
قسمت بعدی اضافه کردن یک خط هست به etc/udev/rules.d/40-permissions.rules/ برای این کار این فایل رو باز کنید:
sudo gedit /etc/udev/rules.d/40-permissions.rules
داخل فایل جستجو کنید و عبارت usb_device رو پیدا کنید. جلوش یه کلمه MODE نوشته با مقدار 0664. عدد رو به 0666 تغییر بدید.
حالا ری استارت کنید. و از ماشین مجازی کامل خودتون توی VirtualBox لذت ببرید. (روش بدون ری استارت این یکی رو نمیدونم. اگه کسی میدونه، لطفا بگه)
چند تا نکته مفید به نظرم میرسه که به عنوان پایان بخش این شبه راهنما میارم:
- حتما بعد از راهاندازی سیستم عامل مهمان، حتما Guest Addition رو از منوی Device نصب کنید! خودش به صورت خودکار امکاناتی رو به سیستم مهمان شما اضافه میکنه که با سیستم اصلی شما بهتر کار کنه. دقت صفحه بهتر بشه یا حرکت موس رو بین دو سیستم بهتر میکنه.
- وقتی داخل پنجره، کلیک میکنید، برای بیرون اومدن یک کلید هست که توی VirtualBox بهش میگن Host. اون کلید به صورت پیشفرض میشه کنترل سمت راست. میتونید از منوی Machine اون رو عوض کنید.
- از منوی Devices، میتونید که در حال کار imageها رو mount کنید. این کار رو برای بوت ماشین از طریق image هم میتونید انجام بدید. علاوه بر این، درایو اصلی ماشین رو می شه استفاده کرد.
- برای بوت سیستم، اول که ماشین کار میکنه، مثل یه کامپیوتر عادی، اگه سی دی یا iso توش باشه از اون بوت میکنه. اگه لازم شد، منوی بوت بیاره، کلید F12 رو اولش بزنید (وقتی آرم شرکت میاد)
- کلید Host+R را دریابید! کلید ریست کردن سیستمه.
- با بستن خود پنجره امکان خاموش کردن و Save State رو دارید، اگه Save State رو انجام بدید، دفعه بعد از همونجا کار رو ادامه میده. دیگه اینکه امکان تغییرات در ماشینی که Save State شده باشه وجود نداره. ماشین باید خاموش باشه.
- از اون پایین گوشه سمت راست ماشین خودتون غافل نشید. کلی آیکن کوچولو هست که میتونید خیلی از کارا رو باهاش به سرعت انجام بدید.
- تا جایی که میدونم، اتصال به اینترنت از طریق دسترسی ماشین میزبان به صورت خودکار انجام میشه. خودش هم NAT میسازه.
- برای به اشتراک گذاشتن فایل باید دوتا کار انجام بدید:
۱- یه پوشه رو توی ماشین تعیین کنید که از قسمت settings یا یه آیکن پوشه، زیر ماشین درحال اجرا، میتونید این کار رو بکنید. یک اسم براش تعیین کنید. این اسم مهمه پس بدونید چیه.
۲- برای اشتراک با ویندوز (حالا این یه امروز رو کوتاه بیایم و یه کمی بیشتر این اسم رو بشنویم!
) توی خط فرمان یا توی My Computer یه درایو شبکهای بسازید. یا توی Command Prompt این دستور رو بزنید. به جای X هر درایوی دیگهای میتونه باشه:
net use x: \\vboxsrv\share
که کلمه share یعنی همون اسمی که روی پوشه گذاشتید.
و اگه سیستم عامل خودی بود:
mount -t vboxsf share mount_point
که mount_point یه جای توی سیستم عامل مجازی مثلmnt/ هست.
حالا که یه بار اسمش رو اضافه آوردم یه بار دیگه هم بگم:
برای ویندوز قابلیت Seamless Integration هست که پس زمینهش رو حذف میکنه و پنجره هاش رو کنار پنجرههای اصلی گنو/لینوکس توی محیط گنوم/کی دی ای میاره که دیدن همین بامزهس. (کلیدش Host+L هست.) اگه دیدید درست نشد، دوباره کلید رو بزنید تا به حالت اولیه در بیاد و دوباره امتحان کنید. راستی اگه Compiz-Fusion (یا جلوههای سه بعدی دارید) پس زمینه شما اگه پنجرهای باز نباشه، سیاه میشه. هنوز این اشکال تا جایی که میدونم حل نشده. ولی اگه حداقل یه پنجره باز داشته باشید، مشکلی نداره... میتونید هم جلوههای Fade و اینا رو توی ویندوز حذف کنید که باز بهتر بشه. من که دوست دارم زودتر این مشکل هم حل بشه. و به [حل شد] بذارم اولش!
- در VirtualBox، کار با شبکه از طریق NAT به شکل سادهای امکان داره! ولی اگه لازم شد پل بزنید، باید کارهای بیشتری رو انجام بدید (من این بخش رو از راهنمای اصلی میارم. خودم لازم نشده امتحان کنم ولی چون توی انجمن سوال شده، گفتم بیارمش
)
sudo apt-get install bridge-utils uml-utilities
حالا یه پل بسازید و interface خودتون رو روش نصب کنید:
sudo tunctl -t tap1 -u lomion
sudo chmod 666 /dev/net/tun
توجه کنید که lomion کاربریه که قراره از Virtualbox استفاده کنه.
حالا یه پل جدید بسازید:
sudo brctl addbr br0
حالا interface خودتون رو توی مود promiscuous قرار بدید و به پل اضافهش کنید و به پل یه آدرس dhcp بدید:
sudo ifconfig eth0 0.0.0.0 promisc
sudo brctl addif br0 eth0
dhclient br0
حالا tap1 رو به پل اضافه کنید:
sudo brctl addif br0 tap1
حالا در بخش تنظیمات، در شبکه attached to رو انتخاب کنید و tap1 رو برای کار. شبکه راه افتاد.
خب خسته نباشید. خوشحالم که تا آخرش موندید!
اگه مشکلی داشت، لطفا به من بگید تا اصلاح کنم. راستی واژه برگزیده این شبه راهنما:
گنو/لینوکس به جای لینوکس. (این نکته رو آقای حسنپور به صورت ضمنی متذکر شدن. ممنونم
)
«اون سیستم عامل» به جای «اون سیستم عامل» ( می خواستم بیشتر از ۷ بار نشه
، میگن ۷ عدد شانسه! حالا برای کی؟ خودتون قضاوت کنید!)