‏نمایش پست‌ها با برچسب Linux. نمایش همه پست‌ها
‏نمایش پست‌ها با برچسب Linux. نمایش همه پست‌ها

Access Shared Folders in a VirtualBox Ubuntu Virtual Machine

دسترسی به Shared Folderهای تعریف شده در Oracle VirtualBox از Ubuntu

Shared Folderها پوشه هایی (فولدر هایی) هستند که بین PC شما و سیستم عامل مجازی که در ماشین مجازی نصب نموده اید به اشتراک گذاشته می شوند. به عنوان مثال، می خواهیم یک فایل بزرگ که اسمش X هست رو به سیستم عامل مجازیمون بفرستیم. در سیستم عامل خودمون فایل X را در پوشه ای که تعریف کردیم قرار میدیم و از اون طرف، در ماشین مجازیمون، فایل را از پوشه ای که در اونجا تعریف کردیم، برمیداریم. دقیقا مثل درایو های Share و Map شده در شبکه، که تو یکی از کامپیوتر ها، فایلی رو در پوشه Share شده میریزیم و در کامپیوتر دیگر، فایل را از پوشه Share شده بر میداریم.

شاید شما هم مثل من از Shared Folder در VMware خیلی استفاده کرده باشید. اما تعریف و استفاده از Shared Folder در Ubuntu نصب شده در Oracle VirtualBox زیاد ساده به نظر نمیرسه، برای همین مراحل کار را اینجا مینویسم.
 قبل از هر چیز این نکته رو باید عرض کنم که من از Light Ubuntu نسخه 13.04 استفاده می کنم. و در زیر نتیجه دستور lsb_release –a در Terminal اوبونتوی  من رو میبینید:
ahmad@lubuntu-vm:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 13.04
Release:    13.04
Codename:    raring

هدف اینه که من پوشه ای که در مسیر D:\Share در PC خودم دارم را در سیستم عامل مجازیم، یعنی همون LUbuntu ببینم و بتونم از اون استفاده کنم.

مراحل اشتراک گزاری:

انتخاب پوشه

برای شروع از منوی Devices ، Shared Folders رو انتخاب کرده و پوشه دلخواه خود را با نام دلخواه خود برای به اشتراک گذاری معرفی می نماییم. به عنوان مثال پوشه بنده در مسیر D:\Share قرار داره و با نام winshare معرفی نموده ام.

نصب Guest Additions

ابتدا باید بگم که Guest Additions  یک پکیج نرم افزاری هست که در زبان ساده میشه گفت که ارتباط بین سیستم عامل مجازیتون و Oracle VirtualBox رو تسهیل می بخشه و سرعت و یکپارچگی رو به ارمغان میاره. سه مورد از توانایی های Guest Additions رو برای مثال در ادامه مینویسم و شما میتونید همه توانایی های Guest Additions را در اینجا با توضیحات بخونید.
-    یکپارچگی موس و صفحه کلید بین سیستم عامل و ماشین مجازی.
-    پشتیبانی بهتر از کارت گرافیک
-    اشتراک پوشه بین سیستم عامل و ماشین مجازی
-    و ...
خوب برای نصب Guest Additions از منوی Devices ، Install Guest Additions را انتخاب می کنیم. با این عمل یک دیسک مجازی در لینوکسمان Mount خواهد شد. آدرس این دیسک در سیستم بنده به صورت زیر است:
/media/ahmad/VBOXADDITIONS_4.2.12_84980

در خط فرمان به پوشه مورد نظر رفته و فایل VBoxLinuxAdditions.run را اجرا می نماییم:
cd /media/cdrom
sudo ./ VBoxLinuxAdditions.run

خروجی دستور بالا در سیستم بنده به صورت زیر بود و همینطور که میبینید با خطا مواجه شده:
ahmad@ahmad-VirtualBox:~$ cd /media/ahmad/VBOXADDITIONS_4.2.12_84980
ahmad@ahmad-VirtualBox:/media/ahmad/VBOXADDITIONS_4.2.12_84980$ sudo ./VBOXLinuxAdditions.run
[sudo] password for ahmad:
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.2.12 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules ...done.
Building the VirtualBox Guest Additions kernel modules
The make utility was not found. If the following module compilation fails then
this could be the reason and you should try installing it.
The gcc utility was not found. If the following module compilation fails then
this could be the reason and you should try installing it.
Building the main Guest Additions module ...fail!
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions ...done.
Installing the Window System drivers
Installing X.Org Server 1.13 modules ...done.
Setting up the Window System to use the Guest Additions ...done.
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.
Installing graphics libraries and desktop services components ...done.
ahmad@ahmad-VirtualBox:/media/ahmad/VBOXADDITIONS_4.2.12_84980$


