Восстановление поврежденного Ubuntu

Ситуация: Однажды мой твердотельный накопитель вышел из строя и случайно удалил много файлов, состоящих из некоторых файлов ОС. Ущерб был достаточно велик, что делало ОС не способной загружаться и даже не иметь возможности выполнять синхронизацию.

К счастью, у меня была другая Ubuntu на другом диске, и я смог восстановить chroot, а затем загрузить и сетевую функциональность поврежденной ОС. Затем я загрузил поврежденную ОС и запустил скрипт, который переустанавливал каждый пакет, установленный на нем (с apt-get install <package> --reinstall), это было не так просто, как я описал, было много пакетов, которые требовали особого внимания.

1113 После этого почти все в порядке, за исключением запуска 32-битных двоичных файлов, таких как wine и adb. Мне нужен эксперт в этой области, чтобы сказать мне, что я должен сделать, чтобы восстановить выполнение 32-битных двоичных файлов.

Например, предположим, что я хочу запустить wine: сначала давайте запустим его на fish:

# wine
Failed to execute process '/usr/bin/wine'. Reason:
The file '/usr/bin/wine' does not exist or could not be executed.

Теперь давайте запустим его на bash:

# wine
bash: /usr/bin/wine: No such file or directory

. полное местоположение:

# whereis wine
wine: /usr/bin/wine /usr/bin/X11/wine /usr/share/wine /usr/share/man/man1/wine.1.gz
# /usr/bin/wine
bash: /usr/bin/wine: No such file or directory

Посмотрим, существует ли файл на самом деле:

# ls -l /usr/bin/wine
-rwxr-xr-x 1 root root 9748 Dec 18 05:11 /usr/bin/wine

Что ldd и file говорят:

# ldd /usr/bin/wine
    not a dynamic executable
# file /usr/bin/wine
/usr/bin/wine: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xe4e2fb58bdbbbc2dedf7483825900ed35a6dc989, stripped

Как Чтобы решить эту проблему?

Поврежденной ОС является Ubuntu 13.10 amd64.

6
задан 28 January 2014 в 17:42

3 ответа

Ожидаются результаты ldd, поскольку «бинарный» - это всего лишь скрипт:

$ file /usr/bin/wine
/usr/bin/wine: POSIX shell script, ASCII text executable
$ head /usr/bin/wine 
#!/bin/sh

set -e

wine=/usr/bin/wine32
if test "$(file -b -L "$1" | cut -d\  -f1)" = "PE32+" -o "$WINEARCH" = "win64"; then
    wine=/usr/bin/wine64
fi

if test -f $wine; then

Итак, каково решение? Удалите их полностью и установите их. На самом деле мы не знаем, какой урон существует, поэтому удаление и переустановка является наиболее безопасным:

sudo apt-get autoremove --purge wine

То же самое с любым пакетом, который не работает. Вы можете проверить пакет, соответствующий двоичному файлу, используя dpkg -S:

➜  ~  dpkg -S /usr/bin/wine
wine: /usr/bin/wine
0
ответ дан 28 January 2014 в 17:42

Выполните

sudo apt-get install libopenal1:i386

или

sudo apt-get install --reinstall libopenal1:i386

По крайней мере, это должно заставить ldd вести себя хорошо. Я не знаю, решит ли это другие проблемы, возможно. Если нет, то я просто посмотрел бы на вывод ldd и установил / переустановил пакеты, содержащие эти библиотеки.

<Ч>
0
ответ дан 28 January 2014 в 17:42

Вы можете использовать Rescatux для ремонта сломанной машины. Вы можете сделать это с загрузочного USB, используя Unetbootin . Надеюсь, что это может решить вашу проблему.

0
ответ дан 28 January 2014 в 17:42

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

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