Sửa chữa hệ thống: HowTo chroot

Nhiều lần, đặc biệt là khi làm việc lộn xộn, chúng ta đã gặp rắc rối không thể truy cập vào hệ thống để sửa chữa nó, nhưng giải pháp rất dễ dàng: sử dụng lệnh chroot từ bất kỳ LiveCD / RepairCD nào.

Ở nhiều nơi (diễn đàn, blog ...) lệnh này được đề cập và "sao chép / dán" mã được đưa ra, nhưng ý định của tôi với bài đăng này là giải thích các bước đó một chút, để tận dụng tốt điều này. công cụ, với kiến ​​thức về nguyên nhân.

Giới thiệu

Lệnh chroot Nó được gọi là CHangeROOT, tức là một lệnh cho phép bạn thay đổi gốc của hệ thống mà bạn đang làm việc. Nói cách khác: nếu bạn đến từ một LiveCD và bạn muốn mọi thứ bạn đang làm việc trên bảng điều khiển có ảnh hưởng đến hệ thống đã cài đặt, trước tiên bạn phải sử dụng chroot.

Vấn đề là nó không đủ để sử dụng chroot Như vậy, trước tiên chúng ta phải mount các phân vùng nhất định đúng cách.

LÀM THẾ NÀO ĐỂ

Trước tiên, chúng ta cần khởi động một thiết bị đầu cuối, từ một hệ thống đã cài đặt khác (trên một phân vùng / đĩa khác) hoặc từ một LiveCD. QUAN TRỌNG: kiến ​​trúc của LiveCD phải phù hợp với kiến ​​trúc của hệ thống được sửa chữa (32 hoặc 64 bit).
Khi chúng ta ở trong terminal, chúng ta sẽ bắt đầu xác định các phân vùng của mình:
fdisk -l

  • Với lệnh này, chúng tôi sẽ liệt kê tất cả các phân vùng / đĩa của chúng tôi. Chúng ta phải xác định được đâu là phân vùng đích, nơi hệ thống của chúng ta cần sửa chữa được cài đặt, từ bây giờ chúng ta sẽ gọi nó là hệ thống bị hỏng.

Đối với ví dụ này, chúng tôi sẽ xem xét rằng hệ thống bị hỏng của chúng tôi là / dev / sda1 .

Chúng tôi tiếp tục lắp ráp hệ thống. Đầu tiên, chúng tôi sẽ tạo thư mục nơi chúng tôi sẽ làm việc và sau đó chúng tôi gắn phân vùng nơi hệ thống bị hỏng của chúng tôi nằm trong thư mục đó
mkdir /mnt/my_linux
mount /dev/sda1 /mnt/my_linux

Nếu bạn có thư mục / Home o / var hoặc bất kỳ cái nào khác trong phân vùng khác, bạn nên gắn kết nó / s như sau:
mount /dev/sda2 /mnt/my_linux/var

  • LƯU Ý: Tôi đã lấy phân vùng / dev / sda2 làm ví dụ cho thư mục / var, hãy để mỗi cái điều chỉnh mã theo đặc điểm của chúng.

Thông thường, điều này là đủ nếu bạn chỉ cần chỉnh sửa tệp bằng tay, nhưng nếu chúng ta muốn thực hiện một số lệnh cấu hình hệ thống, chúng ta cần gắn kết một số thư mục hệ thống đặc biệt: / dev, / proc/ sys.
mount -t proc proc /mnt/my_linux/proc
mount -t sysfs sys /mnt/my_linux/sys
mount -o bind /dev /mnt/my_linux/dev

  • Với tùy chọn -t chúng tôi nói gắn kết loại "hệ thống tệp" mà chúng tôi muốn gắn kết. Cần phải chỉ định nó vì tính chất đặc biệt của các thư mục / proc y / sys.
  • Với tùy chọn -o chúng tôi chỉ định các tùy chọn của gắn kết. Tùy chọn ràng buộc phục vụ cho "liên kết". Trên UNIX, tất cả các thiết bị phần cứng đều có thể truy cập được thông qua thư mục / dev, đó là lý do tại sao chúng ta phải gắn kết / dev trong thư mục mà hệ thống bị hỏng của chúng tôi hiện đang ở. Vì thư mục này đã được gắn kết, chỉ cần nói gắn kết nơi nó được gắn ban đầu.

