Gnu Tips

وبلاگ شخصی وحید معانی

منبع فارسی!!

​چند روز پیش یکی از دوستان که توی گوگل دنبال منبع فارسی برای یک موضوع تخصصی بود شاکی بود از اینکه چرا منبع فارسی نداریم یا اگر داریم خیلی کم هست و معمولاً در دو سه صفحه‌ی گوگل کپی پیست شدن! همونطوری که اونموقع گفتم، جواب خیلی ساده هست: چون مطلب تخصصی به فارسی تولید نمی‌کنیم!

اینکه برای بدست آوردن به روز‌ترین مطالب مخصوصاً توی حوزه‌های تخصصی خیلی بهتر هست که زبان انگلیسی بلد باشی رو کسی انکار نمی‌کنه ولی اینکه بهتر هست برای بقیه‌ای که به هر دلیلی قادر به اینکار نیستن مطلب به زبان فارسی وجود داشته باشه خیلی خوبه. برای تولید مطلب لازم نیست کار خاصی انجام بشه کافی هست همون چیزی که از موضوع فهمیدیم و توی ذهن برامون ایجاد شده رو بنویسیم. لازم نیست حتماً این مطلب ۱۰۰٪ درست باشه یا همه‌ی قوانین نگارشی توش رعایت شده باشه. لازم نیست حتماً برای اینکار یه سایت راه بندازیم، یه وبلاگ کوچیک حتی توی سیستم‌های ارائه وبلاگ رایگان هم کافیه. می‌شه با همکاری بقیه دوستان یه وبلاگ اشتراکی داشت. یا از سیستم‌های میکروبلاگینگ موجود استفاده کرد. مهم این هست که این مطلب تولید و در اختیار بقیه قرار بگیره. وقت زیادی هم لازم نداره، چه بسا حتی یه مطلب ناقص و نیمه کاره، می‌تونه کمک‌کننده یا چراغ راه یه نفر دیگه باشه یا یه روزی دوباره برای خودمون مفید باشه.

از همین امروز شروع کنیم، ایجاد یک سیستم و نوشتن مطالبی که هر روز/از گاهی یاد می‌گیریم رو در سال ۲۰۱۷ برای خودمون یه هدف قرار بدیم. مطمئنن اگر خوشحالمون نکنه پشیمونی هم به دنبال نخواهد داشت.

اتصال به ماشین‌مجازی از طریق console (در virsh)

post link QrCode

post link QrCode

امروز می‌خوام در مورد libvirt صحبت کنم. اگر با مباحث مجازی‌سازی آشنا باشید به احتمال خیلی خیلی زیاد می‌دونید که libvirt چی هست ولی محض یادآوری و اطلاع دوستانی که چیزی ازش نمی‌دونن عرض کنم که libvirt به گفته‌ی خود سایتش عبارت است از:

 

Libvirt is collection of software that provides a convenient way to manage virtual machines and other virtualization functionality, such as storage and network interface management. These software pieces include an API library, a daemon (libvirtd), and a command line utility (virsh).

An primary goal of libvirt is to provide a single way to manage multiple different virtualization providers/hypervisors. For example, the command ‘virsh list –all’ can be used to list the existing virtual machines for any supported hypervisor (KVM, Xen, VMWare ESX, etc.) No need to learn the hypervisor specific tools!

به عبارت ساده‌تر (البته متن و زبان خود سایت خیلی ساده و گویا هست) libvirt مجموعه‌ای از برنامه‌های مناسبی است برای مدیریت ماشین‌ها و بقیه‌ی منابع مجازی مانند منابع ذخیره‌سازی (strage) و کارت‌های شبکه.
از جمله خوبی‌هایی که استفاده از libvirt داره این هست که چندین hypervisor و provider رو پشتیبانی می‌کنه و دیگه لازم نیست برای استفاده از هر کدوم از اونها دستورات مختص به خودشون رو یادبگیریم. برای مثال می‌شه با استفاده از دستور زیر

همه‌ی ماشین‌های مجازی موجود رو لیست کرد. اگر استفاده از خط فرمان رو نمی‌پسندید می‌تونید رابط گرافیکی virt-manager رو نصب و استفاده کنید.
در کل مزیت‌های بسیاری داره و خوندن بقیه‌ی موارد لینک بالا رو توصیه می‌کنم.
از بحث چیستی libvirt که بگذریم، امروز می‌خوام در مورد استفاده از قابلیت console دستور virsh صحبت کنم. console این قابلیت رو به ما می‌ده که بتونیم به serial console ماشین مهمان (که البته منظور مجازی هست) متصل بشیم (از طریق خط فرمان). امّا برای این کار باید تنظیماتی بر روی ماشین مجازی انجام بدیم تا بتونه این اتصال رو برقرار کنه.
کار‌هایی که باید انجام بدیم ۲تا هستن (هر دوی این کارها داخل ماشین‌مجازی انجام می‌گیرن یعنی باید یه روش دیگه‌ای باشه و بر حسب شرایط بتونید پیدا کنید که بتونید داخل ماشین لاگین کنید):
اوّل اینکه باید سیستم‌عامل ماشین‌مجازی رو تنظیم کنیم که خروجی رو بر روی سریال پورت مجازی (که اسم serial port در لینوکس ttyS0 و در ویندوز COM1 هست) بفرسته. برای اینکار، خط مربوط به کرنل رو در فایل ‪/boot/grub/grub.cfg‬ ویرایش کرده و متن زیر رو به انتهای اون اضافه کنیم.

 نکته:
۱. قبل از ویرایش فایل یک کپی از اون به عنوان پشتیبان (محض استفاده در مواردی که ویرایش اون منجر به ایجاد مشکل می‌شه) تهیه کنید.
۲. این فایل سطح دسترسی نوشتن نداره و قبل از هر چیز این رو رفع کنید.
۳. یادتون باشه بعد از انجام تغییرات دسترسی نوشتن بر روی فایل رو بگیرید.

ماشین رو ریبوت کرده و دستور virsh console رو اجرا می‌کنیم در این حالت باید بتونیم خروجی کنسول ماشین‌مجازی رو ببینم (همون خط‌هایی که سیستم‌عامل موقع بوت شدن روی صفحه می‌نویسه.) امّا در نهایت پس از اتمام مراحل بوت چیزی عاید ما نمی‌شه در حالی که باید با صفحه‌ی ورود به ماشین مواجه می‌شدیم.
ایجاد این مسأله طبیعی هست، چون گفتم دوتا کار باید انجام بدیم ولی ما فقط اوّلی رو به اتمام رسوندیم.
کار دوّم این هست که باید خود سریال کنسول رو بر روی ماشین‌مجازی کانفیگ کنیم. برای این کار یک فایل به اسم ttyS0.conf در مسیر ‪/etc/init‬ می‌سازیم و خطوط زیر رو داخلش می‌نویسیم:

سپس دستور زیر رو برای شروع به کار ttyS0 اجرا می‌کنیم:

یا ماشین رو ریبوت می‌کنیم.
در این مرحله پس از اینکه دستور console رو داخل virsh به همراه اسم ماشین‌مجازی مورد نظر اجرا کردیم پس از بوت شدن ماشین شاهد خط فرمان برای نام‌کاربری و رمز عبور خواهیم بود که نشون‌دهنده‌ی اون هست که ماشین در حال آماده به کار است:

منابع:

  • https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Administration_Guide/sect-Virtualization-Troubleshooting_-Troubleshooting_with_serial_consoles.html
  • https://help.ubuntu.com/community/KVM/Access

 

ایجاد فایل swap

سلام

خیلی وقتا پیش میاد که لازم داریم پارتیشن swap اضافی به سیستم اضافه کنیم.این کار دلایل زیادی می‌تونه داشته باشه از جمله:

  • رم سیستم کم باشه و swap موجود کفاف نده.
  • بنا به دلایلی موقع نصب و راه‌اندازی سیستم پارتیشن swap ایجاد نکرده باشیم.
  • و …

خب، امّا لازم نیست دوباره پارتیشن‌بندی سیستم رو به هم بریزیم تا بتونیم پارتیشن swap ایجاد کنیم. می‌تونیم یک فایل با قالب swap ایجاد کرده و به سیستم بفهمونیم که ازش به عنوان swap استفاده کنه. برای این کار اوّل از همه یک فایل با قالب swap می‌سازیم:

این دستور یک فایل به اسم swapfile در مسیر ریشه (/) با حجم ۴گیگابایت ایجاد می‌کنه.

حالا لازم هست اون رو به فرمت swap قالب‌بندی کنیم:

در نهایت با استفاده از دستور swapon به سیستم می‌فهمونیم که از این فایل به عنوان swap استفاده کنه:

امّا طول عمر این swap تا ریبوت بعدی خواهد بود و لازم هست که بعد از هر بار بالا آمدن سیستم دوباره دستور swapon رو اجرا کنیم. ولی خب حتماً می‌دونید که فایلی در مسیر ‪/etc‬ داریم به اسم fstab که کارش نگهداری اطلاعات فایل‌سیستم‌هاست تا سیستم در هنگام بالا آمدن و شروع به کار کردن بتونه اونها رو مونت کنه. پس کافیه این فایل رو هم مانند بقیه‌ی پارتیشن‌ها به این فایل اضافه کنیم:

 

ایجاد یک مخزن محلی برای CentOS

postاز جمله مزیت‌های سیستم‌های گنو/لینوکس این هست که برای نصب برنامه‌ای، دیگه لازم نیست بریم توی اینترنت دنبال فایل نصبش بگردیم، کافیه از توی همون سیستم مخازنی راه‌دوری معرفی شده برای این منظور رو بگردیم. امّا گاهی بنا به دلایلی لازم هست که کار جستجو یا نصب از یک مخزن محلی مانند یک حلقه‌ی DVD یا یک فایل iso انجام بگیره. برای این کار باید این مخزن رو خودمون بسازیم. برای ساخت مخزن ابتدا لازم داریم که فایل iso رو مونت کنیم یا حلقه‌ی CD/DVD رو داخل رام قرار داده سپس مونتش کنیم. برای این کارها به ترتیب دستورات زیر به کار می‌رن:

حالا در مسیر ‪/etc/yum.repos.d‬ فایلی (مثلاً) به اسم local.repo می‌سازیم که شامل محتویات زیر باشه:

به تنها چیزی که باید دقت کنیم این هست که مقدار ‪//path/to/mount/point‬ باید دقیقاً با محلی که CD/DVD یا ISO رو توش مونت کردیم یکی باشه!

حالا کافی هست هر موقع نیاز به استفاده از این مخزن داریم با استفاده از آپشن‌های disablerepo و enablerepo بقیه‌ی مخازن رو غیرفعال و مخزن محلی رو فعال کرده و دستور مورد نظر رو اجرا کنیم. برای مثال دستورات زیر به ترتیب برای جستجو و نصب بسته‌ای به اسم pkgname داخل مخزن محلی که ساختیم مورد استفاده قرار می‌گیرند: