نحوه نصب لینوکس Arch در کنار ویندوز (Dual boot)

توزیع Arch Linux چی هست؟سیستم عامل Arch Linux یک توسعه مستقل بر اساس توزیع x86-64 GNU/Linux میباشد که سعی میکند بستر لازم برای نسخه های پایدار بیشتر نرم‌افزار ها را فراهم کند.چرا نصب Arch ترسناکه؟توی دنیای امروزی لینوکس، یکم اسم Arch برای افراد تازه کار بد دررفته چون همیشه این ترس توشون بوده که نصبش خیلی سخته و اذیت کننده هست. خب اینکه نصبش کمی با بقیه متفاوت تره درسته چون خود Arch (نه سیستم عامل های مشتق شده از توزیع Arch مثل Manjaro , ArcoLinux و ...) نصب گرافیکی نداره و تمام نصبش و کانفیگ اولیه اش توی یه ترمینال انجام میشه که کامند هاش رو باید خودتون بزنید.صفحه ابتدایی بعد بوت شدن installerهمین موضوع خیلی ها رو از آرچ زده میکنه. من بعد تست بعضی از سیستم عامل های مبتنی بر Debian و Arch، به چند دلیل از خود Arch بیشتر از همه خوشم اومد.یکی اینکه بعد از نصب سیستم، شما تقریبا هیچ چیزی جز یه Bash و کرنل لینوکس ندارید!!! حالا این موضوع هم خوبه هم بد. برای کسایی که تازه با لینوکس دارند آشنا میشوند یا تسلط مناسبی ندارند، این موضوع براشون اذیت کننده میشه. چون تقریبا همه چیز از جمله پکیج کارت گرافیک، پکیج مدیریت شبکه برای اتصال به اینترنت، دسکتاپ منیجر و ... رو باید خودتون نصب کنید. از طرفی این موضوع برای کسانی که حداقل تسلط کافی به کارکرد سیتسم عامل های تحت کرنل لینوکس دارند، یک مزیت محسوب میشود؛ زیرا میتوانند دقیقا پکیج هایی را که لازم دارند را نصب کنند و نه هیچ چیز اضافه تر.یکی دیگه از دلایل هم اینه که پکیج منیجر و community فوق‌العاده‌ای داره. پکیج های اصلی که خود Arch داره که معمولا شامل اون هایی میشه که نسخه پیادار (stable)و از طرف سازنده هستند با pacman (که مخفف شده package manager هست) نصب و کانفیگ میشن. خیلی از وقت ها پکیج هایی که نصب میشن با یه سری پکیج های دیگه تداخل و conflict دارند؛ خود pacman این ها رو شناسایی میکنه و بهتون اطلاع میده که این پکیج با این دسته از پکیج ها تداخل داره اگه میخوای نصب رو ادامه بدی باید اونا رو پاک کنم. اوکیی؟ (یعنی اینقدر با شعور). حالا پستمون میخوره به یه سری دیگه از نرم‌افزار هایی که میخوایم ولی توی مخزن های Arch نیست. جای اینکه دو دستی بزنیم توی سرمون، دوستان community لطف کردن و برای ما، برنامه مدیرت پکیج هایی رو نوشتن که از مخازن AUR (که مخزن غیر رسمی Arch و کاربر محور هست و مخفف شده Arch User Repository) اون نرم‌افزار هایی و پکیج هایی رو که میخواید براتون میگیره و نصب میکنه. ولی خب خیلی وقت ها این نرم‌افزار ها سورس کد هاشون هستن و نه فایل های باینری؛ یعنی بعد از کلون از AUR باید کامپایل و بیلد بشن و بعدش توسط pacman به صورت سیستمی نصب بشن.علاوه بر اون Arch یه wiki فوق‌العاده کاملی داره که بعیده آدم نتونه جواب سوالش رو اونجا پیدا کنه ولی یکم بزرگه و ریز مطالب رو گفته؛ توی نگاه اول ممکنه گیج کننده باشه ولی حتما پیشنهاد میکنم ازش خوب استفاده کنید. سلاح خفنیه!خب دیگه داستان بافی بسه چطور Arch رو نصب کنم؟خب برای نصب Arch مثل همه لینوکس های دیگه لازمه یه فلش (یا اگه قدیمی پسند هستین یه دیسک) رو با نسخه ای که گرفتید Bootable کنید. نسخه Arch iso رو میتونید از این لینک دانلود کنید. بعدش با برنامه Rufus اون رو روی فلش خودتون بریزید.بعد از این کار، باید BIOS خودتون رو تنظیم کنید که اول از فلش بوت کنه که بعد اینکار صفحه زیر براتون میاد:صفحه بوت برای نصب Archشما همین گزینه اول رو انتحاب کنید و منتظر بمونید که بارگزاری منابعش و شروع سرویس هاش تموم بشه و پروسه بوت تموم بشه تا تصویر زیر رو ببینید:اولین صفحه بعد از بوت شدنخب تبریک میگم اولین قدم رو برداشتید. بریم که داشته باشیم قدم های بعدی رو.اتصال به اینترنت:خب یکی از حیاتی ترین قدم ها اتصال به اینترنت هست. برای نصب هم میشه به کابل Ethernet وصل بود و هم میشه به وای فای وصل شد. چون این آموزش رو دارم روی VirtualMachine میگیرم، خودش تنظیم شده که انگار به Ethernet وصله ولی اگه بخواید به وایفای وصل بشید این کاررو بکنید:توی نسخه های قدمی میشد از wifi-menu استفاده کرد ولی الان به جاش باید از iwctl استفاده کنیم. پس:iwctlبعد از اینکار وارد محیط interactive میشید که دستورات خودش رو داره برای اینکه لیست کارت شبکه های سیستمون رو ببینید دستور زیر رو اجرا کنید:device listبا این کار شما لیستی رو میبینید که نشون دهنده کارت‌های شبکه شما هست. به احتمال زیاد اینترفیس شبکه وایرلس شما به اسم wlan0 شناخته میشه. توی دستورات بعدی به جای wlan0 حتما اسم اینترفیس خودتون استفاده کنید.خب الان لازمه که به یه مودم وصل بشیم برای دیدن لیست مودم های دور و اطراف دستور زیر رو بزنید:station <device> listو بعدش اسم مودم رو بردارید توی این آموزش اسم مودم Connect_to_me هست. پس به جای این، اسم مودم خودتون رو بزارید. حالا باید وصل بشیم:station wlan0 connect Connect_to_meبعد از این کار سیستم از شما یه passphrase میخواد که پسورد مودم و اتصال به وای فای هست. اون رو بزنید و بعدش اینتر. اگه همچی اوکی باشه و به اررور نخورده باشید، باید وصل شده باشید. دستور زیر رو بزنید تا دوباره وارد Bash بشیم. (البته لازمه بگم توی نسخه های جدید به جای Bash از ZSH استفاده شده).quitخب حالا برای اینکه تست کنیم به نت وصل هستیم یا نه دستور ping رو میزنیم و از گوگل پینگ میگیرم:ping google.comباید یه خروجی شبیه این داشته باشید. اگه نبود نت وای فای رو چک کنید.نمونه پینگ بعد اتصال به نتخب حالا که مطمین شدم به اینترنت وصلیم و همه چیز درسته، باید زمان سیستم رو هم با زمان جهانی یکی کنیم که بعدا موقع نصب توی کلید های GPG به مشکل نخوریم. پس دستور زیر رو میزنیم:timedatectl set-ntp trueکانفیگ پارتیشن های مورد نیازمن همیشه دوست دارم که دو تا پارتیشن root و home از هم جدا باشن که هم بشه راحت بک آپ گرفت هم اینکه اگه Arch زندگیتون رو خراب کرد، دیتای توی home دست نخورده باقی بمونه و با یه mount بهش دسترسی داشته باشید؛ یا خدا چه میدونه شاید خواستی Manjaro نصب کنی بعد این. ولی اگه شما نمیخواید کارایی که برای home انجام میدم رو شما فاکتور بگیر.به هر حال دستور زیر رو میزنیم تا پارتیشن هامون رو چک کنیم و درست کنیمcfdiskمحیط cfdiskخب همونطور که میبینید بعد از اینکه ویندوز نصب بشه اگه پارتیشن اضافه ای نداشته باشیم، خودش 4 تا پارتیشن میسازه که هرکدوم رو توضیح میدم چیه. پارتیشن اول که جنسش EFI System هست، پارتیشنی هست که آدرس و نحوه بوت شدن ویندوز رو مشخص میکنه یعنی ویندوز دقیقا از اینجا بوت میشه. پارتیشن بعدی یه پارتیشن reserved هست که ویندوز بعد از اینکه بره توی مود ریکاوری، یه همچون درایوی رو بهت نشون میده. پارتیشن بعدی، داریو C هست جایی که توش ویندوز نصب شده و اخرین پارتیشن، جایی هست که ریکاوری ویندوز قرار داره یه جورایی شبیه یه mini OS هست.توی قسمتی که خالی داریم، باید ۳ تا پارتیشن بسازیم. یکی برای بوت شدن از جنس EFI system و دوتا دیگه که برای home و root هستن که جنسشون هم linux file system هست.خب برای اینکار روی free space میریم، بعدش با کلید چپ و راست روی New میریم و اینتر میزنیم. الان سایز از ما میخواد ما 512M رو میزنیم یعنی 512 مگ که از این برای بوت بین ویندوز و Arch استفاده میکنیم. بعد از این کار میریم روی Type و نوعش رو EFI System میزاریم.پارتیشن بعدی رو یه 20 گیگ برای root و یه 20 گیگ برای home میزنم فقط دقت داشته باشید برای root از نوع Linux root x86-64 و برای home از Linux home استفاده کنید (اگه پارتیشن home نمیزارید، صرفا Linux filesystem رو انتحاب کنید)آخر سر باید یه همچین چیزی داشته باشیدتصویر نهایی از پارتیشن هادر نهایت write رو میزنیم تا اطلاعات و تغییراتمون ذخیره بشن. بعدش ازمون یه سوال میپرسه که مطمینیم؟ ما هم میگیم بلههههههههه. و درنهایت خارج میشیم.خب این کاری که کردیم صرفا تعریف جدولی بود الان باید سیستماتیک هم پارتیشن هارو بسازیم آدرس پاریتیشن ها رو که یادتون هست؟ اگه نیست نگران نباشید دستور زیر رو بزنید تا ببینید چه پارتیشن هایی داریدfdisk -lدیدن استراکچر پارتیشن هاخب من با توجه به آدرس هایی که توی تصویر میبینید، شروع میکنم تنظیم کردنشون. شما آدرس ها رو با توجه به سیستم خودتون وارد کنید و به نوعی که براش تعیین کردید توجه کنید.(اگه نمیدونید بگم که # توی Bash کامنته و شما نیازی به وارد کردن توضیح های من ندارید)mkfs.fat -F32 /dev/sda5 # format /dev/sda5 for boot partition mkfs.ext4 /dev/sda6 # format /dev/sda6 for root mkfs.ext4 /dev/sda7 # format /dev/sda7 for homeدسترسی به پارتیشن های ساخته شدهخب الان که پارتیشن ها رو تعریف کردیم و کارامون رو کردیم، لازمه بهشون دسترسی داشته باشیم برای این کار اونا رو توی mnt/ بارگزاری میکنیم البته حواستون باشه اول باید root رو بارگزاری کنید با این دستور:mount /dev/sda6 /mntخب الان پارتیشن بارگزاری شده و لازمه که فولدر های home و boot رو بسازیم و پارتیشن های مخصوص اون ها رو هم بارگزاری کنیم:mkdir /mnt/home mkdir /mnt/boot mount /dev/sda7 /mnt/home mount /dev/sda5 /mnt/bootخب الان که همه چی سر جای خودشه یه بارم چک میکنیم که همه چی درست mount شده باشهlsblkاستفاده از lsblk برای چک کردن درست mount شدنخب الان که همه چی درسته باید بریم و نصب Arch رو انجام بدیم. این نصب با دستور زیر انجام میشه:pacstrap /mnt base base-devel linux linux-firmware vim nanoخب دستور بالا، base رو که شامل سیستم اولیه هست، base-devel که شامل یک سری ابزار هست و لینوکس و کرنلش رو داخل mnt/ که میدونیم پارتیشنمون هست، نصب میکنیم. علاوه بر اون ویرایشگر های vim و nano هم نصب میکنیم.فک کنم الان وقتشه برید یه قهوه یا چایی بزنید به بدن بیاید.خب الان که این کارش تموم شد سیستم عامل Arch باید بدونه که ساختار پارتیشن ها به چه صورت هست برای این کار دستور زیر رو وارد میکنیمgenfstab -U /mnt >> /mnt/etc/fstabبا اینکار fstab (که مخفف شده file system table هست) ساخته و داخل فولدر etc/fstab/ قرار میدهیم.الان واقعن نصب Arch تمومه و شما اگه سیستم رو ریبوت کنید (که این کارو الان نکنید وگرنه بازم باید بیاید این کارای پایین رو بکنید) سیستم Arch رو دارید.مگه نمیگی نصب شد؟ بعدش چی پس؟خب الان ما باید خودمون را جای سیستم عاملی که بوت شده جا بزنیم برای اینکار از chroot استفاده میکنیم:arch-chroot /mntو بووووم الان انگار خود سیستم نصب شده ایم.خب این کارو کردیم و الان یه سری بیسیک های لازم رو انجام میدیم. مثلا تنظیم میکنیم که ساعتمون به کجا باید باشه و ساعت سخت‌افزاری سیستم رو باهاش ست میکنیمln -sf /usr/share/zoneinfo/Asia/Tehran /etc/localtime hwclock --systohcخب الان لازمه پایه زبان سیستممون رو هم اوکی کنیم. برای این کار دستور زیر رو میزنیدnano /etc/locale.genبعد از این کار ویرایشگر nano (یا اگه شما حرفه ای هستی و میگی نان و پنییییر و از vim استفاده میکنی) باز میشه. الان از بین این همه کامنت (ابالفضل) باید بگردید en_US.UTF-8 رو پیدا کنید یا اگه دوست دارید زبان دیگه رو پیدا کنید و # اولش رو برداریدتنظیم زبان سیستمو بعدش فایل رو سیو کنید و ازش بیاید بیروون. اگه داخل nano هستید این کار رو با Ctrl+X انجام بدید یا اگه داخل vim هستید اول Esc رو فشار بدید و بعدش بزنید wq: (اون : لازمه اولش)locale-genخب الان لازمه که فایل etc/locale.conf/ رو باز کنیمnano /etc/locale.confداخلش عبارت زیر رو بنویسیم. (اگر از زبان دیگه ای استفاده کردید دقیقا مشابه عبارتی که کامنتش رو برداشتید بنویسید)LANG=en_US.UTF-8تنظیم زبانبعدش مثل قبل که گفتم از محیط ویرایشگر خارج بشید.تحمل کن یکم دیگه بیشتر نموندهخب الان باید اسم host خودمون رو تعریف کنیم و به سیستم اضافه اش بکنیم.vim /etc/hostnameحالا اسم host ای که برای سیستم خودتون (یا بهتره بگیم ماشین خودتون) بزارید رو انتخاب کنید مثلا من اینجا ashkan-sys میزارم:تنظیم hostnameبعد از این کار باید خودمون رو به عنوان هاست به سیستم معرفی کنیم پس:vim /etc/hostsو بعدش اطلاعات زیر رو وارد کنید (به جای فاصله هایی که من میزارم شما یه tab بزارید و بازم حواستون باشه به جای ashkan-sys اسم هاستی که نوشتید رو بزنید)127.0.0.1 localhost ::1 localhost 127.0.1.1 ashkan-sys.localdomain ashkan-sysبریم تو فاز امنیتخب الان لازمه برای root یه پسورد بزاریمpasswdبعدش ۲ بار ازتون پسورد رو میخواد و عوضش میکنه (حواستون باشه موقع تایپ چیزی نوشته نمیشه ولی داره کاراکتر ها رو میگیره)تعیین پسورد rootخب الان بریم یوزر خودمون رو هم بسازیم (به جای ashkan اسم یوزری که میخواید رو بزارید)useradd -g users -G power,storage,wheel -m ashkanحواستون باشه که بین , ها نباید فاصله باشه (اون اطلاعات بالا رو ول کنید یه چیزی یادم رفته بود help زدم)اضافه کردن یوزرحالا مثل ادمین برای یوزر تازه اضافه شده هم یه پسورد بزاریدpasswd ashkanجونم دراومد هنوز ادامه داره؟دیگه آخرشه و رسیدیم به یه تیکه حساس. نصب bootloaderخب من از grub استفاده میکنیم و چون میخوایم ویندوز رو هم تشخیص بدیم دو پکیج efibootmgr و os-prober رو نصب میکنیم:pacman -S grub efibootmgr os-proberبعدش تایید میکنید و میزارید نصبش تموم بشه. اگه به ارور زیر مثل من برخودید باید دستور زیر رو بزنیداررور آپدیت نبودن ایندکس های مخازن Archpacman -Sy*(این کار فعلا توصیه نمیشه ولی اگه دوست داشتید) اگه دیدید سرعتتون کنده، با استفاده از vim یا nano فایل etc/pacman.d/mirrorlist/ رو باز کنید و دونه دونه از اول کامنت کنید server ها رو تا به یه جواب خوب برسید. توی پیشرفته تر این کار رو خودکار با یه پکیج انجام میدیم ولی الان درگیرش نمیشیم. معمولا چهارمی سرعت خوبی داره. بعدش دوباره دستور قبل رو بزنیداپدیت سرور هاالان دوباره دستور نصب grub و efibootmgr و os-prober رو بزنید.اگه همه چی اوکی باشه با اجرای os-prober هیچ ارروری نباید نشون داده بشه:اگه مثل عکس بالا نبود و خروجی هم نشون نداد اوکیه و داره درست کار میکنهخب بریم نصب grubgrub-install --target=x86_64-efi --efi-directory=/boot/ --bootloader-id=GRUBو باید پیغام اوکی بگیریمالان لازم میشه که پارتیشن بوت ویندوز رو بارگزاری کنیم. برای این اول باید دوباره یادمون بیاد کدوم قسمت بود:fdisk -lخب پارتیشن ۱ هست پس:mount /dev/sda1 /mntو در نهایت فایل کانفیگ grub رو میسازیم:grub-mkconfig -o /boot/grub/grub.cfgتموم شد؟میدونم خسته شدید ولی خبر خوب اینه که تموم شد اگه exit بزنید و خارج بشید و reboot کنید، بوت لودر grub رو میبینید.البته هنوز شبکه و نت ندارید ولی اگه بخواید توی همون محیط قبلی (زمانی که پارتیشن ها رو mount کردیم و arch-chroot کردیم) میتونید یه دسکتاپ (من ترجیحم KDE هست) رو نصب کنید که اون خودش پکیج مدیریت شبکه رو داره. برای نصب:sudo pacman -S plasma kde-applicationsاین یه فرایند طولانی هست پس برید یه فیلمی چیزی ببینید یه قهوه بزنید بدن تا کارش تموم شه. وقتی تموم شد دو دستور زیر رو بزنید:sudo systemctl enable sddm sudo systemctl enable NetworkManagerو تماماتمام حجتمیدونم یکم طولانی شد ولی واقعا Arch ارزشش رو داره پیشنهاد میکنم یه بار روی یه سیستم فیزیکی که اگه خراب کردید یا اشتباه کردید و اطلاعاتتون پرید نگران نباشید این فرایند نصب رو طی کنید اولش ممکنه یکم سخت به نظر بیاد ولی واقعا پروسه لذت بخشیه که آدم یک سیستم رو با دستورات نصب بکنه.