Минимальная установка Xubuntu 20.04

После использования минимальных установок Xubuntu из образа сетевой загрузки (mini.iso) в нескольких предыдущих версиях Ubuntu, я заметил, что установщик сетевой загрузки больше не поддерживается. Я хотел бы знать, какой сейчас «официальный» способ получить минимальную установку Xubuntu 20.04 на виртуальной машине (поскольку Xubuntu - единственный официальный вариант без опции «минимальной установки» в его установщике). Мне известны следующие варианты с соответствующими недостатками:

  • Описание ядра Xubuntu на Xubuntu Сайт еще относится к mini.iso, который официально не поддерживается для> 18.04. Существует mini.iso для 20.04, как описано в this сообщение , хотя официально больше не поддерживается. Может исчезнуть любой момент или будет полностью прекращена для будущих версий> 20.04. За теперь этот образ позволяет мне установить минимальную версию Xubuntu.

  • Образ Xubuntu Core не может быть устанавливается при сбое установщика (я пробовал это несколько раз с момента выпуска и с разными версиями VirtualBox): Installer crash

  • Установка пакета xubuntu-core через apt на живом сервере Ubuntu, который указан как рекомендуемая замена mini.iso, дает> 4 ГБ использованных дискового пространства и, таким образом, кажется, значительно отличается от минимального установка выполняется с помощью 20.04 mini.iso, а также 18.04 mini.iso.

  • Ubuntu Core мне не подходит, так как требует создания и привязать его к учетной записи пользователя. Пока не пробовал из-за это ограничение. Я просто хочу установить Xubuntu на виртуальную машину и использовать его в автономном режиме.

  • База Ubuntu слишком минимальна и требует очень большого количества подготовительные шаги. Я просто хотел бы установить Xubuntu.

Учитывая эти варианты, есть ли что-нибудь, что я пропустил, что дало бы мне минимальную установку Xubuntu 20.04, которая официально поддерживается и, вероятно, будет поддерживаться в будущих версиях?

4
задан 10 November 2020 в 10:17

2 ответа

Использование Ubuntu Base с Live автоматическим установщиком (второстепенность)чтобы получить минимальную систему Ubuntu / Xubuntu

Ниже представлен файл шаблона автоустановки, с помощью которого вы можете автоматически установить Ubuntu Base 20.10 (и новее) и получить относительно минимальную установку Xubuntu из него. В качестве требования вам необходимо предварительно настроить остальную часть среды установки PXE (пошаговое руководство см. По ссылке ниже). Среда PXE состоит из: службы DHCP, сервера TFTP, сервера HTTP (S) и необязательного сервера NFS. В сочетании они предлагают возможность загрузки PXE для устройств в вашей сети. Само устройство также должно поддерживать загрузку из сети (либо устаревший BIOS, либо UEFI).

Я провел все свои испытания с использованием загрузки PXE, Ubuntu 20.04.1 и 20.10 и файлов автоматической установки (см. Ниже, для 20.10). Чтобы получить подробную информацию о настройке PXE для версии 20.04 и новее, прочтите мое другое руководство здесь: https://askubuntu.com/a/1292097/1080682

Примечания: перечисленные ниже команды также могут быть выполнены в другими способами, например. вручную внутри Live-CD или в любом другом сеансе живой загрузки, я также сделал это с PXE-загрузкой в ​​установщик (subiquity), а затем сделал это через SSH внутри subiquity live session. Убедитесь, что загруженный сеанс / установщик имеет тот же основной выпуск, что и Ubuntu Base, который вы планируете установить, например. Live-CD Ubuntu 20.10 для создания Ubuntu Base 20.10

Сценарий автоустановки обслуживается через PXE как файл «пользовательских данных».

user-data

#cloud-config

