Я пытался восстановить свой GRUB после установки Windows поверх Ubuntu. Но я не смог его восстановить изадал этот вопрос.Во время обсуждения с psusi, мы замечаем кое-что. Моя установленная система 64-битная, но некоторые файлы библиотек 32-битные (например: libdevmapper.so.1.02.1
).
(Вы можете проверить шаг 13 для моего вопроса. И проверить другие шаги, чтобы увидеть, какие шаги я выполнил.)
- Мой старый Ubuntu был установлен на
/dev/sda3
. Я смонтировал его на/mnt/ubusda3
root@ubuntu:/home/ubuntu# file /mnt/ubusda3/sbin/init /mnt/ubusda3/sbin/init: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
root@ubuntu:/home/ubuntu# file /mnt/ubusda3/lib/libdevmapper.so.1.02.1 /mnt/ubusda3/lib/libdevmapper.so.1.02.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
sudo dpkg --root=/mnt/ubusda3 -i /mnt/ubusda3/var/cache/apt/archives/libbz2-1.0_1.0.5-6ubuntu1.11.10.1_amd64.deb
chroot /mnt/ubusda3
apt-get install --reinstall libdevmapper1.02.1
- И затем я снова попытался и
update-grub
получилmapdevfs: error while loading shared libraries: libdebian-installer.so.4: cannot open shared object file: No such file or directory
ошибку. - Я перезапустил систему, но ничего не изменилось.
- я нашел mapdevfs
/bin/mapdevfs
с помощьюwhich mapdevfs
команды. sudo rm /bin/mapdevfs
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt/ubusda3$i"; done
grub-install /dev/sda
- Наконец-то я исправил проблему с GRUB. Теперь во время загрузки есть меню GRUB. Экран предыдущих версий Linux (и пыль)
Но когда я выбираю Ubuntu 3.0.0.17-generic
, он зависает на экране загрузки и я получаю эту ошибку : (Прокрутка БлокировкаиNum Lockмигает.)
Когда я выбираю другие версии ядра - которые впредыдущие версии ubuntuscreen-, я получаю эту ошибку для обоих.
Примечание 1 (для иррационального Джона)
ubuntu@ubuntu:~$ sudo su
root@ubuntu:/home/ubuntu# mkdir /mnt/ubusda3
root@ubuntu:/home/ubuntu# mount /dev/sda3 /mnt/ubusda3
root@ubuntu:/home/ubuntu# for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt/ubusda3$i"; done
root@ubuntu:/home/ubuntu# chroot /mnt/ubusda3/
root@ubuntu:/# apt-get -V --reinstall install libnih
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libnih
а потом я заметил, что это libnih1
не так linbih
(http://packages.ubuntu.com/search?keywords=libnih&searchon=names&suite=oneiric§ion=all)
root@ubuntu:/# apt-get -V --reinstall install libnih1
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
winbind (3.5.11~dfsg-1ubuntu2.2)
The following packages will be upgraded:
winbind (3.5.11~dfsg-1ubuntu2.1 => 3.5.11~dfsg-1ubuntu2.2)
1 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
6 not fully installed or removed.
Need to get 54.7 kB/5,693 kB of archives.
After this operation, 32.8 kB disk space will be freed.
Do you want to continue [Y/n]? y
WARNING: The following packages cannot be authenticated!
libnih1
Install these packages without verification [y/N]? y
Get:1 http://tr.archive.ubuntu.com/ubuntu/ oneiric/main libnih1 amd64 1.0.3-4ubuntu2 [54.7 kB]
Fetched 54.7 kB in 0s (57.1 kB/s)
Can not write log, openpty() failed (/dev/pts not mounted?)
(Reading database ... 196784 files and directories currently installed.)
Preparing to replace winbind 2:3.5.11~dfsg-1ubuntu2.1 (using .../winbind_2%3a3.5.11~dfsg-1ubuntu2.2_amd64.deb) ...
/sbin/runlevel: error while loading shared libraries: libnih.so.1: wrong ELF class: ELFCLASS32
* Stopping the Winbind daemon winbind
...done.
Unpacking replacement winbind ...
Preparing to replace libnih1 1.0.3-4ubuntu2 (using .../libnih1_1.0.3-4ubuntu2_amd64.deb) ...
Unpacking replacement libnih1 ...
Processing triggers for man-db ...
Processing triggers for ureadahead ...
ureadahead will be reprofiled on next reboot
Can not write log, openpty() failed (/dev/pts not mounted?)
Setting up libwbclient0 (2:3.5.11~dfsg-1ubuntu2.2) ...
Setting up samba-common (2:3.5.11~dfsg-1ubuntu2.2) ...
Setting up winbind (2:3.5.11~dfsg-1ubuntu2.2) ...
* Starting the Winbind daemon winbind
/usr/sbin/winbindd: error while loading shared libraries: libcap.so.2: wrong ELF class: ELFCLASS32
...fail!
invoke-rc.d: initscript winbind, action "start" failed.
dpkg: error processing winbind (--configure):
subprocess installed post-installation script returned error exit status 127
Setting up libsmbclient (2:3.5.11~dfsg-1ubuntu2.2) ...
Setting up samba-common-bin (2:3.5.11~dfsg-1ubuntu2.2) ...
Setting up smbclient (2:3.5.11~dfsg-1ubuntu2.2) ...
Setting up libnih1 (1.0.3-4ubuntu2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Errors were encountered while processing:
winbind
E: Sub-process /usr/bin/dpkg returned an error code (1)
На этот раз я получаю ту же ошибку загрузки libnih-dbus.so....
файла.
Также для поиска других 32-битных файлов я выполнил ваши команды и вижу все файлы в /mnt/ubusda3/lib/modules/3.0.0-12-generic/
и/mnt/ubusda3/bin
32 бит.
Можно ли переустановить все файлы ядра?
решение1
ОК, я попробовал все ответы, все. Но я не смог решить свою проблему. И в конце концов я переустановил Ubuntu.
решение2
Можете ли вы загрузить текущую установку с помощьюлюбойядер, установленных в вашей системе?
Глядя на вашчат с псусиEстьсообщение со ссылкойкпаста для ремонта багажника 938724. Он показывает созданное вами меню GRUB с записями для
'Ubuntu, with Linux 3.0.0-17-generic'
'Ubuntu, with Linux 3.0.0-17-generic (recovery mode)'
'Ubuntu, with Linux 3.0.0-16-generic'
'Ubuntu, with Linux 3.0.0-16-generic (recovery mode)'
'Ubuntu, with Linux 3.0.0-12-generic'
'Ubuntu, with Linux 3.0.0-12-generic (recovery mode)'
Вы пробовали их все и все они одинаково не срабатывают? Мне просто интересно, если один из них позволяет вам успешно загрузиться, то, возможно, вы сможете восстановиться, очистив/удалив ядро, которое не срабатывает, а затем переустановив его.
24 апреля
В соответствии спаста для ремонта багажника 938724, update-grub
нашел эти записи в вашей /boot
папке, когда он зондировал. По крайней мере, это то, что boot-repair нашел в sda3/boot/grub/grub.cfg
.
Что вы видите в меню GRUB при загрузке? Похоже на следующее?
Ubuntu, with Linux 3.0.0-17-generic
Ubuntu, with Linux 3.0.0-17-generic (recovery mode)
Previous Linux versions
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Windows 7 (loader) (on /dev/sda4)
(Если при загрузке не отображается меню GRUB, попробуйте нажать/удерживать клавишу shiftво время начала процесса загрузки, чтобы отобразить меню.)
Если вы видите меню GRUB с записью Previous Linux versions
, попробуйте выбрать эту запись и нажать enter. Вы должны увидеть еще одно меню с записями для 3.0.0-16
и 3.0.0-12
ядер. Посмотрите, что произойдет, когда вы загрузите их.
26 апреля
Все страньше и страньше. Хорошо, так что ELFCLASS32
вместо 64 снова. Не зная, что еще делать, я предлагаю вам следовать процедуре, которую вы прошли во время вашегочат с псуси.
- Загрузите Live CD/USB для 64-битной (AMD64) Ubuntu 11.10.
- Смонтируйте и затем
chroot
в сломанную установку Ubuntu в/dev/sda3
. Затем запуститеapt-get
, чтобы переустановить правильную 64-битную версиюlibnih.so.1
.
# монтируем /dev/sda3 как /mnt/ubu2fix mkdir /mnt/ubu2fix sudo монтируем /dev/sda3 /mnt/ubu2fix # chroot, чтобы '/mnt/ubu2fix' стал '/' для обработки команд для i в /sys /proc /run /dev; выполнить sudo mount --bind "$i" "/mnt/ubu2fix/$i"; готово sudo chroot /mnt/ubu2fix # переустановить пакет, содержащий libnih1.so.1.0.0 (он же libnih1.so.1) apt-get -V --reinstall установить libnih1
Однако,довы делаете chroot
, вы можете сначала попытаться выяснить, сколькодругой ELFCLASS32
Файлы могут присутствовать и (потенциально) требовать исправления. Я думаю, что команды ниже сделают это.
Приведенные ниже команды запускают file
команду для каждого файла в каталогах /bin
, /sbin
, /lib
, и /lib64
на вашей установке Ubuntu в /dev/sda3
. grep
Ограничивает вывод 32-битными исполняемыми файлами.
Если все правильно, то эти команды должны выдать **НЕТoutput.** Любые файлы, перечисленные при запуске этих команд, являются 32-битными, хотя должны быть 64-битными. Их (вероятно) нужно будет переустановить, чтобы ваша система работала правильно.
sudo find /mnt/ubu2fix/bin -type f -exec file '{}' \; | grep 32-bit
sudo find /mnt/ubu2fix/sbin -type f -exec file '{}' \; | grep 32-bit
sudo find /mnt/ubu2fix/lib -type f -exec file '{}' \; | grep 32-bit
sudo find /mnt/ubu2fix/lib64 -type f -exec file '{}' \; | grep 32-bit
Выполните команды вышепослемонтируется /dev/sda3
как /mnt/ubu2fix
, нодовы делаете chroot
. (Или запускаете их в другом терминале, который находится за пределами chroot
.)
29 апреля
Я посмотрел на твойПримечание 1.
Извините, что не заметил раньше ваш комментарий о том, что
"все файлы в /mnt/ubusda3/lib/modules/3.0.0-12-generic/
и /mnt/ubusda3/bin
являются 32-битными.«
Я, конечно, не ожидал, что это так.
"Можно ли переустановить все файлы ядра?"
Я не совсем понимаю, о чем вы спрашиваете. (Но даже если бы я и знал, я не уверен, что знаю, как это сделать. Извините.)
01 мая — рассмотрите возможность обновления с версии 11.10 до 11.10
Раньше, когда я читал комментарий от @Alvar, который предлагал выполнить установку для восстановления вашей системы, я предполагал, что это подразумевает уничтожение вашей текущей настройки, поэтому я проигнорировал его. Теперь я не так уверен.
Оказывается, в такой ситуации, как у вас, когда Ubuntu и Windows установлены в разных разделах на одном жестком диске, установщик Ubuntu спросит, какой тип установки вы хотите сделать, как показано на рисунке ниже.
Я пробовал сделатьобновить установитьс 11.10 на 11.10 в VirtualBox VM, чтобы лучше понять, что он делает. Кажется, он работает так, как и заявлено.У меня есть несколько предупреждений, которые я перечислил ниже.
Я не могу дать вам никаких советов о том, стоит ли вам переустанавливать. Я не знаю вашей ситуации или какие ресурсы у вас есть или нет под рукой.
Некоторые предостережения:
- Вы должны быть осторожны, вводя свой текущийID пользователякогда установка запросит его. Если вы введете другой идентификатор пользователя, старый будет удален. Вы не сможете войти с ним. Это описано более подробно в этом вопросе:Как восстановить удаленное имя пользователя, используя его старую домашнюю папку?
- Если вы выберете
Download updates while installing
, то установка, по-видимому, выполняет эквивалентapt-get dist-upgrade
. У меня было 8 ожидающих обновлений до установки обновления. После ее завершения было 0 ожидающих обновлений и было установлено новое ядро, 3.0.0-19-generic. - Firefox, похоже, в порядке. Мои пароли, история и закладки, похоже, сохранились. Часть приложения моего браузера Google Chrome была удалена, но пользовательские данные из нее остались. Поэтому после того, как я переустановил Chrome, мои настройки, закладки и т. д. также работали правильно в Chrome.
- Хотя все, казалось бы, работает хорошо, самым безопасным решением, как всегда, является создание резервной копии данных в разделе Ubuntu перед началом установки.Тыединственный человек, который знает, насколько ценны или не ценны для вас ваши данные. Поэтому вы единственный человек, который знает, на какие риски вы готовы пойти или не пойти.
решение3
Вам нужно попробовать дистрибутив«Ubuntu Rescue Remix»и загрузиться как живой с CD/USB, можно использовать приложение для восстановления Grub или обнаружения другой ОС.
It is very easy to use, I working great for me.
Rescue iso можно получить здесь:
решение4
Я столкнулся с этой проблемой, когда изменил свои BIOS
настройки. Если вы изменили настройки BIOS или даже если нет, просто сбросьте их BIOS
до значений по умолчанию и верните их нам о результате.