Lỗi hạt nhân với lỗi Không thể mở thiết bị root Lỗi, tôi phải thêm tùy chọn Root = = ở đâu?


9

Bất cứ khi nào tôi cố gắng khởi động với linux kernel 3.0.0.13 (bản được cài đặt bởi các bản nâng cấp), tôi gặp lỗi Kernel Panic:

VFS: Không thể mở thiết bị gốc "sda1" hoặc khối không xác định (0,0) Vui lòng nối thêm tùy chọn khởi động "root =" chính xác;

May mắn thay, nếu tôi khởi động bằng phiên bản trước, tôi không gặp vấn đề gì. Làm sao tôi có thể giải quyết việc này? Tôi nên nối đúng ở root= optionđâu? Nếu tôi không làm cho Hạt nhân này hoạt động, làm thế nào tôi có thể loại bỏ nó làm mặc định và dính vào hạt nhân cũ hơn?


Cùng một vấn đề ở đây. Sự khác biệt chính mà tôi quan sát được là lên đến 3.0.0.12, grub conf cố gắng xác định đĩa cứng bằng UUID của nó, 3.0.0.13 hiện sử dụng / dev / sda6 .. lạ ...
Dan Soap

Câu trả lời:


11

Bạn chưa cung cấp nhiều thông tin với nhật ký và như vậy để tiến hành nhưng tôi đoán rất có thể lỗi này bạn gặp phải là do kernel bị nhầm lẫn bởi ổ IDE / SATA. Thực hiện tìm kiếm nhanh trên Google đã dẫn tôi đến liên kết 1 , liên kết 2 , liên kết 3

Sau đây là đoạn trích từ một liên kết được đề cập bởi một trong các liên kết ở trên :

Rất có thể là một trong những vấn đề xảy ra nhiều nhất (nhưng một khi bạn đã giải quyết nó, rất có thể bạn sẽ không bao giờ gặp lại nó nữa):

Unable to mount root fs on unknown-block(0,0)

hoặc là

VFS: Cannot open root device "sda3" or unknown-block(8,3)
Please append a correct "root=" boot option; here are the available partitions:
  sda driver: sd
    sda1 sda2

Các chữ số 0,0hoặc 8,3có thể khác nhau trong trường hợp của bạn - nó đề cập đến thiết bị mà kernel cố gắng truy cập (và không thành công). Nói chung, người ta có thể nói rằng, nếu chữ số đầu tiên là 0, thì hạt nhân không thể xác định phần cứng. Nếu nó là một chữ số khác (như 8), nó không thể xác định hệ thống tệp (nhưng có thể truy cập phần cứng).

Vấn đề ở đây là kernel mà bạn đang khởi động không thể dịch root=/dev/...tham số mà bạn đã đưa ra (bên trong cấu hình bộ tải khởi động) thành một hệ thống tệp thực, có thể truy cập được. Một số lý do có thể dẫn đến một thất bại như vậy:

  • cấu hình kernel bị thiếu trình điều khiển cho bộ điều khiển ổ cứng của bạn (trường hợp 1, 4, 5)
  • cấu hình kernel bị thiếu trình điều khiển cho bus được sử dụng bởi bộ điều khiển ổ cứng của bạn
  • cấu hình kernel bị thiếu trình điều khiển cho hệ thống tập tin bạn đang sử dụng
  • thiết bị được xác định sai trong tham số root = của bạn (trường hợp 2, 3)

Giải quyết vấn đề thật dễ dàng nếu bạn biết lý do là gì. Bạn rất có thể không, vì vậy đây là một kiểm tra nhanh.