autoinstall:
  version: 1
  early-commands:
    - dd if=/dev/zero of=/dev/sda bs=8M count=30
    - (echo o; echo n; echo p; echo 1; echo ""; echo +200M; echo n; echo p; echo 2; echo ''; echo ''; echo a; echo 1; echo p; echo w) | fdisk /dev/sda
    - mkfs.fat -F 32 -D 0x80 -M 0xF8 -n BOOT /dev/sda1
    - mkfs.ext4 -F /dev/sda2
    - mkdir /mnt/boot /mnt/root
    - mount /dev/sda2 /mnt/root
    - curl http://cdimage.ubuntu.com/ubuntu-base/releases/20.10/release/ubuntu-base-20.10-base-amd64.tar.gz -o /ubuntu-base-20.10-base-amd64.tar.gz
    - tar -xzvf /ubuntu-base-20.10-base-amd64.tar.gz -C /mnt/root
    - touch /mnt/root/etc/resolv.conf
    - echo "nameserver 8.8.8.8" > /mnt/root/etc/resolv.conf
    - chroot /mnt/root sh -c "apt-get update"
    - chroot /mnt/root sh -c "apt-get install -y linux-image-5.8.0-28-generic initramfs-tools init dbus iproute2 sudo nano --no-install-recommends"
    - chroot /mnt/root sh -c "useradd -m ubuntu -s '/bin/bash' && echo ubuntu:ubuntu | chpasswd"
    - chroot /mnt/root sh -c "addgroup ubuntu adm"
    - chroot /mnt/root sh -c "addgroup ubuntu sudo"
    - apt-get update
    - apt-get install -y syslinux
    - syslinux -i /dev/sda1
    - dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sda bs=440 count=1 conv=notrunc
    - mount /dev/sda1 /mnt/boot
    - touch /mnt/boot/syslinux.cfg
    - (echo PROMPT 0; echo DEFAULT base; echo LABEL base; echo KERNEL vmlinuz; echo APPEND root=/dev/sda2 rw; echo INITRD initrd.img) > /mnt/boot/syslinux.cfg
    - cp /mnt/root/boot/vmlinuz /mnt/boot
    - cp /mnt/root/boot/initrd.img /mnt/boot
    - touch /mnt/root/etc/systemd/network/00-wired.network
    - (echo [Match]; echo Name=enp0s10f0; echo [Network]; echo Address=10.10.2.101/24; echo Gateway=10.10.2.99; echo DNS=8.8.8.8) > /mnt/root/etc/systemd/network/00-wired.network
    - chroot /mnt/root sh -c "systemctl enable systemd-networkd.service"
    - chroot /mnt/root sh -c "apt-get clean"
    - umount /mnt/boot
    - umount /mnt/root
    - reboot

Вышеупомянутый скрипт - это просто чистый скрипт для BIOS / устаревших boot , и он должен работать нормально как есть, скопируйте / вставьте.

Чтобы добавить возможности UEFI, вставьте следующие строки после apt-get clean и перед командами umount и reboot.

    - mkdir -p /mnt/boot/EFI/BOOT/
    - cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /mnt/boot/EFI/BOOT/BOOTX64.EFI
    - cp /usr/lib/syslinux/modules/efi64/ldlinux.e64 /mnt/boot/EFI/BOOT/
    - cp /mnt/boot/syslinux.cfg /mnt/boot/EFI/BOOT/syslinux.cfg
    - cp /mnt/root/boot/vmlinuz /mnt/boot/EFI/BOOT/
    - cp /mnt/root/boot/initrd.img /mnt/boot/EFI/BOOT/

