</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

Chroot — ورود به محیط نصب Gentoo

دنباله کامل chroot در Gentoo: سوار کردن proc، sys، dev، کپی resolv.conf و ورود به محیط نصب.

متوسط۸ دقیقه مطالعهآخرین بروزرسانی: ۱ تیر ۱۴۰۵ویرایش در گیت‌هاب

Chroot چیست؟#

دستور chroot (Change Root) ریشهٔ دایرکتوری فرایند را به یک مسیر دیگر تغییر می‌دهد. در نصب Gentoo، پس از استخراج Stage3، باید وارد محیط نصب شویم تا دستورات emerge و پیکربندی در ریشهٔ سیستم جدید اجرا شوند.

برای این کار، علاوه بر خود chroot، باید چند فایل سیستم مجازی کرنل (proc, sys, dev) را نیز سوار کنیم تا محیط chroot کاملاً کاربردی باشد.

چرا chroot؟

Chroot به ما اجازه می‌دهد از یک محیط لینوکس کامل (Minimal CD) وارد محیط لینوکس در حال نصب شویم، بدون اینکه سیستم را ریبوت کنیم. به این ترتیب دستوراتی مانند emerge در ریشهٔ سیستم جدید اجرا می‌شوند.

مراحل کامل chroot#

مرحله ۱: سوار کردن proc, sys و dev#

این فایل سیستم‌های مجازی ارتباط با کرنل را فراهم می‌کنند:

# سوار کردن /proc
mount --types proc /proc /mnt/gentoo/proc
 
# سوار کردن /sys به‌صورت rbind
mount --rbind /sys /mnt/gentoo/sys
 
# سوار کردن /dev به‌صورت rbind
mount --rbind /dev /mnt/gentoo/dev
 
# جلوگیری از تداخل هنگام chroot (مهم برای systemd و mount propagation)
mount --make-rslave /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/dev

توضیح هر mount:

فایل سیستمکاربرد
/procاطلاعات فرایندها و کرنل
/sysدستگاه‌ها و ماژول‌ها
/devفایل‌های دستگاه (دیسک، ترمینال و...)
--rbindسوار کردن بازگشتی شامل زیرمجموعه‌ها
--make-rslaveجدا کردن propagation برای جلوگیری از تداخل

مرحله ۲: کپی resolv.conf#

برای دسترسی به اینترنت در محیط chroot، فایل /etc/resolv.conf را کپی کنید:

# کپی فایل تنظیمات DNS
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

فراموش‌کردن resolv.conf

اگر این مرحله را فراموش کنید، در chroot نمی‌توانید به اینترنت دسترسی داشته باشید و emerge --sync با خطای DNS مواجه می‌شود. این یکی از رایج‌ترین خطاهای نصب Gentoo است.

مرحله ۳: ورود به chroot#

# ورود به محیط chroot
chroot /mnt/gentoo /bin/bash
 
# بارگذاری پروفایل
source /etc/profile
 
# تغییر اعلان برای تمایز محیط chroot
export PS1="(chroot) ${PS1}"
# اعلان به این شکل درمی‌آید:
# (chroot) root@gentoo:/#

یک خط برای همه

می‌توانید همهٔ مراحل را در یک دستور ترکیب کنید:

chroot /mnt/gentoo /bin/bash -c "source /etc/profile && export PS1='(chroot) \${PS1}' && exec bash"

سوار کردن /boot و ESP در chroot#

پس از ورود به chroot، باید /boot (و در صورت UEFI، /boot/efi) را داخل chroot سوار کنید:

# (داخل chroot)
mount /dev/sda1 /boot
 
# اگر UEFI هستید
mount /dev/sda1 /boot/efi

تست عملکرد chroot#

پس از ورود به chroot، مطمئن شوید همه‌چیز کار می‌کند:

# بررسی دسترسی به اینترنت
ping -c 3 gentoo.org
# خروجی مطلوب:
# PING gentoo.org (140.211.166.184) 56(84) bytes of data.
# 64 bytes from gentoo.org: icmp_seq=1 ttl=44 time=152 ms
# ...
 
