Ashkan Tofangfar
Ashkan Tofangfar
خواندن ۱۲ دقیقه·۴ سال پیش

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

توزیع Arch Linux چی هست؟

سیستم عامل Arch Linux یک توسعه مستقل بر اساس توزیع x86-64 GNU/Linux میباشد که سعی میکند بستر لازم برای نسخه های پایدار بیشتر نرم‌افزار ها را فراهم کند.


چرا نصب Arch ترسناکه؟

توی دنیای امروزی لینوکس، یکم اسم Arch برای افراد تازه کار بد دررفته چون همیشه این ترس توشون بوده که نصبش خیلی سخته و اذیت کننده هست. خب اینکه نصبش کمی با بقیه متفاوت تره درسته چون خود Arch (نه سیستم عامل های مشتق شده از توزیع Arch مثل Manjaro , ArcoLinux و ...) نصب گرافیکی نداره و تمام نصبش و کانفیگ اولیه اش توی یه ترمینال انجام میشه که کامند هاش رو باید خودتون بزنید.

صفحه ابتدایی بعد بوت شدن installer
صفحه ابتدایی بعد بوت شدن 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
صفحه بوت برای نصب 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
محیط 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 شدن
استفاده از 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
تنظیم 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
تعیین پسورد 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

بعدش تایید میکنید و میزارید نصبش تموم بشه. اگه به ارور زیر مثل من برخودید باید دستور زیر رو بزنید

اررور آپدیت نبودن ایندکس های مخازن Arch
اررور آپدیت نبودن ایندکس های مخازن Arch
pacman -Sy

*(این کار فعلا توصیه نمیشه ولی اگه دوست داشتید) اگه دیدید سرعتتون کنده، با استفاده از vim یا nano فایل etc/pacman.d/mirrorlist/ رو باز کنید و دونه دونه از اول کامنت کنید server ها رو تا به یه جواب خوب برسید. توی پیشرفته تر این کار رو خودکار با یه پکیج انجام میدیم ولی الان درگیرش نمیشیم. معمولا چهارمی سرعت خوبی داره. بعدش دوباره دستور قبل رو بزنید

اپدیت سرور ها
اپدیت سرور ها

الان دوباره دستور نصب grub و efibootmgr و os-prober رو بزنید.

اگه همه چی اوکی باشه با اجرای os-prober هیچ ارروری نباید نشون داده بشه:

اگه مثل عکس بالا نبود و خروجی هم نشون نداد اوکیه و داره درست کار میکنه

خب بریم نصب grub

grub-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 ارزشش رو داره پیشنهاد میکنم یه بار روی یه سیستم فیزیکی که اگه خراب کردید یا اشتباه کردید و اطلاعاتتون پرید نگران نباشید این فرایند نصب رو طی کنید اولش ممکنه یکم سخت به نظر بیاد ولی واقعا پروسه لذت بخشیه که آدم یک سیستم رو با دستورات نصب بکنه.


linuxarcharchlinuxkernelos
شاید از این پست‌ها خوشتان بیاید