Все в Linux-системах - это файл. Каждый раз, когда я устанавливаю Ubuntu, я выбираю корневой раздел. Теперь я хочу создать корневую файловую систему, но в файле, например ~/ubuntu.img
. В качестве основной операционной системы у меня есть другой дистрибутив Linux (основанный на Ubuntu). Есть ли способ установить (s)ubiquity и выбрать ~/ubuntu.img
в качестве корневой файловой системы? Насколько я знаю, программа установки монтирует корневую файловую систему в /target
и использует chroot
. Может быть, я смогу смонтировать там свою корневую файловую систему и установить её вручную?
Я хочу это сделать, потому что:
Если я смогу установить Ubuntu таким образом, я использую chroot
для установки пакетов внутри образа корневой файловой системы.
Что вы предлагаете, по сути, идея виртуальной машины. Почему не просто использовать VirtualBox и установить Ubuntu в качестве VirtualBox VM?
Мне удалось смонтировать образ из этого ответа . Вы можете использовать эту ссылку для загрузки.
По каким-то причинам я не смог непосредственно прочитать образ с помощью таких инструментов, как parted
, cfdisk
или fdisk
. Мне пришлось прошить образ на 16 Гб (или более) USB диск, а затем скопировать корневой раздел, используя dd
, или утилиту GNOME Disk.
Итак, я скопировал корневой раздел на ~/ubuntu.img
и настроил chroot-окружение:
cd # go to the directory where the root filesystem image is located
mkdir ubuntu
sudo mount -o loop ubuntu.img ubuntu
sudo mount -t proc /proc ./ubuntu/proc
sudo mount -t sysfs /sys ./ubuntu/sys
sudo mount -o bind /dev ./ubuntu/dev
sudo chroot ./ubuntu
Я даже могу получить доступ к USB-устройствам из chroot-окружения.
Вероятно, вы заметили, что Интернет-соединение работает только частично - вы можете пинговать любой сервер, если укажете IP-адрес, но домены не могут быть разрешены. Эта команда должна исправить это:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
Недостатком этого метода является то, что вы всегда должны подготовить chroot окружение, если вам нужен доступ к USB устройствам. Но это можно упростить, написав скрипт оболочки.
Для очистки после выхода из chroot-окружения (и никаких процессов там не запущено):
sudo umount ./ubuntu/{proc,sys,dev}
sudo umount ./ubuntu
Думаю, есть способ вручную установить Ubuntu поверх базовой системы. Есть такие инструменты, как debootstrap
, но я этого не пробовал. Не стесняйтесь, напишите другой ответ с :)