Nó được thực hiện theo cách này để chroot có quyền truy cập vào các thư mục này như thể chúng là hệ thống bị hỏng, mặc dù chúng phải từ hệ thống hiện tại (ví dụ: phiên LiveCD) vì chúng liên quan đến trạng thái của hệ thống, quy trình và phần cứng.

Bây giờ là lúc để sử dụng chroot:
chroot /mnt/my_linux/ /bin/bash

  • Lệnh được truyền dưới dạng đối số là đường dẫn của gốc mới «/» (trong trường hợp của chúng ta là / mnt / my_linux) và bảng điều khiển bạn muốn sử dụng (trong trường hợp này, chúng tôi đã chọn bản bash nổi tiếng, có trong / bin / bash). Nếu chúng ta không chỉ định bảng điều khiển, chúng ta sẽ thấy mình đứng trước một trình thông dịch lệnh hơi cổ điển (nó không điền khi nhấn tab, v.v.).

Bây giờ chúng ta có thể sử dụng bảng điều khiển như thể chúng ta đã bắt đầu phiên root trên hệ thống bị hỏng của mình (chỉnh sửa tệp, kiểm tra tập lệnh, cài đặt / gỡ cài đặt gói ...). CẢNH BÁO! Để những thay đổi được thực hiện có hiệu lực, bạn phải ngắt kết nối hệ thống tệp sau khi thoát chrootNhìn vào ví dụ dưới đây.

Thêm thông tin https://wiki.archlinux.org/index.php/Change_Root (nhiều hơn so với khuyến nghị đọc).

Ví dụ sử dụng: khôi phục GRUB2

Một trong những ứng dụng rộng rãi nhất của chroot Nó là một công cụ để sửa chữa GRUB. Vì nếu grub bị hỏng, thực tế là không thể khởi động hệ thống của chúng tôi để sửa nó.

LƯU Ý: hướng dẫn nhỏ này chỉ là một ví dụ đơn thuần, nó hoạt động trên các bản phân phối khác nhau có nguồn gốc từ Debian, Ubuntu và openSUSE trong số những người khác. Mặc dù vậy, hãy kiểm tra tài liệu về bản phân phối của bạn, vì trong nhiều lệnh không được tìm thấy cập nhật-grub.
# LƯU Ý: các lệnh này chạy một lần bên trong chroot.update-grub
grub-install /dev/sda

  • với Cập nhật-Grub. Chúng tôi cập nhật menu đầu vào GRUB2, do đó bổ sung bất kỳ đầu vào nào bị thiếu. Sau đó, chúng tôi cài đặt lại GRUB trên đĩa của mình, vì nó đã bị hỏng.

Trong trường hợp này tôi đã lấy / dev / sda như album mà chúng tôi có hệ thống của mình, điều này phải được điều chỉnh cho phù hợp với trường hợp của bạn.

GRUB của chúng tôi đã được sửa chữa xong, vì vậy chúng tôi phải thoát chroot, ngắt kết nối hệ thống tệp (QUAN TRỌNG) và khởi động lại để các thay đổi có hiệu lực. Nếu chúng tôi quên ngắt kết nối hệ thống tệp, có thể việc khởi động lại các tệp sẽ không ngắt kết nối chính xác và do đó một số thay đổi sẽ không có hiệu lực.
# chúng tôi rời khỏi chrootexit
# ngắt kết nối hệ thống tệp và khởi động lạiumount /mnt/my_linux/dev
umount /mnt/my_linux/sys
umount /mnt/my_linux/proc
umount /mnt/my_linux
reboot

