นี่คือทรัพยากรบางส่วน:
"การเปลี่ยนราก" หรือ "chrooting" เป็นวิธีการซูมในส่วนหนึ่งของระบบแฟ้มของคุณเพื่อให้เช่นที่จะอ้างถึงสิ่งที่สามารถเข้าถึงได้ก่อนที่/path
/mnt/path
"root" ในนิพจน์ "chroot" หมายถึงระบบไฟล์รู/
ทไม่ใช่ผู้ใช้รูท (แม้ว่าโดยทั่วไปคุณจะต้องมีสิทธิ์ผู้ใช้รูทเพื่อ chroot)
การจัดเตรียม
ขั้นตอนทั้งหมดในคู่มือนี้จะต้องดำเนินการในฐานะผู้ใช้รูท
เราสมมติว่าฮาร์ดดิสก์ของคุณอยู่ที่ / dev / sda1 และประเภทไฟล์คือ ext3 หากคุณไม่ทราบสถานที่และ filetype fdisk -l
ของฮาร์ดดิสก์ของคุณให้อ่านการส่งออกของ
ตรวจสอบให้แน่ใจว่าสถาปัตยกรรมของระบบที่คุณบูทด้วย (เช่นเป็น 32 บิต LiveCD) และระบบที่คุณต้องการป้อน (เช่นติดตั้งแบบ 32 บิตบนฮาร์ดไดรฟ์ของคุณ) คุณสามารถกำหนดสถาปัตยกรรมที่คุณ booted uname -m
กับการใช้
ตรวจสอบให้แน่ใจว่าได้โหลดโมดูลเคอร์เนลใด ๆ ที่คุณต้องการ
ตั้งค่าเครือข่ายของคุณหากคุณต้องการ (เช่นเพื่อติดตั้งแพ็คเกจที่อัพเดต)
เริ่มต้นพาร์ติชัน swap ของคุณหากจำเป็น (เช่นswapon /dev/sda3
)
การแสดง chroot
cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
หาก/boot
ไดเรกทอรีของคุณอยู่ในพาร์ติชันที่แตกต่างจากของคุณ/
และคุณต้องการจัดการไฟล์ในนั้น (เช่นหากคุณกำลังทำงานกับ GRUB, ทำการอัพเกรดเคอร์เนล ฯลฯ ) คุณจะต้องติดตั้งพาร์ติชันนั้น หากอยู่ที่ / dev / sda2 และประเภทไฟล์เป็น ext2 ให้ทำดังนี้:
mount -t ext2 /dev/sda2 /mnt/boot
ในทำนองเดียวกันสำหรับส่วนอื่น ๆ ของระบบไฟล์ของคุณ ( /var
, /usr
) ที่อยู่ในพาร์ติชันแยกต่างหาก แต่คุณต้องเข้าถึง โดยทั่วไปเมื่อคุณกำลัง chrooting เพื่อแก้ไขสิ่งที่คุณไม่จำเป็นต้องเข้าถึง / home ดังนั้นคุณไม่จำเป็นต้องกังวลกับมัน
(อาจเป็นไปได้ที่จะเมานต์ระบบไฟล์หลังจากที่คุณ chrooted แต่ก็ฉลาดกว่าที่จะทำเช่นนั้นก่อนเหตุผลก็คือเมื่อคุณทำมันหลังจากที่สภาพแวดล้อมที่อยู่นอก / เคอร์เนลจะไม่ทราบเกี่ยวกับระบบไฟล์ที่ติดตั้งดังนั้นหากคุณลืม เดินเท้าพวกเขาก่อนที่จะออก chroot ระบบจะไม่รู้ว่าจะติดตั้งพวกเขาเมื่อมันปิดตัวลงเช่นกันซึ่งอาจสร้างความเสียหายให้ระบบไฟล์เหล่านั้น)
หากคุณติดตั้งเครือข่ายและต้องการใช้ในระบบ chrooted ให้คัดลอก/etc/resolv.conf
เพื่อให้คุณสามารถแก้ไขชื่อโดเมนได้:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
ตอนนี้คุณพร้อมที่จะย้ายเข้าสู่ระบบไฟล์ที่ติดตั้งแล้ว:
chroot /mnt /bin/bash
(หากสิ่งนี้ส่งคืนข้อผิดพลาดchroot: cannot run command '/bin/bash': Exec format error
โดยปกติจะระบุว่าคุณบูตด้วยสถาปัตยกรรมหนึ่ง (เช่น x86_32) และพยายามที่จะ chroot ไปยังอีก (เช่น x86_64) วิธีแก้ปัญหาคือการใช้ LiveCD ซึ่งมีสถาปัตยกรรมเดียวกับระบบที่คุณต้องการ chroot เข้า)
ณ จุดนี้คุณจะยังคงทำงานเคอร์เนลที่คุณ booted ด้วย แต่ทุกเส้นทางจะอ้างถึงสิ่งที่เคยเป็น/path
/mnt/path
หากคุณกำลังทำสิ่งใดกับ GRUB คุณจะต้องแน่ใจว่า/etc/mtab
ไฟล์ของคุณเป็นปัจจุบัน:
grep -v rootfs /proc/mounts > /etc/mtab
การทำเช่นนี้อาจมีประโยชน์ในตอนนี้:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
ทำงานสกปรกของคุณ
ณ จุดนี้คุณสามารถทำการแก้ไขปัญหาที่คุณต้องทำ:
- ติดตั้ง GRUB ให้เป็น MBR ของดิสก์อีกครั้ง
- รีเซ็ตรหัสผ่านที่ลืม
- ทำการอัพเกรดเคอร์เนล (หรือดาวน์เกรด)
- สร้าง initramdisk ของคุณใหม่
- แก้ไข / etc / fstab ของคุณ
- ติดตั้งแพคเกจใหม่โดยใช้ตัวจัดการแพ็คเกจของคุณ
- อะไรก็ตาม
การทำความสะอาด
เมื่อเสร็จแล้วให้แน่ใจว่าโปรแกรมที่ทำงานอยู่ทั้งหมดหยุดทำงาน จากนั้นออกจาก chroot:
exit
ตอนนี้ถอนติดตั้งพาร์ติชั่นทั้งหมดที่คุณติดตั้ง:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
ในที่สุดพยายามที่จะยกเลิกการต่อเชื่อมฮาร์ดไดรฟ์ของคุณ:
umount /mnt
หากคุณได้รับข้อผิดพลาดว่า / mnt (หรือพาร์ติชันอื่น ๆ ) ไม่ว่างนี่อาจหมายถึงหนึ่งในสองสิ่งต่อไปนี้:
ในกรณีหลังให้ถอด unmount จุดยึดที่ผิดก่อน ในการรับการเตือนความจำของจุดเมานท์ปัจจุบันทั้งหมดให้รันmount
โดยไม่มีพารามิเตอร์
สุดท้าย:
reboot
chroot.sh
ไว้ในรูทของทุกระบบที่ฉันใช้ซึ่งเนื้อหามีมากหรือน้อยตรงกับด้านบน เมื่อฉันต้องการ chroot เข้าสู่ระบบนั้นจาก LiveCD หรืออะไรสักอย่างจากนั้นฉันเพิ่งติดตั้งระบบไฟล์รูทและรันสคริปต์ chroot ไม่มี googling คลั่งสำหรับคำสั่งที่เหมาะสม