Как восстановить систему после случайного удаления всех ядер?

Я пытался удалить старые ядра, но я, должно быть, удалил все ядра на своем ноутбуке Ubuntu 11.04. Есть ли способ исправить это через загрузочный USB-накопитель или смонтировать жесткий диск в другой системе?

5 ответов

Решение

Загрузитесь с live CD (или live USB), смонтируйте несколько систем, загрузитесь в него и установите ядро. После успешной установки ядра размонтируйте файловые системы.

  1. Открытый терминал
  2. Смонтируйте раздел Ubuntu: sudo mount /dev/sdXY /mnt
  3. Смонтируйте несколько специальных разделов:

    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    
  4. (необязательно) Когда вы подключены к сети, используйте DNS-серверы из вашей среды Live (в противном случае имена хостов не могут быть разрешены):

    cp /etc/resolv.conf /mnt/etc/resolv.conf
    
  5. Вброс в /mnt: sudo chroot /mnt
  6. Установите ядро ​​Linux: apt-get install linux-image-generic (sudo не требуется, так как вы root после chroot)
  7. После успешной установки ядра вытащите chroot и размонтируйте некоторые файловые системы:

    exit
    sudo umount /mnt/sys
    sudo umount /mnt/proc
    sudo umount /mnt/dev
    sudo umount /mnt
    
  8. Перезагрузите и удалите CD или USB: sudo reboot

Эта расширенная процедура учитывает большинство возможных осложнений, в том числе проблемы с подключением к Интернету в chroot , не зная, какой пакет ядра установить (до Ubuntu 12.10 это не всегда будет linux-image-generic ), не зная с самого начала, какой раздел или какой физический диск содержит / файловая система, и имея отдельный /boot раздел.

Я не писал это со ссылкой на какие-либо другие процедуры здесь, хотя вы заметите некоторые сходства. Я основал это, свободно, на процедуре здесь (хотя эти инструкции для чего-то совершенно другого, я их сильно адаптировал, и копируются только некоторые команды, а не проза).

