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

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

77
задан 13 February 2014 в 06:23

5 ответов

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

  1. Open Terminal
  2. Mount the Ubuntu partition: монтирование садо /dev/sdXY /mnt
  3. монтирование специальных разделов:

    монтирование садо --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/proc
    судо-маунт / мнт/дев
    судо-гора
    
  8. Перезагрузите и извлеките компакт-диск или USB: sudo reboot
106
ответ дан 13 February 2014 в 06:23

Эта расширенная процедура учитывает большинство сложностей, которые могут возникнуть, в том числе проблемы с подключением к Интернету в 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
    

    Вы увидите нечто подобное (но это не будет точно так):

     Модель: VMware, VMware Virtual S (scsi)
    Диск /dev/sda: 21,5 Гб
    Размер сектора (логический/физический): 512B/512B
    Таблица разделов: мсдос
    
    Количество Начало Размер конца Тип Файловая система Флаги
     1 1049kB 20.4GB 20.4GB первичная загрузка ext4
     2 20,4 ГБ 21,5 ГБ 1072 МБ расширены
     5 20.4 ГБ 21.5 ГБ 1072 МБ логический линукс-своп(v1)
    
    
    Внимание: Невозможно открыть /dev/sr0 read-write (файловая система только для чтения). /dev/sr0
    был открыт только для чтения.
    Ошибка: Не может быть раздела за пределами диска!
    
  6. Изучите полученный результат, чтобы определить имя устройства раздела, содержащего / файловую систему системы Ubuntu, установленной на жестком диске (который вы ремонтируете).

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

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

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

    • Имя устройства для раздела начинается с имени устройства для физического диска, которое указано непосредственно после Disk во второй строке. Затем просто добавьте номер раздела в конец. Таким образом, имя устройства для раздела, содержащего файловую систему my /, будет /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
    гора -t proc none /proc
    mount -t sysfs none /sys
    mount -t devpts none /dev/pts
    экспорт HOME=/корень
    экспорт LC_ALL=C
    
  10. Определите, работает ли доступ в Интернет из chroot с помощью pingна каком-нибудь надежном хосте, который, как известно, нормально реагирует на пинг:

    ping -c 5 www.google.com.
    

    Вы должны увидеть нечто подобное:

    PING www.l.google.com (74.125.131.147) 56(84) байт данных.
    64 байта из vc-in-f147.1e100.net (74.125.131.147): icmp_req=1 ttl=44 время=61.3 ms
    64 байта из vc-in-f147.1e100.net (74.125.131.147): icmp_req=2 ttl=44 время=62.3 мс
    64 байта из vc-in-f147.1e100.net (74.125.131.147): icmp_req=3 ttl=44 время=61.8 ms
    64 байта из vc-in-f147.1e100.net (74.125.131.147): icmp_req=4 ttl=44 время=63.8 ms
    64 байта из vc-in-f147.1e100.net (74.125.131.147): icmp_req=5 ttl=44 время=66.6 ms
    
    --- www.l.google.com пинг-статистика ---
    5 переданных пакетов, 5 полученных, 0% потеря пакетов, время 4006мс
    rtt мин/авг/макс/мдев = 61,367/63.212/66.608/1,897 мс
    
    • Если это выглядит в основном так, и число до % потери пакетов меньше 100, то Интернет-соединение в chroot работает:

      5 пакетов передано, 5 получено, 0% потери пакетов , время 4006ms

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

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

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

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

    Для настройки сети создайте резервную копию файла хостов поврежденной системы и скопируйте ее в файлы хостов и resolv.conf системы компакт-дисков с живыми файлами. (Резервное копирование версии resolv.conf поврежденной системы не требуется, так как этот файл автоматически регенерируется "на лету". )

    Откройте новую вкладку Terminal tab (Ctrl+Shift+T) или, если хотите, a новое окно терминала (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 в конце закрывает новую закладку/окон.)

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

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

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

    lsb_release -r
    
    • На Ubuntu 12.10 (следующий релиз Ubuntu, в настоящее время в разработке), он всегда будет линукс-изображение-генерический. (См. этот, этот, и этот.)

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

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

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

        dpkg-архитектура -qDEB_HOST_ARCH_BITS
        

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

        (Пожалуйста, обратите внимание, что uname -m is not is a correct way to find this information, because even when run in the chroot, that will tell you the architecture of the running kernel, which is the live CD system's kernel, а не the installed (broken) system's kernel. )

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

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

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

        Если вы не знаете, какой объем оперативной памяти у вас есть, запустите эту команду, чтобы узнать:

        grep MemTotal /proc/meminfo
        

        Это указано в килобайтах . Для преобразования в гигабайт разделите на 1 048 576 (10242).

        • 3 гигабайта = 3 145 728 кБ
    • О выпуске Ubuntu до 12. 04, вероятными возможностями являются линукс-изображение-генерическое , линукс-изображение-генерическое-паэ и линукс-изображение-сервер .

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

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

    apt-get update
    apt-get -y установите linux-image-generic

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

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

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

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

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

DISCLAIMER: Я не тестировал вышеописанную процедуру на всех возможных Ubuntu системах, так что, возможно, в ней есть ошибка, которую я не обнаружил.

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

61
ответ дан 13 February 2014 в 06:23

Когда я удалил свое ядро, я нашел это решение на форумах 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

Теперь Вы корневой "/" в /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

0
ответ дан 13 February 2014 в 06:23

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

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

Не знаю почему.

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

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

0
ответ дан 13 February 2014 в 06:23

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

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

0
ответ дан 13 February 2014 в 06:23

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

Похожие вопросы: