سیستمهای نامطمئن قرعه کشی
- ۰ نظر
- ۱۱ مرداد ۹۷ ، ۰۱:۳۱
آخرین تجربهی من در رابطه با استفاده از اینترنت گوشی برمیگرده به زمانی که Nokia X-3 داشتم و بخاطر نبودن اینترنت پرسرعت توی روستامون از طریق این گوشی فلکزده و کابلش و kppp با سختی و مرارتهای خاصی به اینترنت وصل میشدم اونم Edge :)
با پیشفرضهای سابقام فکر میکردم با گوشی اندرویدی هم بخوام به اینترنت وصل بشم همونقدر مشکلات داره ولی چیزی که لازم بود انجام بدم تنها این بود که بعد از وصل کردن موبایل به کامپیوتر توی تنظیمات «نقطه اتصال تلفن همراه و اتصال اینترنت» قسمت اتصال USB و نقطهی اتصال تلفن همراه رو فعال میکردم و داده تلفن همراه رو روشن میذاشتم و به هر نحوی روتر رو از کامپیوتر قطع میکردم.
بعد از مدتها به قصد اینکه فاصلهی آپ کردنم به یه سال نرسه این پُست رو مینویسم. علت این دیرکرد هم چیزی نیست جز سربازی که جا برای هیچ گونه برنامهریزی و مطالعهای نذاشته هر چند دوران مطالعه کردن هم اینجا رو آشِ دهنسوزی نکرده بودم :D
چن سال پیش که کار وبلاگهای لینوکسی خیلی اوکی شده بود و افراد زیادی چه مثبت چه منفی در این فضا فعالیت میکردن تا به امروز یک سری کارهای موازی صورت میگرفته ، یک سری کارهایی که از نظر من بیهوده بوده اونم در فضایی مثل وبلاگ.
عموما چیزی که از وبلاگ انتظار میره فعالیتی شخصیه که ممکنه فرد در کنارش تجربهی ارزشمندی کسب کنه. یک طور حرف زدن یا کنفرانس دادن با کیبورده.
از این رو ، اینکه وبلاگی بخواد تنها به ترجمهی خالص مسائل پیش پا افتاده بپردازه اصلا جالب بنظر نمیاد. ترجمه نصب فلان نرمافزار در فلان توزیع و تکرار همون روند با یک نرمافزار دیگه جز به این دلیل که وبلاگ آپدیت باشه سود دیگهای نداره.
من بشخصه سعی خواهم کرد که تمام چیزهایی که منو با سیستم درگیر کرده و باهاش سر و کله زدم رو یک گوشه یادداشت کنم که دوباره اگه خواستم همون کار رو انجام بدم نیاز نباشه که باز هم برم دنبال راه حل مشکلم بگردم. شما هم همین کار رو بکنید. هر چند این تجربیات دهن پُر کن و غیرمعمول نباشه
طبق پیشزمینههایی که در مورد dd داشتم تلاش کردم ایزوی ویندوز رو روی فلش بریزم تا دیگران ازش استفاده کنن! ولی ویندوزه دیگه، کاریش نمیشه کرد.
چیزای مختلفی رو آزمایش کردم ولی ms-sys از همهشون سادهتر و رونتر بود.
برای نصباش توی توزیع خودتون اقدام کنید. حالا ما اینجوری نصبش میکنیم
#emerge ms-sysروی سیستمون این بستهها رو باید داشته باشید: ntfs-3g,fdisk. و همینطور نیاز به یه حافظه جانبی مثل فلشمموری هم دارید، چون خالی خالی نمیشه که!
#ms-sys -7 /dev/sdc
#mount -o loop win7.iso /mnt/iso
#mount /dev/sdc1 /mnt/usb
#cp -r /mnt/iso/* /mnt/usb
از اونجایی که توی لینوکس آپدیت کردن خودش عمل لذت بخشیه و یکی از چیزهای لذت بخش برای آپدیت کردن کرنلِ میخواستم تجربهی خودم رو در این زمینه بنویسم تا شاید بکارتون بیاد.
خب بصورت عادی بعد از اینکه شما با دستور
#emerge --sync
شاخه portage رو بروز میکنید و با دستوراتی مثل
#emerge -uDN @world
تمام بستههایی که امکان آپدیت شدن دارند رو آپدیت میکند یکی از چیزهایی که ممکنه آپدیت بشه سورس کرنل یا همون gentoo-sources هست . برای اینکه ببینید که آیا چند ورژن از سورس کرنل رو روی سیستمتون دارید میتونید با دستور
#eselect kernel list
output: برای من
Available kernel symlink targets:
[1] linux-4.0.5-gentoo *
لیستی از کرنل سورسهای موجود رو که در شاخه /usr/src قرار دارند ببینید. و طبعا بعد از انجام این دستور شما سورس کرنلی رو که به صورت پیشفرض برای کامپایل درایورهای سختافزاری مورد استفاده قرار میگیره رو بصورت یک علامت * در روبرو میبینید. این سورس کرنل همون سورس کرنلی هست که بصورت شورتکات توی /usr/src به دایرکتوری linux لینک شده.
بعد از اضافه شدن سورس کرنل جدید بعد از اجرای دستور آپدیت ، شما نیاز داری که لینک سورس دیفالت رو تغییر بدی. برای اینکار با استفاده از دستور
#eselect kernel set number
بجای number عددی که به عنوان شماره کرنل روبروی سورس قرار داده شده رو وارد میکنید و به این صورت مسیر پیشفرض /usr/src/linux به سورس کرنل جدید اشاره میکنه.
اگر مثل من حوصله سر و کلّه زدن زیاد و یا اطلاعات کافی ندارین با دستور
#genkernel all
شروع به کامپایل کرنل جدید بکنید و پس از گذشتن زمانی (بسته به cpu شما که چند هستهای باشه و غیره) این کار به پایان میرسه. و باید تنظیمات مربوط به LILO یا GRUB رو بر مبنای کرنل جدید آپدیت کنید.
که فک کنم برای LILO شما پس از ویراییش فایل /etc/lilo.conf با دستور
#lilo -v
بوت لودر رو تازه سازی میکنید
و در Grub2 هم کافیه که با دستور
#grub2-mkconfig -o /boot/grub/brub.cfg
تنظیمات گراب رو آپدیت کنید.
حالا مرحله بعدی اینه که ما درایورهای سختافزاری که پیشتر بصورت خودکار شناسایی نشده (برای مثال درایور کارت گرافیک کارت صدا و …) رو دوباره نصب کنیم که اگه نسخهی جدیدی براش نیومده باشه و همچنین توی مسیر /usr/portage/distfiles باشه نیاز به دانلود هم نیست و در مجموع زمان زیادی هم نمیبره :)
#emerge eclean-kernel
استفاده کرده و در نهایت توی ترمینال از خدمات نقدی و غیر نقدیاش استفاده ببرینپ ن: سعی کنید کرنلهای قدیمی رو بعد از اطمینان کامل از اینکه کرنل جدید بخوبی کار میکنه و مشکلی براتون درست نمیکنه پاک کنید تا مثل من به مشکل برنخورین :D
آدمِ به ظاهرِ دسکتاپ اهمیتدهندهای هستم. از KDE استفاده میکنم. و بعد از Gnome 3 ترجیح دادم به جای استفاده از تسک منیجر از گوشهی سمت چپ بالا! برای مشاهدهی پنجرهها استفاده کنم. و حال اینکه وقتی پنجرههای زیادی باز باشن سوئیچ کردن بینشون یک کمی سخت میشه و از اونجایی که ترمینال یک چیز پر استفاده است و پر سوئیچ کردنه! بهترین کار استفاده از یک شورتکات برای دسترسی سریعه. و اگه چیزی که این قابلیت رو به همراه میاره زیبا هم باشه که چه بهتر :D
برای همین منطور شما میتونین از Yakuake استفاده کنید و با نصب از طریق
#emerge yakuake
و اجرا کردنش از طریق کلید F12 بهش دسترسی سریع داشته باشین. برای اینکه مجبور نباشین هر بار بعد از اجرای مجدد ویندوز مجبور نباشین راهاندازی کنین yakuake رو میتونین از قسمت system setting>>startup & shutdown >>add program برنامهی yakuake رو ادد کنید تا بعد از بالا اومدن سیستم خودش اجرا بشه.
نمایی از آن مرحوم :
متاسفانه آدمی نیستم که از طریق راههای مرسوم و سرراست به دانشی که لازمه دست پیدا کنم. برای مثال همین عنوانی که در اینجا نوشتم. من از طریق استدلالهای استنتاجی در مورد اینکه فایلهای درون این شاخه چه کاری انجام میدن به نتایجی رسیدم که امیدوارم درست باشه! البته امیدورام نحوه بیان غیرحرفهای ما رو ببخشین
خب ، حالا این فایلها و دایرکتوریها چی هستند؟
1 - make.conf
ما بصورت عادی برای کامپایل یک بسته مثل ffmpeg بعد از مرحله کانفیگ کردن و چک کردن نیازمندیها توسط ./configure به کامپایلر میگیم که پردازنده ما دو هستهائیه و این کار رو با دستور make -j2 انجام میدیم. خب چون قراره در اینجا emerge تمام این کارها رو انجام بده ما یکبار برای همیشه ! این دستور رو توی این فایل ذخیره میکنیم . همچنین در USE موجود توی این فایل هم براس تعیین میکنیم که چه ترجیحاتی رو لحاظ قرار بده برای مثال ما که از qt و kde استفاده میکنیم توی USE با -gtk دستور میدیم که بسته رو بر اساس qt کامپایل کنه (اگه اشتباه نکنم)
خلاصه اینکه تنظیمات مربوط به کامپایلر ، نوع ویدیو کارت و از این دست توی این فایل قرار میگیره.
2 - package.mask
بذارین اینو با یه مثال توضیح بدم. خُب کارت گرافیک من GT220 ه. که اگه بخوام بصورت عادّی براش درایور مربوط به nvidia رو نصب کنم آخرین ورژن درایو کارت گرافیکی با دستور emerge nvidia-drivers نصب میشه در صورتیکه این درایور با کارت من سازگار نیست و رده کارتهای گرافیکی من درایورهای کمتر از nvidia-drivers-341.0.0 رو ساپورت میکنه پس توی این فایل به emerge میفهمونیم که در صورت آپدیت شدن نسخه درایور فقط در صورتیکه نسخه پایینتر از این نسخه آپدیت شده اونو برای من دانلود کن نسخههای
>=x11-drivers/nvidia-drivers-341.0.0
پس ما اینجا بستههایی رو مسک میکنیم تا در صورت لزوم تنها بستههایی که براشون قانون تعیین کردیم دانلود بشن. بستههای پیشین ، یا بستههایی بروزتر از یک ورژن.
3 - package.license
همونطور که از اسمش پیداست مربوط به لایسنس بعضی محصولات مثل adobe-flash هست و ما برای اینکه اونا رو نصب کنیم باید لایسنسهای اونا رو مدنظر قرار بدیم.
4- package.accept_keywords
در صورتیکه شما بخوای بستهی خاصی رو روی سیستم نصب کنید ، بستههایی که بصورت پایدار برای یک نسخه درنظر گرفته میشه بصورت پیش فرض انتخاب میشن. برای مثال یک نسخه خاص از کرنل (در حال حاضر 4.0.5) یا فایرفاکس (نسخه 31) براتون نصب میشه ولی توی شاخه portage ایبیلدهای مخصوص نسخههای اخیر هم وجود داره. برای اینکه بتونین این نسخهها رو نصب کنید به emerge دستور میدید که بجای نسخهی در نظر گرفته شده نسخهای که شما بهش گفتین رو نصب کنه.
(البته یه سری چیزها هم داره که من نمیفهمم که اگه شما بگین خوشحالمون میکنین :D )
5- دایرکتوری patches
در این شاخه و شاخه هایی که زیرش قرار دارند مثلا زیر شاخه www-client و زیر شاخهی firefox شما میتونین پچی که خودتون دوست دارین رو برای نسخهای از برنامه که قراره نصب بشه قرار بدین تا سورس به همراه اون پچ کامپایل بشه.
6- package.use اینو مطمئن نیستم چندان!!
توی این فایل بنا به اینکه توی فایل make.conf و در قسمت USE یک سری از فلگها باعث استفاده نشدن یک سری بسته ها میشد (چه روان توضیح دادم!!!) برای مثال با -gtk شما دستور به استفاده نشدن gtk دادید ولی برخی بستههایی که نصب خواهید کرد به این بسته نیاز خواهند داشت برای همین شما دستور میدین برای بستههای خاصّی در حین کامپایل بستههایی که توی USE اونها رو ممنوع کردین یا اینکه اصلا توی USE وجود نداره استفاده بشه.
پ ن: هدفم از نوشتن پست این بوده که یک توضیحی برای این شاخه داشته باشیم تا آدم سردرگم نشه و بدونه با دستوراتی که وارد میکنه چه کاری انجام میده، لذا اگه اشتباه یا کوتاهیای هست بگین درست کنیم :)
از اونجائی که برای چندمین بار تصمیم گرفتم php رو یاد بگیرم تصمیم به نصب apache و php گرفتم تا کار خودمو شروع کنم. و یه خورده ریزه کاری توی این راه انجام دادم که گفتم اینجا بنویسمش.
در ابتدا یوزفلگهایی که نیاز به اضافه کردن هست رو به make.conf درمسیر /etc/portage/ اضافه میکنیم.
فلگهای مهمی که همراه نصب php میتونیم به USE اضافه کنیم در زیر لیست شده
USE="... php cgi cli fpm apache2 cgid ..."
و همچنین خط زیر رو هم به make.conf اضافه میکنیم
PHP_INI_VERSION="production"
PHP_TARGETS="php5-4
و بستههای مورد نیازمون رو نصب میکنیم
#emerge dev-lang/php
#emerge www-server/apache
از اونجایی که بعضی یوزفلگهایی مثل ssl رو که نیاز ندیدیم اضافه کنیم اضافه نکردیم /etc/conf.d/apache2 رو ویرایش میکنیم و -D SSL -D SSL_DEFAULT_VHOST رو ازش حذف میکنیم و همزمان باهاش D PHP5 - رو اضافه میکنیم
APACHE2_OPTS="-D PHP5 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE"
و همچنین فایل httpd.conf رو در مسیر /etc/apache2 ویرایش میکنیم و برای اینکه روی لوکالهاست قراره تمرین کنیم ServerName localhost رو بهش اضافه میکنیم به شرطی که لوکال هاست رو به فایل /etc/hosts اضافه کرده باشیم.
و بعد سعی میکنیم با دستور زیر تست کنیم که آیا آپاچی کار میکنه یا نه اصلا!
#apache2ctl start
که میبینیم کار نمیکنه و با خوندن /var/log/apache2/error_log
Configuration Failed
[Mon Apr 27 18:42:08 2015] [alert] (EAI 2)Name or service not known: mod_unique_id: unable to find IPv4 address of "*****"
که یه ماژولی لود نمیشه و این ماژول توی /etc/apache2/httpd.conf قابل غیرفعال شدن هست و ما هم غیر فعالش میکنیم.
و بعد از اون هم با اجرای موفق apache و وارد کردن 127.0.0.1 توی مرورگر تمام شور و نشاطمون برای شروع کردن php فروکش میکنه و ما میریم تا هفتهها و شاید ماههای بعد که دوباره هوس php کار کردن به سرمون بزنه
پ ن: اگه قصد دارین که apache همراه با بالا اومدن سیستمتون شروع به کار کنه میتونین با استفاده از دستور زیر اونو فعال کنین
#rc-update add apache2 default