развивать или вносить вклад в сообщество Ubuntu

Возможно ли это?

Ну, большинство тривиальных и важных утилит установлено в /bin, и теперь вы потеряли доступ ко всем из них. Фактически, если вы перезагрузите компьютер, ваша система больше не сможет загружаться.

В любом случае, мы собираемся исправить проблему и сделать содержимое /bin как можно ближе к тому, где оно было. Единственным отличием будут некоторые символические ссылки, которые мы тоже исправим.


Как?

Во-первых, мы должны chroot в вашу сломанную систему, но с небольшим отличием ! После этого мы получим список установленных пакетов в вашей системе, в которых есть какой-либо установленный файл в каталоге /bin, затем мы будем только загружать необходимые пакеты и извлекать необходимые файлы в /bin. Тогда мы закончим.

Например, после chroot мы можем получить список пакетов, которые установили файлы в /bin, используя:

dpkg --search /bin | cut -f1 -d: | tr ',' '\n'

И мы также можем использовать:

dpkg --listfiles PACKAGE-NAME | grep "^/bin/" # or awk '[111] ~ "^/bin/

[ 1161], чтобы перечислить установленные файлы этими пакетами в /bin.

Затем мы просто создаем список всех необходимых нам пакетов, затем скачиваем их и распаковываем их в /bin с чем-то вроде:

xargs apt download < list-packages
dpkg-deb -x PACKAGE .
mv ./bin/* /bin

Однако мы должны использовать скрипт проверить все установленные пакеты в нашей системе, потому что делать это вручную - просто безумие.

Итак, я написал скрипт, который делает все, что нам нужно. Он находит все необходимые нам пакеты для восстановления /bin, показывает нам имя каждого пакета и связанные с ним файлы, принадлежащие /bin. Вот скриншот:

Screenshot of <code>/bin</code> package list as output by my script

В конце мы решили переустановить все пакеты или только загрузить и извлечь необходимые файлы в /bin (что является рекомендуемой опцией):

Screenshot of options given by my script

Вы можете получить копию этого сценария или загрузить его напрямую .


Давайте запустим

chroot

Загрузите вашу систему с живого диска, который имеет ту же архитектуру, что и установленная вами Ubuntu, откройте терминал и получите root-доступ:

[113 ]

Смонтируйте свою файловую систему root (для меня это /dev/sda1):

mount /dev/sda1 /mnt

Нам понадобится подключение к Интернету, поэтому скопируйте resolv.conf из живой Ubuntu в смонтированный корневой раздел. :

cp /etc/resolv.conf /mnt/etc/resolv.conf

Теперь скопируйте скрипт куда-нибудь в смонтированный раздел, например:

cp /media/ubuntu/usb/restore-bin.sh /mnt/restore-bin.sh

или вы можете скачать его, используя wget и т. Д., Например:

[ 117]

Смонтируйте другие необходимые пути:

mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount -t proc /proc /mnt/proc

И вот небольшая разница : как мы можем chroot сломать систему, когда нет каталога /bin там? Какую оболочку мы должны запустить?

Так что создайте временный каталог bin. Например: с именем bintmp в вашей сломанной системе root:

mkdir /mnt/bintmp

Затем привяжите live /bin к этому:

mount --bind /bin /mnt/bintmp

Загрузитесь в систему при установке /bintmp/bash в качестве оболочки входа:

chroot /mnt /bintmp/bash

Экспортируйте /bintmp в качестве переменной среды PATH:

export PATH=/bintmp:$PATH

Дайте сценарию исполняемый бит:

chmod +x restore-bin.sh

[ 1181] Запустите скрипт:

./restore-bin.sh

Дождитесь завершения поиска и ответьте на вопрос, который мы видели на скриншоте. Он начнет восстанавливать /bin, и мы почти закончили.

После того, как это сделано, используйте CTRL kbd> + D kbd>, чтобы выйти из среды chroot и размонтировать смонтированные пути:

umount -R /mnt

Перезагрузить система. [+1184]

Восстановление ссылок в /bin

Теперь почти все файлы в каталоге /bin вернулись, за исключением примерно 5 символических ссылок, которыми управляет update-alternatives.

В вашей работающей системе запустите:

sudo update-alternatives --all

Она задаст вам несколько вопросов; Вы можете просто нажать ENTER kbd>, чтобы принять их все.

И теперь мы закончили.

1
задан 16.04.2020, 00:45

1 ответ

Для приложений для ПК вы можете попробовать изучать Python, поскольку он поможет вам во многих аспектах. Для разработки приложений для Linux вы можете использовать библиотеку python pygtk (поиск в Интернете) для разработки графического интерфейса для приложений. Вот некоторые ссылки, которые могут вам помочь: -

http://www.linuxuser.co.uk/tutorials/build-a-twitter-client-using-pygtk [113 ]

http://python-gtk-3-tutorial.readthedocs.org/en/latest/

1
ответ дан 16.04.2020, 00:45

Теги

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