Debian

在舊的和損壞的 debian 系統上安裝 grub 和工作核心

  • July 26, 2014

我有一個舊的 debian 系統,多年來我一直能夠升級它。我安裝了一個舊核心,由我從原始碼編譯。

在我最後一次 dist-upgrade(使用測試發行版)之後,我在啟動時遇到了核心恐慌。我的舊核心和我的新 libc 不能再一起工作了(我想)。

甚至設備名稱也發生了變化:在我最新的工作核心中,我擁有/dev/hdaand /dev/hdb,現在這些設備被辨識為/dev/sdaand /dev/sdb

另外,兩個分區 (/dev/hda2/dev/hdb2) 加入了一個 RAID 陣列,其名稱為/dev/md0(以 root 身份掛載),現在為/dev/md127. 分區/dev/hda1掛載為/boot,並且/dev/hdb1是交換分區。

我使用 lilo 作為引導管理器。

現在一切都壞了,我嘗試使用debian救援模式,但沒有成功。我刪除了 lilo 並安裝了 grub2,但仍然沒有任何效果。

所以我決定在舊的交換分區(/dev/hdb1, now /dev/sdb1)中安裝一個新的最小 debian 系統,然後我試圖從那裡拯救這個系統。

仍然沒有:我無法在舊分區中安裝工作核心(這次是預編譯核心)。我試圖重建我的舊 RAID 陣列,掛載我的引導分區,chroot-ed ant apt-get 安裝了一個新核心:grub 什麼也看不到。

我不知道我還能嘗試什麼…

正如 derobert 指出的那樣,hda -> sda這是長期以來的預期變化。

RAID陣列名稱更改很奇怪,但最終解決了。

我嘗試從 live cd 發行版啟動,安裝 raid 陣列,安裝啟動分區,然後apt-get install安裝新核心。這個過程產生了一個錯誤,因為我不知道我應該安裝/boot,/proc/sys.

所以具體的流程是:

  • 從實時發行版啟動(救援模式下的 debian CD 1 可以)

  • 掛載根分區(例如,在 /chroot 中),最後掛載引導分區,如果與 root 不同)

  • 綁定掛載特殊設備:

    • mount --bind /sys /chroot/sys
    • mount --bind /proc /chroot/proc
    • mount --bind /dev /chroot/dev
  • chroot 到根分區

  • 安裝新核心

  • 重啟

核心中的新 ATA 驅動程序使用 /dev/sda,舊驅動程序仍受支持,但您必須通過使用 livecd 進入系統來編輯核心。

Device drivers --->
<*> ATA/ATAPI/MFM/TLL support (deprecated)
<*> Serial ATA and Parallel ATA drivers --->

對於 chroot,我總是使用gentoo 最小安裝光碟以及如何 chroot 進入您的系統,您可以在gentoo 手冊中閱讀,它也應該適用於您的系統。對於 debian 使用者來說,可能還有另一種方式,但這種方式應該適合你們兩個。

我希望這是您的問題的解決方案。

引用自:https://unix.stackexchange.com/questions/146582