Mở trình hướng dẫn cấu hình kernel (phần make menuconfig ) để bạn có thể cập nhật cấu hình kernel cho phù hợp.

  • Kiểm tra xem bạn đã tích hợp (và không phải là mô-đun) hỗ trợ cho bus / giao thức mà bộ điều khiển ổ cứng của bạn sử dụng chưa.
  • Nhiều khả năng đây là hỗ trợ PCI, hỗ trợ SATA (nằm dưới hỗ trợ thiết bị SCSI), ...
  • Kiểm tra xem bạn đã tích hợp (và không phải là mô-đun) cho bộ điều khiển ổ cứng bạn sử dụng chưa. Một trong những trường hợp thường gặp nhất: bạn đã chọn hỗ trợ cho giao thức bộ điều khiển ổ cứng (IDE, SATA, SCSI, ...) nhưng quên
    chọn chính trình điều khiển bộ điều khiển ổ cứng (như Intel PIIX). Hãy thử
    chạy lệnh lscpi sau và dán đầu ra của nó vào
    http://kmuto.jp/debian/hcl/ . Trang web sẽ cho bạn thấy trình điều khiển hạt nhân nào bạn cần chọn cho hệ thống của mình. Trong menuconfig,
    bạn có thể nhập "/" để mở chức năng tìm kiếm và nhập
    tên trình điều khiển để tìm ra vị trí của nó. # lspci -n
  • Kiểm tra xem bạn đã tích hợp (và không phải là mô-đun) hỗ trợ cho (các) hệ thống tệp bạn sử dụng chưa.
  • Giả sử hệ thống tệp gốc của bạn sử dụng btrfs (mà tôi chắc chắn không khuyến nghị) nhưng bạn đã không chọn nó hoặc chọn nó để được xây dựng dưới dạng
    mô-đun, sau đó bạn sẽ gặp lỗi bạn thấy. Đảm bảo
    hỗ trợ hệ thống tệp được xây dựng trong kernel.
  • Kiểm tra xem tham số kernel cho root=chỉ vào phân vùng chính xác.

    Điều này không ngu ngốc như nó nghe. Khi bạn được khởi động với một kernel, nó có thể liệt kê các đĩa của bạn là / dev / sda trong khi kernel (được định cấu hình) của bạn đang mong đợi nó là / dev / hda. Điều này không phải vì các hạt nhân không nhất quán với nhau, mà là do các trình điều khiển được sử dụng: trình điều khiển cũ sử dụng cú pháp hda, sda mới hơn.

    Hãy thử chuyển đổi hda với sda (và hdb với sdb và ...).

    Ngoài ra, các hạt nhân gần đây cung cấp một cái nhìn tổng quan về các phân vùng mà họ tìm thấy trên thiết bị đã nói. Nếu có, nó có thể giúp bạn xác định nếu bạn bỏ lỡ một phân vùng (trong ví dụ được đưa ra ở đầu phần này, chỉ có hai phân vùng được tìm thấy trong khi kernel được hướng dẫn khởi động phần ba). Nếu không, rất có thể là do kernel không biết thiết bị bắt đầu (vì vậy nó không thể hiển thị phân vùng).

  • Kiểm tra xem kernel đang được boot booter khởi động có phải là kernel đúng không. Tôi đã thấy những người sau khi xây dựng kernel đầu tiên (không khởi động), quên rằng họ phải gắn kết /boottrước khi ghi đè kernel bằng kernel mới. Kết quả là, họ sao chép kernel vào hệ thống tập tin gốc ( /) trong khi trình tải khởi động vẫn mong muốn hình ảnh kernel nằm trên /bootphân vùng.


1
Xin chào, nó đã qua rất nhiều thời gian, nhưng cảm ơn. Tôi đã có một đĩa CD-Rom bị lỗi, loại bỏ rằng mọi thứ đều hoạt động tốt!
lucacerone

Liên kết 1, Liên kết 4 và Liên kết 5 đều đã chết.
hỏi

0

Sau khi đọc câu trả lời này giải thích những gì đang diễn ra, hãy thử sử dụng [CD Boot-Siemir] [1] [1]: https ://help.ub Ubuntu.com/community/Boot-Repair

Đã làm việc rất tốt trong việc sửa chữa "thiết bị bị xác định nhầm trong tham số root = của bạn (trường hợp 2, 3)".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.