Строки, о которых следует помнить. , что может потребовать изменений:

  • useradd и addgroup - измените свое имя пользователя и пароль или оставьте его для ubuntu / ubuntu
  • / etc / systemd / network / 00 - *. Network - не стесняйтесь изменять имя файла конфигурации и обязательно измените имя интерфейса (в моем случае enp0s10f0 ), IP ( 10.10.2.101/24 ) и шлюз ( 10.10.2.99 ) к тому, чего вы действительно ожидаете
  • , если вы также установите пакет клиента DHCP ( isc-dhcp-client ), вы можете использовать что-то вроде эхо [Соответствие]; эхо Name = eth0; эхо [Сеть]; echo DHCP = yes (просто проверьте имя интерфейса)
  • вы также можете оставить скрипт как есть и изменить пользователя / пароль или сеть после перезагрузки

После запуска скрипта через автоматический установщик он установится Ubuntu Base и перезагрузитесь. После перезагрузки войдите в систему с паролем пользователя ubuntu ubuntu (или своим собственным, если вы его изменили). Обратите внимание, что я НЕ выполняю установку xubuntu-core , см. Комментарии в сценарии ниже, а также комментарии под ответом.

Подробнее с подробностями

Чтобы объясните процесс Я также вставляю сценарий со всеми комментариями для других, кто хочет получить более подробную информацию, понять процесс и расширить его, чтобы изменить его по своему вкусу.

user-data (с комментариями)

#cloud-config

autoinstall:
  version: 1
  early-commands:
# delete any old partition data, up to 240MB size, if this was reinstall
# erases partition tables and whole boot partition as well, by erasing 30x8MB=240MB (partition is 200MB)
    - dd if=/dev/zero of=/dev/sda bs=8M count=30
# create new 200MB boot partition and rest as root partition
    - (echo o; echo n; echo p; echo 1; echo ""; echo +200M; echo n; echo p; echo 2; echo ''; echo ''; echo a; echo 1; echo p; echo w) | fdisk /dev/sda
# format boot as FAT 32
    - mkfs.fat -F 32 -D 0x80 -M 0xF8 -n BOOT /dev/sda1
# format rest as ext4
    - mkfs.ext4 -F /dev/sda2
# create mount points for boot and root
    - mkdir /mnt/boot /mnt/root
# don't mount boot yet, as later syslinux requires it unmounted, or mount it here and unmount before syslinux -i
#    - mount /dev/sda1 /mnt/boot
    - mount /dev/sda2 /mnt/root
# optional commands to see what's mounted, note if you did not mount it, don't ls it because subiquity installer will fail
#    - df -h
#    - ls -al /mnt
#    - ls -al /mnt/boot
#    - ls -al /mnt/root
# download ubuntu Base from official repo, we download 20.10 below, this will download to / (root) of ubiquity installer, which means - into memory
# if you want 20.04 or 20.10 or anything else (future releases) just change following these two lines (curl and tar) to reflect that, plus later in script change kernel version
    - curl http://cdimage.ubuntu.com/ubuntu-base/releases/20.10/release/ubuntu-base-20.10-base-amd64.tar.gz -o /ubuntu-base-20.10-base-amd64.tar.gz
# extract all files to our sda2, mounted at /mnt/root
    - tar -xzvf /ubuntu-base-20.10-base-amd64.tar.gz -C /mnt/root
# create temporary resolv.conf in the new system
    - touch /mnt/root/etc/resolv.conf
    - echo "nameserver 8.8.8.8" > /mnt/root/etc/resolv.conf
# chroot to /mnt/root and start executing commands one by one
# update apt's package cache
    - chroot /mnt/root sh -c "apt-get update"
# install Linux image, which will install kernel and create initrd and all
# you need to install specific version depending on OS, eg 20.04 will use linux-image-5.4.0-42-generic
# we also install: init, dbus, iproute2, sudo, which also pull systemd - to have actually usable system
# additionally install nano to be able to edit confs, you can change that to any other editor
    - chroot /mnt/root sh -c "apt-get install -y linux-image-5.8.0-28-generic initramfs-tools init dbus iproute2 sudo nano --no-install-recommends"