Вы удалили все пакеты ядра, и Ubuntu не может загрузиться без установленного ядра. Таким образом, решение заключается в загрузке с живого CD/DVD/USB, chroot в установленную систему и установите в нее ядро.

  1. Загрузитесь с живого CD / DVD-диска Ubuntu или USB-флешки.

  2. Выберите Попробовать Ubuntu (не устанавливать Ubuntu).

  3. Когда появится рабочий стол, убедитесь, что вы подключены к Интернету. Если нет, подключитесь к Интернету. Один из способов проверить, подключены ли вы к Интернету, - открыть веб-браузер. Вы даже можете следовать остальным инструкциям, разместив этот ответ Ask Ubuntu в своем веб-браузере, в системе live CD/DVD/USB. Я настоятельно рекомендую это сделать.

  4. Откройте окно терминала с помощью Ctrl + Alt + T.

  5. В окне терминала выполните эту команду, чтобы вывести список разделов:

     sudo parted -l
    

    Вы увидите что-то вроде этого (но это будет не совсем так):

    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sda: 21.5GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    
    Number  Start   End     Size    Type      File system     Flags
     1      1049kB  20.4GB  20.4GB  primary   ext4            boot
     2      20.4GB  21.5GB  1072MB  extended
     5      20.4GB  21.5GB  1072MB  logical   linux-swap(v1)
    
    
    Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0
    has been opened read-only.
    Error: Can't have a partition outside the disk!
    
  6. Изучите полученный вывод, чтобы определить имя устройства раздела, содержащего / файловая система системы Ubuntu, которая установлена ​​на жестком диске (который вы восстанавливаете).

    • Если у вас есть только один ext4 раздел, это один.

    • Если у вас есть более одного ext4 раздел, вероятно, первый. Однако, если первый очень маленький - меньше гигабайта - тогда это может быть отдельным /boot раздел (помните, что тоже).

      Обратите внимание, что независимо от того, boot перечислен под Flags имеет очень мало общего с тем, является ли раздел отдельным /boot раздел. Моя система, чья информация указана выше, не имеет отдельной /boot раздел.

    • Имя устройства для раздела начинается с имени устройства для физического диска, указанного сразу после Disk во второй строке. Затем просто добавьте номер раздела в конце этого. Итак, имя устройства для раздела, который содержит мой / файловая система /dev/sda1, Вот две строки, где я нашел эту информацию:

      Disk /dev/sda: 21.5GB
       1      1049kB  20.4GB  20.4GB  primary   ext4            boot
    • Если у вас есть более одного физического диска, вы получите более одного списка, как показано выше. Но если у вас не установлена ​​другая Unix-подобная система, вероятно, у вас будет только один диск, содержащий ext4 разделы, по крайней мере, не создавая их намеренно на другом диске. Если у вас есть несколько дисков с ext4 разделы, то ext4 раздел, содержащий ваши / файловая система, вероятно, находится на диске, который также содержит linux-swap раздел.

    • Возможно, что ваша система Ubuntu / Файловая система находится на разделе типа, отличного от ext4, Когда это происходит, это почти всегда ext3 и почти всегда на довольно старой системе. Это очень редко случается, если вы не намеренно настроили все таким образом.

    Запомните имя устройства раздела, который содержал ваш / файловая система (или запишите ее). Если это отличается от /dev/sda1 , тогда ты заменишь /dev/sda1 с этим в шагах ниже.

    (Если бы выглядело так как у вас есть отдельный /boot раздел, запомните имя устройства для этого тоже.)

  7. Смонтировать / файловая система /mnt и смонтировать его /dev файловая система:

    sudo mount /dev/sda1 /mnt
    sudo mount --bind /dev /mnt/dev
  8. Проверьте, не имеет ли поврежденная система Ubuntu, которую вы восстанавливаете, отдельный /boot перегородка, которая должна быть установлена ​​отдельно. (Если вы уверены, что это не так, вы можете пропустить это.)

    Чтобы проверить, запустите:

    ls /mnt/boot
    

    Если есть выход (как grub memtest86+.bin memtest86+_multiboot.bin, но не обязательно именно так), то сломанная система /boot находится на том же разделе, что и его / и вам не нужно ничего монтировать, чтобы получить к нему доступ.

    Но если нет выхода, то вам придется смонтировать /boot файловая система:

    sudo mount BOOT-PARTITION /mnt/boot

    замещать BOOT-PARTITION с именем устройства /boot раздел (см. шаг 6 выше).

  9. chroot в сломанную систему, смонтируйте оставшиеся важные виртуальные файловые системы и установите некоторые важные переменные среды:

    sudo chroot /mnt
    mount -t proc none /proc
    mount -t sysfs none /sys
    mount -t devpts none /dev/pts
    export HOME=/root
    export LC_ALL=C
    
  10. Определите, работает ли доступ в Интернет изнутри chroot от ping Используя некоторый надежный хост, который, как известно, нормально реагирует на пинги:

    ping -c 5 www.google.com
    

    Вы должны увидеть что-то вроде этого:

    PING www.l.google.com (74.125.131.147) 56(84) bytes of data.
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=1 ttl=44 time=61.3 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=2 ttl=44 time=62.3 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=3 ttl=44 time=61.8 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=4 ttl=44 time=63.8 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=5 ttl=44 time=66.6 ms
    
    --- www.l.google.com ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 4006ms
    rtt min/avg/max/mdev = 61.367/63.212/66.608/1.897 ms
    
    • Если это выглядит в основном так, а число до % packet loss меньше 100, то подключение к интернету в chroot работает:

      5 packets transmitted, 5 received, 0% packet loss, time 4006ms

      Это работает, так что вы можете пропустить шаг 11.

    • Если это выглядит в основном так, а число до % packet loss 100, соединение требует устранения неполадок. Убедитесь, что соединение в системе Live CD (например, через веб-браузер, или запустив ту же команду в отдельной, не chroot Терминал вкладка / окно) работает. Убедитесь, что вы вводите команду правильно. использование www.google.com если ты не был

    • Если вывод не похож на выше, но вместо этого говорит ping: unknown host www.google.com то сеть еще не работает в chroot,

  11. Настройте сеть в chroot, Пропустите этот шаг, если вы не получили unknown host ошибка в шаге 10 выше.

    Чтобы настроить сеть, сделайте резервную копию сломанной системы hosts файл и скопировать в систему Live CD hosts а также resolv.conf файлы. (Вам не нужно резервировать версию сломанной системы resolv.conf, поскольку этот файл автоматически восстанавливается на лету.)

    Откройте новую вкладку "Терминал" (Ctrl + Shift + T) или, если хотите, новое окно "Терминал" (Ctrl + Shift + N или просто Ctrl + Alt + T). Запустите эти команды в нем:

    sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
    sudo cp /etc/hosts /mnt/etc/hosts
    sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
    exit
    

    (The exit Команда в конце закрывает новую вкладку / окно.)

    Повторите шаг 10 выше, чтобы убедиться, что доступ к Интернету теперь работает из chroot, Должно.

  12. Выясните, какой пакет ядра должен быть установлен. Обычно это будет linux-image-generic, Но не всегда.

    Если вы не уверены, какую установку установить, это будет зависеть отчасти от того, какую версию Ubuntu вы установили, а отчасти от другой информации. Если вы не уверены, какой выпуск Ubuntu вы установили, выясните, запустив эту команду (в chroot, а не в отдельном окне / вкладке терминала):

    lsb_release -r
    
    • В Ubuntu 12.10 (следующий выпуск Ubuntu, который в настоящее время находится в разработке), он всегда будет linux-image-generic, (Смотрите это, это и это.)

    • На Ubuntu 12.04 LTS вероятные возможности linux-image-generic а также linux-image-generic-pae, (В отличие от предыдущих версий, 12.04 больше не имеет отдельных ядер сервера и рабочего стола.)

      • Если установленная система Ubuntu (которую вы исправляете) является 64-битной версией, используйте linux-image-generic, (linux-image-generic-pae относится только к 32-битным системам.)

        Возможно установить 32-битную систему Ubuntu на 32-битном или 64-битном компьютере. Кроме того, вы можете использовать 32-битный или 64-битный live CD для исправления 32-битной установленной системы. Поэтому, если вы не знаете, является ли установленная система Ubuntu 32-разрядной или 64-разрядной, проверьте, выполнив эту команду (в chroot, а не в отдельном окне / вкладке терминала):

        dpkg-architecture -qDEB_HOST_ARCH_BITS
        

        Выход будет либо 32 или же 64,

        (Обратите внимание, что uname -m неверный способ найти эту информацию, потому что даже при запуске в chroot , которая расскажет вам архитектуру работающего ядра, которое является ядром системы live CD, а не ядром установленной (сломанной) системы.)

      • Если установленная система Ubuntu (которую вы исправляете) является 32-битной версией, лучшее ядро ​​для использования будет зависеть от того, сколько у вас оперативной памяти. Рекомендую:

        • linux-image-generic если у вас менее 3 ГБ оперативной памяти
        • linux-image-generic-pae если у вас 3 ГБ ОЗУ или больше.

        (Именно так установщик Ubuntu выбирает тот, который нужно установить, с тех пор, как установщик получил возможность устанавливать ядра PAE. См. Решение этой ошибки. Если вы хотите узнать, что такое PAE, см. Эту статью в Википедии. Если вы хотите узнайте о PAE в Ubuntu, см. эту вики-страницу Ubuntu.)

        Если вы не знаете, сколько у вас ОЗУ, выполните эту команду, чтобы узнать:

        grep MemTotal /proc/meminfo
        

        Это указано в килобайтах. Чтобы преобразовать в гигабайты, разделите на 1 048 576 (1024 2).

        • 3 гигабайта = 3 145 728 кБ
    • В выпусках Ubuntu до 12.04 вероятные возможности linux-image-generic, linux-image-generic-pae, а также linux-image-server,

      • Если вы используете систему Ubuntu Server, используйте linux-image-server,
      • В противном случае следуйте приведенным выше советам для систем 12.04.
  13. Это момент, которого вы так долго ждали! Установите ядро ​​в сломанной системе.

    (Как и раньше, за исключением случаев, когда явно указано иное, эти команды выполняются в chroot, а не в отдельном окне терминала / таб.)

    apt-get update
    apt-get -y install linux-image-generic

    замещать linux-image-generic с любым другим пакетом ядра, который вы решили установить на шаге 12 выше, если он отличается.

  14. Если вам пришлось выполнить шаг 11, чтобы настроить сеть в chroot, восстановить старое hosts файл. Если вы пропустили шаг 11, пропустите этот шаг тоже.

    Чтобы восстановить его, запустите эту команду:

    cp /etc/hosts.old /etc/hosts
    
  15. Размонтировать файловые системы, exit выход из chroot:

    umount /proc || umount -lf /proc
    umount /sys /dev/pts
    exit
    sudo umount /mnt/dev /mnt
    
  16. Выключите систему live CD/DVD/USB, извлеките live CD / DVD или флэш-накопитель USB. Загрузите систему, установленную на жестком диске, который вы только что отремонтировали. Вы установили в него пакет ядра (и в процессе установки его ядро ​​будет добавлено обратно в загрузочное меню GRUB2). Если все работает правильно, ваша система должна загрузиться без проблем. (Думаю, на этот раз загрузка может занять немного больше времени, чем обычно.)

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не проверял вышеописанную процедуру на каждой возможной системе Ubuntu, поэтому возможно, что в ней есть ошибка, которую я не идентифицировал.

