在 Ubuntu 上安裝 Windows 後,我試圖修復我的 GRUB 。但我無法修復它並且問了這個問題。和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
錯誤。 - 我重新啟動了系統,但沒有任何變化。
/bin/mapdevfs
我用指令發現了mapdevfswhich 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
,它在加載畫面上凍結並且我收到此錯誤:(滾動鎖和數字鍵盤(的第一個鍵閃爍。
當我選擇其他內核版本時 - 其中以前的 ubuntu 版本screen- ,我遇到了他們兩個的錯誤。
註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
您是否可以啟動目前的安裝任何您的系統上安裝了哪些核心?
看著你的與 普蘇西 聊天有一個帶有連結的訊息到引導修復膏 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)'
您是否嘗試過所有這些方法,並且它們都以相同的方式失敗嗎?我只是想知道其中一個是否允許您成功啟動,然後也許您可以透過清除/卸載失敗的核心然後重新安裝來恢復。
4月24日
根據引導修復膏 938724,在探測時update-grub
在您的資料夾中找到了這些條目。/boot
至少這是引導修復在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
內核條目。看看啟動它們時會發生什麼。
4月26日
越來越好奇。好的,ELFCLASS32
再代替 64。不知道還能做什麼,我建議您按照您在您的過程中所經歷的程序進行操作與 普蘇西 聊天。
- 啟動適用於 64 位元 (AMD64) Ubuntu 11.10 的 Live CD/USB。
- 安裝然後
chroot
進入損壞的 Ubuntu 安裝目錄/dev/sda3
。然後運行apt-get
以重新安裝正確的 64 位元版本的libnih.so.1
.
# 將 /dev/sda3 掛載為 /mnt/ubu2fix mkdir /mnt/ubu2fix 須藤掛載 /dev/sda3 /mnt/ubu2fix # chroot 使 '/mnt/ubu2fix' 變成 '/' 以進行指令處理 對於 /sys /proc /run /dev 中的 i;執行 sudo mount --bind "$i" "/mnt/ubu2fix/$i";完畢 須藤 chroot /mnt/ubu2fix # 重新安裝包含 libnih1.so.1.0.0(又稱 libnih1.so.1)的軟體包 apt-get -V --reinstall 安裝 libnih1
然而,前當你這樣做時chroot
,你可能會先想試著找出到底有多少其他 ELFCLASS32
文件可能存在並且(可能)需要修復。我認為下面的命令可以做到這一點。
下面的命令對Ubuntu安裝file
目錄中的每個檔案運行命令/bin
。將輸出限制為 32 位元可執行檔。 /sbin
/lib
/lib64
/dev/sda3
grep
如果一切正確,那麼這些命令應該產生 **NO輸出。 ** 執行這些命令時列出的任何檔案都是 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
。)
4月29日
我看著你的註1。
很抱歉沒有早點注意到您的評論
“/mnt/ubusda3/lib/modules/3.0.0-12-generic/
和中的所有檔案 /mnt/ubusda3/bin
都是 32 位元。“
我當然沒想到會是這樣。
」是否可以重新安裝整個核心檔案?」
我不確定你在問什麼。 (但即使我這樣做了,我也不確定我是否知道該怎麼做。抱歉。)
5 月 1 日 - 考慮從 11.10 升級安裝到 11.10
以前,當我讀到 @Alvar 的評論建議進行安裝以恢復您的系統時,我認為這意味著您當前的設定會被破壞,所以我忽略了它。現在我不太確定了。
事實證明,在像您這樣的情況下,Ubuntu 和 Windows 安裝在同一硬碟上的不同分割區中,Ubuntu 安裝程式會詢問您想要執行哪種類型的安裝,如下圖所示。
我嘗試過做一個升級安裝在 VirtualBox VM 中從 11.10 到 11.10 可以更好地了解它的功能。它似乎像它聲稱的那樣工作。我確實有一些警告,已在下面列出。
對於是否應該重新安裝,我無法向您提供任何建議。我不知道你的情況,也不知道你手邊有或沒有什麼資源。
一些注意事項:
- 您必須小心輸入您當前的使用者身分安裝提示時。如果您輸入不同的使用者 ID,舊的使用者 ID 將會被刪除。您將無法使用它登入。這個問題對此進行了更詳細的描述:如何使用舊的主資料夾恢復已刪除的使用者名稱?
- 如果您選擇這樣做
Download updates while installing
,安裝顯然會執行相當於apt-get dist-upgrade
.在升級安裝之前,我有 8 個待處理的升級。完成後,有 0 個更新待處理,並且已安裝新核心 3.0.0-19-generic。 - 火狐看起來不錯。我的密碼、歷史記錄和書籤似乎已保留。我的 Google Chrome 瀏覽器的應用程式部分已被刪除,但其中的用戶資料並未被刪除。因此,在我重新安裝 Chrome 後,我的設定、書籤等也在 Chrome 中正常運作。
- 雖然一切似乎都運作良好,但最安全的做法是一如既往,在開始安裝之前備份 Ubuntu 分割區中的資料。你是唯一知道您的資料對您有多大價值的人。因此,您是唯一知道自己願意承擔或不願意承擔哪些風險的人。
答案3
你需要嘗試發行版《Ubuntu 救援混音版》並從 cd/usb 即時啟動,可以使用應用程式修復 Grub 或偵測另一個作業系統。
It is very easy to use, I working great for me.
可以在這裡取得 Rescue iso:
答案4
當我更改BIOS
設定時,我遇到了這個問題。如果您更改了 BIOS 設置,或者即使沒有更改,也只是重置BIOS
為預設值並將結果回覆給我們。