# I personally always install openssh-server as well, ping for debugging
# and you may also want to add isc-dhcp-client package to enable networking setup by DHCP server
    - chroot /mnt/root sh -c "apt-get install -y openssh-server isc-dhcp-client iputils-ping --no-install-recommends"
# add at least one user, here we add user ubuntu with password ubuntu, change it here or later after first login
    - chroot /mnt/root sh -c "useradd -m ubuntu -s '/bin/bash' && echo ubuntu:ubuntu | chpasswd"
# add this new user to correct groups to enable it to be admin and to have sudo access
    - chroot /mnt/root sh -c "addgroup ubuntu adm"
    - chroot /mnt/root sh -c "addgroup ubuntu sudo"
# this would installs Xubuntu ... or switch to whatever you need... if you install some other package or desktop environment - it will be there after your login
# but it is quite large (2GB) so if ANY package fails or throws ANY error - whole subiquity installer crashes; so I recommend this to be done on first interactive login after reboot
#    - chroot /mnt/root sh -c "apt-get install -y xubuntu-core"
# below is syslinux install the easy way, through Ubuntu's official package/repo
# get the syslinux package, note this is not in chroot, this installs just to subiquity memory, so we need to run apt update again
    - apt-get update
    - apt-get install -y syslinux
# tell syslinux to install itself to your sda1 which is your boot partition
# if you mounted it earlier, unmount boot!! use command below (which is commented out by default)
#    - umount /mnt/boot
    - syslinux -i /dev/sda1
# now that syslinux is installed, burn it's mbr.bin (or maybe gptmbr.bin if you plan to use GPT + UEFI) to start of your disk; note we target whole device "sda" - NOT sda1
    - dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sda bs=440 count=1 conv=notrunc
# now we can safely mount boot partition
    - mount /dev/sda1 /mnt/boot
# we create syslinux.cfg, I do touch, as if it doesn't exist it will break subiquity again
    - touch /mnt/boot/syslinux.cfg
# echo your config to it; explaining
# PROMPT 0 - don't ask use default / 1 - ask for user input (good for diag); DEFAULT - set which label is default so syslinux can autoboot; LABEL - this is config for our Ubuntu Base OS; KERNEL - vmlinuz or eqivalent kernel name; APPEND - to mount your /root partiton as writeable; INITRD - name of your initrd image
    - (echo PROMPT 0; echo DEFAULT base; echo LABEL base; echo KERNEL vmlinuz; echo APPEND root=/dev/sda2 rw; echo INITRD initrd.img) > /mnt/boot/syslinux.cfg
# copy vmlinuz & initrd files that you've installed in your chroot, you can specify exact version, just make sure to change syslinux.cfg echo (above) accordingly
# can also copy * to copy all, but all we need is these ones really
    - cp /mnt/root/boot/vmlinuz /mnt/boot
    - cp /mnt/root/boot/initrd.img /mnt/boot
# setup EFI boot, you can keep both BIOS and UEFI bootloaders at the same time
# install additional package
    - apt-get install -y syslinux-efi
# create directories, will create both BOOT and parent EFI folders
    - mkdir -p /mnt/boot/EFI/BOOT/
# copy all files, in order: UEFI bootloader, bootloader's module (required), syslinux config (same as above), kernel and initrd (same as above)
    - cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /mnt/boot/EFI/BOOT/BOOTX64.EFI
    - cp /usr/lib/syslinux/modules/efi64/ldlinux.e64 /mnt/boot/EFI/BOOT/
    - cp /mnt/boot/syslinux.cfg /mnt/boot/EFI/BOOT/syslinux.cfg
    - cp /mnt/root/boot/vmlinuz /mnt/boot/EFI/BOOT/
    - cp /mnt/root/boot/initrd.img /mnt/boot/EFI/BOOT/
# now we create network config, make sure to change: interface name, IP, gateway
    - touch /mnt/root/etc/systemd/network/00-wired.network
    - (echo [Match]; echo Name=enp0s10f0; echo [Network]; echo Address=10.10.2.101/24; echo Gateway=10.10.2.99; echo DNS=8.8.8.8) > /mnt/root/etc/systemd/network/00-wired.network
