К основному контенту
Делаем полностью работоспособный apt-get

Для начала все папки и файла для apt-get должны быть созданы по этой инструкции.

При установке любого пакета с помощью apt-get выходит ошибка о том, что невозможно установить libc6. Я изучил скрипт предустановки libc6 и оказалось что библиотека не ставится из-за того, что путь /lib64 является символической ссылкой на /mnt/apps/lib.

Сначала я хотел сделать новый раздел на диске который будет содержать корневую директорию, но без потери данных это оказалось не возможно, т.к. используется файловая система xfs которую нельзя уменьшить.
Второй вариант - сделать корневую систему на флешке и изменить скрипты initrd. Не стал пока этими заниматься.

Остановился на третьем варианте: монтирование папки в папку.
(все описанное легче делать через MC)
1. Для начала создавим папку которая будет содержать часть нашего корневого раздела: /mnt/system/newroot
2. Создадим в ней папку с нашими библиотеками: /mnt/system/newroot/lib64
3. Скопируем все файлы из /lib64 в /mnt/system/newroot/lib64
4. Теперь нам необходимо избавится от симовлической ссылки, для этого удаляем ссылку /lib64 и создаем вместо нее директорию /lib64
5. Монтируем папку в папку:
# mount --bind /mnt/system/newroot/lib64 /lib64

Теперь libc6 ставится но возникают ошибки связанные с отсутствием свободного места в корневом разделе (он всего 50Мб). Проблема решается тем же монтированием папок:
6. Создаем папки:
/mnt/system/newroot/bin
/mnt/system/newroot/sbin
/mnt/system/newroot/usr
7. Копируем в эти папки файлы из следующих директорий соответственно:
/bin
/sbin
/usr
8. Монтируем папки:
mount --bind /mnt/system/newroot/bin /bin
mount --bind /mnt/system/newroot/sbin /sbin
mount --bind /mnt/system/newroot/lib64 /lib
mount --bind /mnt/system/newroot/usr /usr

У меня почемуто находились не все пакеты со стандартным репозиторием и поэтому я добавил в /etc/apt/sources.list:
deb http://ftp.ru.debian.org/debian stable main contib non-free

После этого у меня стали ставится любые пакеты без ошибок. (компилятор gcc который позволит собирать для устройства практически любые opensource программы, perl и д.р.)

Помните, после перегрузки устройства все папки станут стандартными и необходимо будет заново их примонтировать. Можно написать скрипт и монтировать через автозагруку, но тогда нужно следить за порядком автозагрузки служб, которые вы поставили через apt-get.
Либо можно прописать новые папки в initrd и тогда монтирование будет происходить до автозагрузки служб.

ВАЖНО!!! Часть пакетов уже установлена на устройстве, но т.к. производитель удалил файл с установленными пакетами, то все пакеты будут ставится заново. внимательно смотрите выдаваемые запросы. На вопросы о замене конфигурационных файлов отвечайте N.

У меня после установки какого-то стандартного пакета перестала работать команда shutdown -r now. Что то прописалось в /etc, пока разбираюсь
UPDATE:
В процессе разбирательства выяснилось что можно перегружаться командой: reboot -f.
Так же после некоторых действий пришлось востанавливать config образ (директория /etc), после чего shutdown заработал.


Как бонус всех вышеописанных действий вы получаете папку usr доступную для изменений, а это значит не нужно монтировать apps в режиме записи для включения например транскодирования.

Комментарии

  1. Не ставиться libc6 вываливается на ошибке

    E: Internal Error, Could not perform immediate configuration (2) on libc6

    в корне папка с lib64 и примонтированым в неё каталогом /mnt/system/newroot/lib64

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

C++. Создание динамически подключаемой библиотеки so с помощью CMake

Мини инструкция, т.к. потратил пару часов на разрозненной информации. Библиотека. Обязательно пишем extern "C". Если не указать, то компилятор добавит символы к имени и функция dsym не найдет ничего. #ifdef WINDOWS #define EXPORT extern "C" __declspec(dllexport) #else #define EXPORT extern "C" //__attribute__((visibility ("default"))) #endif // WINDOWS EXPORT int Add(int a, int b) { return a + b; } Программа в которой загружаем библиотеку #ifdef WINDOWS #define IMPORT __declspec(dllimport) IMPORT int Add(int a, int b); #else     #define IMPORT     #include <dlfcn.h> #endif // WINDOWS #include "TestLinuxSharedLib.h" using namespace std; int main() { #ifndef WINDOWS     void* handle;     int (*cosine)(int,int);     //void* cosine;     char* error;     handle = dlopen("./libMySharedLib.so", RTLD_NOW);     if (!handle) {         cout << "not found libMySharedLib.so" &l
Продвинутая настройка и установка дополнительного ПО  на NAS Iomege Home Media Network Hard Drive Cloud Edition Этот пост открывает серию статей по установке дополнительного ПО на NAS   Iomege   Home   Media   Network   Hard   Drive   Cloud   Edition (HMNHD CE). Характеристики устройства можно посмотреть  здесь .  Там же  можно посмотреть начальную разметку дисков и др. сведения необходимые для модификации ПО. ВАЖНО!!! Все описанные действия могут привести к потере доступа к диску и придется восстанавливать доступ по инструкциям  отсюда . Физически испортить устройство описанными действиями вы не сможете, т.к. в устройстве прошивка хранится не во флэш памяти, а непосредственно на самом жестком диске.  Для начала нам понадобится доступ к устройству через ssh. Для его включения необходимо в строке адреса браузера набрать: https://[nas ip]/diagnostics.html и поставить галочку " Разрешить удаленный доступ для поддержки (SSH и SFTP)":
Стандартные способы восстановления ПО HMNHD CE, предусмотренные разработчиком.  Загрузка Linux происходит в несколько этапов. Сначала находится загрузчик, который загружает ядро Linux в память и инициализирует диск initrd. Далее вызывается скрипт linuxrc, в котором монтируются остальные файловые системы и происходит загрузка основной ОС. Разработчики встроили в скрипт linuxrc возможность восстановления с USB флешки. Если у вас не повреждены ядро и диск initrd (не перезаписаны неработающими версиями), то вы можете восстановитель ОС выполнив ряд простых действий. 1. Отформатировать USB флешку в файловую систему FAT. 2. Создать на флешке путь: /emctools/hmnhd_images Далее есть две опции, которые можно использовать как раздельно так и вместе 3.1. С распаковкой из архива. 3.1.1. Скачиваем архив  imager_3.1.14.995.tgz  (предоставленный пользователем  Mijzelf  в  теме  восстановления  устройства   )и записываем его в папку  /emctools/hmnhd_images 3.2. Без распаковки из а