Dưới đây là một số tài nguyên:
"Thay đổi root" hoặc "chroot" là một phương pháp để phóng to một phần của hệ thống tập tin của bạn, do đó, ví dụ, /path
sẽ đề cập đến những gì trước đây có thể truy cập được /mnt/path
. "Root" trong biểu thức "chroot" dùng để chỉ hệ thống tập tin gốc /
chứ không phải người dùng root. (Mặc dù thông thường, bạn sẽ cần đặc quyền người dùng root để chroot.)
Sự chuẩn bị
Tất cả các bước trong hướng dẫn này sẽ phải được thực hiện như người dùng root.
Chúng tôi cho rằng đĩa cứng của bạn là / dev / sda1 và filetype của nó là ext3. Nếu bạn không biết vị trí và kiểu tệp của đĩa, hãy đọc đầu ra của fdisk -l
.
Hãy chắc chắn rằng các kiến trúc của hệ thống bạn đã khởi động (ví dụ: LiveCD 32 bit) và hệ thống bạn muốn nhập (ví dụ: cài đặt 32 bit trên ổ cứng của bạn) phù hợp. Bạn có thể xác định kiến trúc bạn đã khởi động bằng cách sử dụng uname -m
.
Hãy chắc chắn rằng bất kỳ mô-đun hạt nhân nào bạn cần đã được tải.
Thiết lập mạng của bạn nếu bạn cần nó (ví dụ: để cài đặt các gói cập nhật).
Khởi tạo phân vùng trao đổi của bạn nếu cần thiết (ví dụ swapon /dev/sda3
:).
Thực hiện 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
Nếu /boot
thư mục của bạn nằm trên một phân vùng khác với bạn /
và bạn muốn thao tác các tệp trên đó (ví dụ: nếu bạn sẽ làm việc với GRUB, thực hiện nâng cấp kernel, v.v.), bạn cũng sẽ cần phải gắn phân vùng đó. Nếu nó ở / dev / sda2 và filetype của nó là ext2, thì hãy làm:
mount -t ext2 /dev/sda2 /mnt/boot
Tương tự như vậy đối với bất kỳ phần nào khác trong hệ thống tệp của bạn ( /var
, /usr
) nằm trên các phân vùng riêng biệt nhưng bạn cần truy cập. Nói chung khi bạn chroot để sửa một cái gì đó bạn sẽ không cần truy cập vào / nhà, vì vậy bạn không cần phải bận tâm đến nó.
. che giấu chúng trước khi thoát khỏi chroot, hệ thống sẽ không biết cách khắc phục chúng khi tắt máy. Điều này có thể làm hỏng các hệ thống tập tin đó.)
Nếu bạn đã thiết lập mạng của mình và muốn sử dụng nó trong hệ thống chroot, hãy sao chép /etc/resolv.conf
để bạn có thể giải quyết các tên miền:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Bây giờ bạn đã sẵn sàng để chuyển sang hệ thống tập tin được gắn kết:
chroot /mnt /bin/bash
(Nếu điều này trả về lỗi chroot: cannot run command '/bin/bash': Exec format error
, điều này thường chỉ ra rằng bạn đã khởi động với một kiến trúc (ví dụ x86_32) và đang cố gắng chroot vào một kiến trúc khác (ví dụ: x86_64). chroot vào.)
Tại thời điểm này, bạn vẫn đang chạy kernel mà bạn đã khởi động, nhưng tất cả các đường dẫn /path
sẽ đề cập đến những gì đã từng /mnt/path
.
Nếu bạn sẽ làm bất cứ điều gì với GRUB, bạn sẽ cần chắc chắn rằng /etc/mtab
tệp của bạn được cập nhật:
grep -v rootfs /proc/mounts > /etc/mtab
Nó cũng có thể hữu ích tại thời điểm này để làm:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
Làm công việc bẩn thỉu của bạn
Tại thời điểm này, bạn có thể thực hiện bất kỳ khắc phục sự cố nào bạn cần làm:
- đặt lại GRUB vào MBR của đĩa của bạn
- đặt lại mật khẩu đã quên
- thực hiện nâng cấp kernel (hoặc hạ cấp)
- xây dựng lại initramdisk của bạn
- sửa lỗi / etc / fstab của bạn
- cài đặt lại các gói bằng trình quản lý gói của bạn
- bất cứ điều gì
Dọn dẹp
Khi bạn kết thúc, đảm bảo rằng tất cả các chương trình đang chạy đã dừng. Sau đó thoát khỏi chroot:
exit
Bây giờ ngắt kết nối tất cả các phân vùng bạn đã gắn kết:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
Cuối cùng cố gắng để ngắt kết nối ổ cứng của bạn:
umount /mnt
Nếu bạn gặp lỗi nói rằng / mnt (hoặc bất kỳ phân vùng nào khác) đang bận, điều này có thể có nghĩa là một trong hai điều sau:
Trong trường hợp sau, chỉ cần ngắt điểm gắn kết vi phạm trước. Để nhận được lời nhắc về tất cả các điểm gắn kết hiện tại, hãy chạy mount
không có tham số.
Cuối cùng:
reboot
chroot.sh
trong thư mục gốc của mọi hệ thống mà tôi sử dụng, có nội dung ít nhiều khớp với phần trên. Khi tôi cần chroot vào hệ thống đó từ LiveCD hoặc một cái gì đó, sau đó tôi chỉ cần gắn hệ thống tập tin gốc và chạy tập lệnh chroot. Không còn googling điên cuồng cho các lệnh đúng.