В будущем я рекомендую всегда пытаться сохранить два установленных ядра. Хорошо иметь два на случай, если один из них перестанет работать по любой причине (вы можете выбрать другой в меню загрузки GRUB2). Кроме того, если вы намереваетесь сохранить два ядра и случайно удалили еще одно ядро ​​и перезагрузиться, у вас все еще остается одно для загрузки.

Я просто хотел добавить свой опыт, который я прошел сегодня в повышении до Вилли. Я немного прибрался, и я обнаружил, что у меня только один тест. Google привел меня к пониманию, что я удалил ядра. У меня было одно ограничение - медленная сеть, поэтому загрузка полного ISO не была вариантом. Поэтому я использовал Ubuntu Minimal CD (только 40 МБ) и загрузился на нем. После определения аппаратной опции (которая помогла мне подключиться к беспроводной сети) я перешел к опции оболочки. Я следовал инструкциям @Lekensteyn, и мне это удалось. Несколько вещей, хотя: вы должны скопировать resolv.conf перед переходом к chroot, иначе ваш DNS будет испорчен, и, поскольку вошедший в систему пользователь не имеет root, sudo нигде не нужен.

Я знаю его старый, но я думал, что добавление этого ответа добавит ценность тем, кто столкнется с проблемой.

Когда я удалил свое ядро, я нашел это решение на форумах Ubuntu. Я следил за каждым шагом, и система была восстановлена. Надеюсь, это поможет вам.