# همگام‌سازی Portage
emaint sync -a
# یا
emerge --sync
# خروجی:
# * Syncing into /var/db/repos/gentoo ...
# * Sync successful

خروج از chroot#

وقتی کارتان تمام شد، به‌ترتیب معکوس خارج شوید:

# خروج از chroot
exit
 
# (اکنون در Minimal CD هستید)
# اگر /boot را سوار کرده بودید، اول آن را سوار-نکردنی کنید
umount -l /mnt/gentoo/boot/efi 2>/dev/null
umount -l /mnt/gentoo/boot 2>/dev/null
 
# سوار-نکردنی فایل سیستم‌های مجازی
umount -l /mnt/gentoo/proc
umount -R /mnt/gentoo/sys
umount -R /mnt/gentoo/dev
 
# سوار-نکردنی ریشه
umount -l /mnt/gentoo

قبل از ریبوت

همیشه پیش از ریبوت، همهٔ پارتیشن‌های سوارشده روی /mnt/gentoo را unmount کنید. در غیر این صورت ممکن است داده‌ها نوشته نشوند و فایل سیستم آسیب ببیند.

چرا هر کدام از این mountها؟#

/proc#

بدون /proc، بسیاری از دستورات کار نمی‌کنند: ps, top, free و حتی خود emerge. کرنل از /proc برای گزارش وضعیت فرایندها استفاده می‌کند.

/sys#

برای دسترسی به اطلاعات سخت‌افزاری، ماژول‌ها و تنظیمات کرنل. در نصب هسته و مدیریت دستگاه‌ها ضروری است.

/dev#

بدون /dev، در chroot نمی‌توانید به دیسک‌ها، ترمینال و دستگاه‌های USB دسترسی داشته باشید. دستوراتی مانند fdisk یا mount کار نخواهند کرد.

resolv.conf#

این فایل شامل آدرس سرورهای DNS است. بدون آن، نام دامنه‌ها (مثل gentoo.org) به IP تبدیل نمی‌شوند و اینترنت کار نمی‌کند.

خطاهای رایج#

۱. خطای DNS در chroot#

emerge --sync
# ping: gentoo.org: Temporary failure in name resolution

دلیل: فراموش‌کردن کپی resolv.conf. راه‌حل:

# (از chroot خارج شوید)
exit
cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"

۲. خطای cannot mount /proc#

mount: /mnt/gentoo/proc: /proc already mounted on /proc

دلیل: /proc قبلاً سوار شده. راه‌حل: نیازی به دوباره سوارکردن نیست؛ ادامه دهید.

۳. خطای failed to run command /bin/bash#

chroot: failed to run command '/bin/bash': No such file or directory

دلیل: Stage3 به‌درستی استخراج نشده یا معماری ISO با Stage3 متفاوت است (مثلاً ISO amd64 با Stage3 x86). راه‌حل:

# بررسی اینکه /bin/bash در chroot وجود دارد
ls /mnt/gentoo/bin/bash
# خروجی:
# /mnt/gentoo/bin/bash
 
# اگر وجود نداشت، Stage3 را دوباره استخراج کنید
cd /mnt/gentoo
tar xpf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner

۴. خطای mount propagation با systemd#

اگر از systemd استفاده می‌کنید و خطاهای عجیب در systemctl می‌بینید، احتمالاً --make-rslave را فراموش کرده‌اید:

# (از chroot خارج شوید)
exit
mount --make-rslave /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash

خلاصه و مرحله بعد#

دنبالهٔ chroot در Gentoo شامل سوار کردن proc, sys, dev، کپی resolv.conf و ورود به محیط نصب است. این مراحل به‌خوبی شناخته شده‌اند و در هر بار نصب Gentoo تکرار می‌شوند. درک هر مرحله به شما کمک می‌کند خطاهای رایج را خودتان رفع کنید.

پس از ورود به chroot، باید Stage3 را نصب و پیکربندی کنید و سپس هسته را نصب نمایید. برای آشنایی با معماری کلی Gentoo، آموزش معماری را ببینید.

اشتراک‌گذاری:

این صفحه در تاریخ ۱ تیر ۱۴۰۵ به‌روزرسانی شده است.