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

61

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

    
задан user7242 25.02.2011 в 22:31
источник

5 ответов

81

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

  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. Chroot в /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
ответ дан Lekensteyn 25.02.2011 в 22:41
источник
49

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

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

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

  1. Загрузка с живого CD / DVD-диска Ubuntu или Live 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. Изучите полученный результат, чтобы определить имя устройства раздела, содержащего % файловой системы co_de% . Ubuntu, установленный на жестком диске (который вы ремонтируете).

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

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

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

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

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

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

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

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

  7. Установите файловую систему /boot на / и смонтируйте файловую систему /mnt :

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

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

    ls /mnt/boot
    

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

    Но если выход отсутствует, вам нужно смонтировать файловую систему / :

    sudo mount BOOT-PARTITION /mnt/boot

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

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

    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 на chroot некоторый надежный хост, который, как известно, обычно отвечает на пинги:

    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
    
    • Если это выглядит в основном так, и число до ping меньше 100, то работает интернет-соединение в % packet loss :

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

      Он работает, поэтому вы можете пропустить шаг 11 .

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

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

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

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

    Откройте вкладку новой вкладки ( Ctrl + Shift + T )), или, если хотите, новое окно терминала ( Ctrl + Shift + N ) или просто Ctrl + < KBD> 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
    

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

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

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

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

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

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

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

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

        dpkg-architecture -qDEB_HOST_ARCH_BITS
        

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

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

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

        • chroot , если у вас меньше 3 ГБ ОЗУ.
        • linux-image-generic , если у вас 3 ГБ ОЗУ или более.

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

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

        grep MemTotal /proc/meminfo
        

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

        • 3 концерта = 3,145,728 kB
    • В выпуске Ubuntu до 12.04 вероятными возможностями являются linux-image-generic-pae , linux-image-generic и linux-image-generic-pae .

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

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

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

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

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

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

    cp /etc/hosts.old /etc/hosts
    
  15. Отключите файловые системы, hosts из exit :

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

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

    
ответ дан Eliah Kagan 20.07.2012 в 15:58
0

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

Chroot может работать, chroot означает, что при запуске системы вы меняете корневую файловую систему. Например, вы начали с живого компакт-диска, но вы изменили корень «/» на место установки вашего 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-адрес для потока: Ссылка

    
ответ дан Melvin 26.02.2011 в 12:23
0

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

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

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

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

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

    
ответ дан leftaroundabout 16.07.2015 в 11:00
0

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

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

    
ответ дан Stefano Mtangoo 14.04.2016 в 20:28