Chroot может работать, chroot означает, что при запуске системы вы меняете корневую файловую систему. Например, вы начали с живого CD, но изменили корень "/" на тот, где установлена ​​ваша Ubuntu.

Допустим, ваша Ubuntu установлена ​​в /dev/sda2, тогда вы можете попробовать следующие команды:

Код:

sudo mount /dev/sda2 /mnt
sudo cp /etc/resolv.conf /mnt/etc/
sudo cp /etc/hosts /mnt/etc/
sudo mount --bind /dev/ /mnt/dev
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

теперь вы root "/" на /dev/sda2, попробуйте установить ядро

apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub

Я должен был сделать небольшую догадку здесь, так как я никогда не должен был делать это раньше, но это должно быть об этом. Не знаю, если вы получаете предупреждение об ошибке fstab (например, не могу найти root).

Теперь вам нужно почистить некоторые вещи и размонтировать смонтированные разделы: Код:

rm /etc/resolv.conf
rm /etc/hosts
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
umount /proc # if this doesn't work try umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount /mnt

И вы можете перезагрузиться, чтобы увидеть, сработало ли это.

URL для ветки: http://art.ubuntuforums.org/showthread.php?t=1688928

После того, как я вчера удалил старые ядра из Trusty14.04 (FTR: я не удалил два самых последних!), Моя система больше не загружалась. GRUB показал

Error: File not found
Error: You need to load the kernel first

Понятия не имею почему.

Затем я следовал прекрасным инструкциям Элии Кагана, чтобы установить linux-image-generic с живого CD. Было установлено 150 МБ нового ядра, но, к сожалению, это не решило проблему.

К счастью, я нашел эту страницу. Boot-Repair инструмент понял все правильно, моя система снова работает.

Другие вопросы по тегам