اگر شما هم با خطای بالا برخورد کردید، میتونید بسته virtualbox-guest-x11 را نصب کنید تا خطا برطرف بشه:
sudo apt-get install virtualbox-guest-x11

البته این دستور هم در سیستم من با خطا مواجه شد و پیغام  Unable to locate package برای من نمایش داده شد. این خطا به خاطر این بود که من در هنگام نصب، اینترنت ماشین مجازی را قطع کرده بودم و Package Manager  و چند برنامه دیگه آپدیت نشده بود. پس برای برطرف کردن خطا اول از دستور sudo apt-get update استفاده کردم و بعد دستور بالا رو اجرا کردم.
خوب بعد از برطرف شدن خطا دوباره دستورات بالا را برای نصب Guest Additions اجرا می کنیم.
sudo ./VBoxLinuxAdditions.run

تخصیص دسترسی به کاربر

برای اینکه بتونیم پوشه خود را سوار (Mount) کنیم، ابتدا باید کاربری خود را در گروه vboxsf قرار بدیم. برای این کار از دستور زیر استفاده می کنیم:
sudo usermod -aG vboxsf ahmad

در این دستور به جای ahmad نام کاربری خود را وارد کنید.

سوار(Mount) کردن پوشه

برای مانت کردن پوشه ابتدا یک پوشه در مسیر /media ایجاد می نماییم و سپس پوشه خود را سوار می کنیم.
 sudo mkdir /media/vboxshared
sudo mount -t vboxsf winshare /media/vboxshared

winshare نام پوشه ای است که در ابتدای کار به پوشه خود نسبت داده ایم.
Vboxshared نام دلخواه ما برای نام پوشه در سیستم عامل اوبونتو می باشد.

حالا میتونید فایل ها و برنامه های مورد نظرتون رو در پوشه ای که در ویندوز به اشتراک گذاشتید بریزید (برای بنده همون پوشه D:\Share) و در سیستم عامل مجازیتون (اوبونتو) از مسیر /media/vboxshared اون ها رو ببینید.
\.Chehre

Calculate MD5, SHA1 and other hashes of files

احتمالا شده که بخواهید کد های MD5 یا SHA1 و یا بقیه کدهای Hash یک فایل، دیسک ایمیج یا هر مدیایی رو چک کنید تا از سالم بودن و دست نخورده بودن اون اطمینان حاصل کنید. برنامه های زیادی هستند که این کار رو برای ما انجام میدن، و یا حتی میشه خودمون برنامه ای بنویسیم که این کار رو برای ما انجام بده. البته در این پست من نمیخوام  آموزش نوشتن چنین برنامه هایی رو بدم، چون یک جستجوی ساده در اینترنت، میتونه کدهای بسیاری رو برای شما بیاره که دیگه لازم نباشه خودتون از ابتدا برنامه Hash بنویسید.
در زیر چند راه حل برای به دست آوردن کدهای Hash در خط فرمان ها را براتون مینویسم:

محاسبه کدهای Hash یک فایل در Command Line ویندوز

برای چک کردن MD5 یا SHA1 و ... در ویندوز میتونید از File Checksum Integrity Verifier استفاده کنید. نحوه استفاده از این برنامه خیلی راحت هستش و شما با نوشتن دستور زیر در Command Line ویندوز میتونید مقدار MD5 و SHA1 فایل مورد نظرتون رو بدست بیارید:

FCIV -md5 -sha1 path\filename.ext

البته FCIV به طور پیش فرض توی ویندوز نیست و شما باید اونو دانلود و نصب کنید. این نکته را هم باید بگم که در پیج دانلود برنامه گفته شده که شرکت مایکروسافت از این فایل پشتیبانی نمیکنه و ریسک نصب و اجرای اون رو باید به جون بخرید.

محاسبه MD5 یک فایل در PowerShell

اگر از PowerShell به عنوان خط فرمان پیش فرض ویندوز استفاده می کنید، برای محاسبه کد MD5 میتونید از دستورات زیر استفاده کنید:

$someFilePath = "C:\foo.txt"
$md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes($someFilePath)))

در این کد کافیه آدرس فایل خود را در متغیر someFilePath  بریزید و بعد از اجرای دستورات، کد MD5 فایل خود رو میتونید مشاهده کنید.
البته در اینجا قطعه کدی به همراه مثال نوشته شده که با استفاده از اون میتونید به سادگی کدهای SHA1 و MD5 یک فایل را حساب کنید.

محاسبه کدهای Hash یک فایل در Shell های لینوکس

خوشبختانه به دست آوردن کدهای Hash تو لینوکس خیلی راحت هستش و دیگه نیازی به دانلود پکیج خاصی نیست و به طور پیش فرض، این دستورات در لینوکس وجود دارن. و یا حداقل در توزیع هایی که من استفاده کردم اینطور بوده.
برای محاسبه MD5 یک فایل از دستور md5sum filename استفاده می کنیم و به جای filename اسم فایل را قرار میدهیم.
و همینطور برای SHA1 از دستور sha1sum filename استفاده می کنیم.
- برای دیدن بقیه دستوراتی که با sha شروع میشن، حروف sha رو در Shell بنویسید و دو بار کلید Tab را بزنید تا دستورات بقیه کدها Hash که با sha  شروع میشن نمایش داده بشن.

در آخر باید بگم که خود من دستورهای لینوکس رو ترجیح میدم، و برای همین، همیشه Cygwin رو در ویندوزم نصب می کنم. و برای به دست آوردن کد های Hash از دستورات لینوکس در ترمینال Cygwin استفاده می کنم.

\.Chehre

How to use exclamation mark in git commit message

شاید برای شما هم پیش اومده باشه که بخواهید توی پیغام commit مربوط به  git از کاراکتر "!" (علامت تعجب) استفاده کنید. اما وقتی این کاراکتر رو استفاده کنید با پیغام خطایی مواجه خواهید شد که در زیر نشون دادم :
 
git commit -m "frmHelp added!"
bash: !": event not found

این به خاطر وجود شلی هست که دستورات git رو توی اون وارد میکنیم. درواقع وقتی از bash یا shell لینوکس استفاده میشه این اتفاق میفته.
اگر کاربر ویندوز باشید و Cygwin Terminal رو نصب کرده باشید و یا تو همون bash مربوط به git دستور زیر رو وارد کنید همون پیغام خطا رو خواهید گرفت:

 echo "hello!"

خوب برای استفاده از کاراکتر "!"  چند راه وجود داره:
استفاده از single quotes مثل دستور زیر
git commit -m 'frmHelp added!'
یا استفاده ادغام  single quotes و double quotes:
git commit -m "frmHelp added"'!'
یا استفاده از "\"  :
git commit -m "frmHelp added\!"

اگه بخواهیم که کلا از شر این کارا راحت بشیم باید چیکار کنیم؟
اول باید کمی درباره بعضی دستورات لینوکس توضیح بدم و با history شروع میکنم. دستور history باعث میشه که دستوراتی که در شل زدید رو بهتون نمایش بده. برای مثال دستور history در شل من به صورت زیر هستش :

Ahmad@Chehre ~
$ history
    1  pwd
    2  cd e:pwd
    3  cd e:pwd
    4  cd e:
    5  pwd
    6  ls
    7  exit
    8  pwd
    9  ls
   10  ps
   11  history

حالا اگر بخواهیم دستور شماره 5 دوباره اجرا بشه، خیلی راحت میتونیم از دستور زیر استفاده کنیم:
$ !5
یا برای اجرای دستور قبلی از دستور زیراستفاده میکنیم
$ !! 

این دو دستور نمونه هایی بودن از کاربردهای کاراکتر "!" در bash. خوب این امکانات رو  history expansion مربوط به bash برای ما به ارمغان میاره  و برای فعال کردن اون میتونید از از دستورات زیر استفاده کنید:
$ set -H
$ set -o histexpand

البته histexpand به صورت پیشفرض فعال هست و در راهنمای bash اینطور گفته شده:

-H  Enable ! style history substitution. This option is on
    by default when the shell is interactive.

برای غیر فعال کردن هم میتونید از دستورات زیر استفاده کنید:
$ set +H
$ set +o histexpand

در آخر برای اینکه تست کنیم که ببینیم حالا میتونیم از کاراکتر "!" استفاده کنیم، از دستور زیر استفاده می کنیم:

echo "hello!"

و در آخر باید بگم که خود من روش اول رو میپسندم چون نمیخوام امکانات history expansion رو از دست بدم.

جستجو