# and enable networkd service so it runs on first boot already
    - chroot /mnt/root sh -c "systemctl enable systemd-networkd.service"
# this is optional, but cleans 100+MB from our chroot partition
    - chroot /mnt/root sh -c "apt-get clean"
# and finally, I leave this uncommented sometimes, to allow me to do anything in interactive bash shell before final reboot (or to just pause and wait for you if you took coffee and don't want your system to reboot unattended)
#    - bash -c "exec bash"
# unmount partitions
    - umount /mnt/boot
    - umount /mnt/root
# and reboot!
    - reboot
# after reboot login with your user (ubuntu/ubuntu in this script) and complete installation and/or configuration
# you can also connect using ssh to this machine, sudo, and install or configure whatever you wish! Congrats!

Скрипт с комментариями также можно использовать как есть, копировать / вставлять. Как и раньше, проверьте своего пользователя / пароль и сеть (имя интерфейса, IP, шлюз и т. Д.) Опять же, он НЕ установит Xubuntu, у меня это закомментировано.

Это загрузится в бит под разделом 400 МБ / (корневой) (плюс небольшой раздел для загрузки, он установлен на 200 МБ, но может быть меньше , для обоих файлов BIOS + EFI требуется около 58 МБ). Для добавления Xubuntu Core требуется около 1,8 ГБ (так говорит apt). После установки xubuntu-core использование раздела увеличивается до 2,4 ГБ, а после apt clean уменьшается до 1,9 ГБ, так что это больше похоже на 1,5 ГБ дополнительных функций поверх Ubuntu Base.

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

Все это было протестировано с Ubuntu 20.04.1 (PXE-сервер, Live Install ISO-образ и базовый образ) , а также с «клиентом» 20.10 и должен быть таким же или подобным для любого будущего выпуска, если вы измените имена файлов там, где это необходимо (например, в командах curl и tar и где apt устанавливает образ Linux). Отдых должен быть идентичным, пока Canonical что-то не изменит.

Тестовая среда (и PXE-сервер, и сервисы, и тестовый клиент) были выполнены на виртуальных машинах Hyper-V.

Примечание: изначально это было для устаревших установок BIOS, я добавил Поддержка UEFI сейчас. Изменения незначительны для UEFI, установка syslinux была расширена.

Документация:

Базовая вики-версия Ubuntu (устаревшая)

Базовый репозиторий Ubuntu

Пример установки базы Ubuntu (сильно устаревшая, инструменты графического интерфейса)

Править - 2020-11-22: модифицированный скрипт для Ubuntu 20.10. Если вы просматриваете историю изменений, предыдущий сценарий был для 20.04.1, но я также внес некоторые изменения, поэтому, пожалуйста, сравните их, чтобы увидеть изменения.

Edit - 2020-12-06: измененный сценарий, сделал его проще и многое другое простой, с улучшенной сетью и добавленной поддержкой загрузчика EFI. Я , а не написал новый сценарий для 20.04, но буквально только строки с curl , tar и apt-get install of linux-image-xxx-xx-generic потребуются чтобы изменить, вы можете проверить версии этого ответа, и в самой первой версии есть пути и имена для 20.04.1 Ubuntu Base и его ядра.

2
ответ дан 4 January 2021 в 08:17

Вы правы. Не удается установить Xubuntu Core на VirtulaBox 6.1

На данный момент единственный вариант - подключиться к сети, создать идентификатор пользователя и затем перевести компьютер в автономный режим.

Посетите https://core.docs. ubuntu.com/en/guides/manage-devices/, чтобы установить Xubuntu Core, на случай, если вы захотите изменить это требование и создать новый ISO ...

-1
ответ дан 4 January 2021 в 08:17

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

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