Và đó là tất cả. Tôi hy vọng bạn thích nó và nó có ích cho bạn. Một lời chào!


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Leper_Ivan dijo

    Tôi có thể sử dụng cái này .. Tại một số thời điểm tôi phải sử dụng nó.

  2.   Mario dijo

    Có ai trong số các bạn đã sử dụng Chakra Benz chưa? Nếu vậy, bạn có thể cho tôi biết nếu
    nó có dễ dàng cho người dùng phổ thông không? Tôi sử dụng SolydK rất đơn giản nhưng
    Tôi hiểu rằng Chakra là KDE thuần túy và nó khiến tôi thích thú.

    1.    dijo

      Đúng vậy, chakra rất tốt và ít nhiều cũng dễ dàng, vấn đề là để cài đặt / gỡ cài đặt các gói bạn phải thực hiện với bảng điều khiển, vì chúng vẫn đang làm việc trên trình quản lý gói đồ họa. Hãy thử nó vì nó là giá trị nó. Nó sử dụng trình quản lý gói pacman, được kế thừa từ Archlinux, nhưng hãy cẩn thận, nó không chia sẻ kho lưu trữ với Arch và nó KHÔNG tương thích với chúng. Nếu bạn muốn tìm hiểu thêm về pacman, hãy xem tại wiki vòm https://wiki.archlinux.org/index.php/Pacman_%28Espa%C3%B1ol%29

      1.    izzyvp dijo

        Oktopi đã ổn định và hoạt động khá tốt đối với người dùng bình thường, do đó bạn không cần thiết bị đầu cuối để sử dụng pacman.

  3.   x11tete11x dijo

    Tôi hy vọng bài viết này sẽ được nhiều người truy cập, sau đó họ bắt đầu cài đặt lại bất cứ thứ gì khi với chroot bạn có thể sửa chữa hệ thống hầu như luôn luôn, chroot cho phép bạn có rất nhiều khả năng, bao gồm cả cài đặt Gentoo xD hahaha

  4.   moony dijo

    Tốt, cảm ơn ... Tôi chưa bao giờ cho nó một quả bóng vì một số cd trực tiếp để sửa chữa với tôi dường như họ nâng nó lên theo mặc định, nhưng bây giờ thì rõ ràng, cảm ơn một lần nữa.

  5.   Lolo dijo

    Để hoàn thành nó, sẽ rất tốt nếu bạn giải thích cách gắn phân vùng LVM, phân vùng được mã hóa và hệ thống RAID.

    1.    dijo

      mmm Tôi đã không chạm vào LVM và RAID trong một thời gian dài, nhưng bạn có thể thông báo cho tôi một chút để hoàn thành điều này… cảm ơn vì mẹo!

      1.    Lolo dijo

        Vâng, sự thật là tôi có thể sử dụng tuyệt vời.

        Nó sẽ được đánh giá rất cao.

        1.    dijo

          hãy xem wiki này, nó khá hay http://wiki.bandaancha.st/RAID_y_LVM_en_Linux

  6.   Modem dijo

    Giá như chủ đề này tồn tại vài tuần sau đó thì hóa ra là tôi có vấn đề với hệ thống của mình và tôi đã đọc đi đọc lại và ở khắp mọi nơi tôi đều tìm thấy chroot và blablabla nhưng nó không hoạt động với tôi dựa trên khuyến nghị trực tiếp đó là giống như hệ thống của bạn, rất quan trọng bởi vì tôi sử dụng x64, điều khác là gắn kết các phân vùng hệ thống, vì trong trường hợp của tôi khi tôi áp dụng chroot và gắn kết nó đã ném một lệnh và nó chỉ đơn giản là không nhận ra lệnh.

    Chủ đề này sẽ chuyển đến tệp "tổng hợp thông tin" của tôi

  7.   Cookie dijo

    Arch LiveCD (với công cụ này) là tất cả những gì cần thiết để sửa chữa hệ thống của bạn khi bạn bị hỏng.

    1.    RAW-Cơ bản dijo

      Chính xác! .. .. đó là tất cả những gì cần thiết .. thậm chí để giúp ai đó với W $ của họ, người đã quyết định không bắt đầu ..

      Tôi luôn mang theo bên mình một ổ đĩa 1gb với Arch live ... và chroot là tất cả những gì cần thiết để dưới bất kỳ sự cố nào, trong 10 phút bạn có mọi thứ theo thứ tự mà không phải lo lắng .. 😉

    2.    izzyvp dijo

      Bạn chỉ cần biết làm thế nào để làm điều đó.

    3.    pablo dijo

      Xin chào, thông báo rằng tôi gặp sự cố với centos, nó gửi cho tôi sự hoảng loạn hạt nhân, v.v. Và tôi đã không thể giải quyết nó, tôi có trang web và cơ sở dữ liệu của tôi ở đó, tôi không biết phải làm gì khác.

  8.   jony127 dijo

    Bài viết hay, tôi đã nghe thấy một số đoạn thời gian trôi qua nhưng tôi thực sự không biết nó được sử dụng như thế nào, tất nhiên là tôi chưa bao giờ cần nó và đó là lý do tại sao tôi chưa đọc một cái gì đó cụ thể. Bây giờ với bài viết của bạn được giải thích rất rõ ràng, tôi biết cách sử dụng nó trong trường hợp.

    Cảm ơn bạn rất nhiều và nhân tiện, Led Zeppelin muôn năm hehe.

  9.   kamala dijo

    cảm ơn, cuối cùng tôi đã thoát khỏi cơn ác mộng cứu hộ

    trên thực tế, tôi đã làm theo tất cả các bước ngoại trừ umount / mnt / my_linux, bởi vì nó cho tôi biết rằng nó đang bận và tôi điều chỉnh nó -km, nhưng thậm chí không phải thế, và tôi bị trả lại ...

    Tôi hy vọng nó không quan trọng….

    cảm ơn, một lần nữa…
    một lời chào

  10.   Jose Antonio dijo

    Mặc dù bài báo đã được một vài năm tuổi, tôi muốn cảm ơn tác giả vì đã rộng lượng chia sẻ rằng nó là một bài báo tuyệt vời vì cuối tuần này nó đã cứu mạng tôi. Tôi vô tình tải một máy chủ cài đặt một gói và khi khởi động lại nó không tải. Sau ba ngày cố gắng sửa nó và đọc các bài báo khác nhau, tôi đã tình cờ đến được đây và cuối cùng đã có thể cài đặt lại grub và sửa máy chủ.

    Cảm ơn bạn rất nhiều!

    1.    dijo

      Tôi rất vui vì nó đã giúp bạn. Cảm ơn đã nhận xét!

  11.   Thuật in ảnh chìm dijo

    Xin chào, tôi biết rằng bài đăng này nhiều năm trước, cảm ơn rất nhiều vì đã chia sẻ nó. Và tôi đã nghi ngờ, trong trường hợp của tôi nó làm hỏng hệ thống và cả trình điều khiển mạng, vì vậy tôi đã làm theo các bước nhưng nó không cho phép tôi tải về các gói, có cách nào để liên kết mạng trực tiếp với thiết bị đầu cuối không?

    1.    dijo

      Tôi không thực sự hiểu vấn đề của bạn… Khi bạn đăng nhập bằng LiveCD, hạt nhân tải là nhân từ LiveCD, do đó bạn có thể định cấu hình kết nối internet một cách hoàn hảo. Khi kết nối được thực hiện, hãy thử thực hiện chroot xem bạn có tiếp tục duy trì nó hay không, nếu không, bạn có thể phải cấu hình lại nhưng kernel bị hỏng không được ảnh hưởng đến phiên chroot.
      Nếu bạn không nói rõ hơn, tôi có thể nói với bạn ...

  12.   dốc dijo

    Bài đăng xuất sắc… một trong số ít các bài báo hữu ích được tìm thấy trên Internet.
    Cảm ơn bạn rất nhiều vì sự đóng góp.

  13.   zopeck dijo

    Xin chào, hướng dẫn tuyệt vời! Giải thích tuyệt vời, đối với chúng tôi chỉ là những người phàm trần!

    Tôi có một câu hỏi:
    Khi bạn đề cập rằng trong trường hợp bạn cần cài đặt các gói, thực hiện cập nhật hệ thống hoặc hoạt động đặc biệt khác và yêu cầu gắn các thư mục / dev / proc và / sys, tôi không rõ liệu các thư mục này có nằm trong hệ thống Trực tiếp mà chúng tôi không. bắt đầu sửa chữa thiết bị hoặc nếu chúng nằm trong phân vùng gốc được gắn kết trước.

    Cảm ơn bạn.

  14.   Orlando dijo

    CẢM ƠN RẤT NHIỀU!!!!