Установка Ubuntu 16.04 с помощью утилиты debootstrap на новый чистый диск

Данный материал содержит инструкцию по созданию собственного дистрибутива LiveCD.

  1. Desktop Enviroment Openbox с темой Breeze, 
  2. Панели tint2 и docky.
  3. Login manager - sddm с темой maldives.

Скачивание образа Ubuntu 16.04

Создайте виртуальную машину №1 в программе VirtualBox.

Создайте еще один диск для LiveCD и подключите его к виртуальной машине №1.

Скачайте и поставьте Ubuntu 16.04. Подключитесь к виртуальной машине №1, после установки на нее Ubuntu 16.04.

Запустите программу cfdisk:

cfdisk /dev/sdb

И разбейте подключенный новый диск. Первый раздел /dev/sdb1 сделайте большим, а второй /dev/sdb2 размером 1Гб. Он будет под swap.

Сборка системы

Установите необходимые пакеты:

sudo apt install debootstrap

Debootstrap позволяет собрать в папке чистую систему. Причем не обязательно той же версии, которая установлена в виртуальной машине. 

Создайте папку, где будет происходить сборка системы:

sudo mkdir -p /media/UFS/disk
cd /media/UFS

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

sudo cfdisk /dev/sdb
sudo mkfs.ext4 /dev/sdb1
sudo mount /dev/sdb1 /media/UFS/disk

Установите систему через debootstrap:

sudo debootstrap --arch amd64 xenial disk http://ru.archive.ubuntu.com/ubuntu

Подготовьте chroot:

sudo cp /etc/apt/sources.list /media/UFS/disk/etc/apt/sources.list
sudo cp /etc/resolv.conf /media/UFS/disk/etc/resolv.conf
sudo mount -t proc proc /media/UFS/disk/proc/
sudo mount -t sysfs sys /media/UFS/disk/sys/
sudo mount -o bind /dev /media/UFS/disk/dev/
sudo mount -t devpts none /media/UFS/disk/dev/pts

sudo chroot /media/UFS/disk

echo "127.0.0.1 ubuntu" >> /etc/hosts
echo "ubuntu" >> /etc/hostname

Обновите систему в Chroot и установите локаль:

apt update
apt upgrade
locale-gen en_US.UTF-8
locale-gen ru_RU.UTF-8

Установите необходимые системные пакеты:

apt install ubuntu-standard linux-generic dbus

Установите openbox:

apt install aptitude nano mc htop xorg openbox sddm sddm-theme-maldives wicd gedit nitrogen compton tint2 lxappearance lxappearance-obconf obmenu docky volti pulseaudio pavucontrol pavumeter xxkb xkbind gxkb gmrun zip unzip unar qlipper breeze-icon-theme gtk3-engines-breeze breeze-cursor-theme qt5-style-plugins lxqt-config lxqt-qtplugin pcmanfm konsole firefox zip unzip menu

Настройте sddm в качестве display manager по умолчанию:

echo "/usr/bin/sddm" > /etc/X11/default-display-manager 
sddm --example-config > /etc/sddm.conf

Укажите в /etc/sddm.conf тему maldives:

sed -i -- 's/Session=openbox.dektop/Session=plasma.dektop/g' /etc/sddm.conf
sed -i -- 's/Current=breeze/Current=maldives/g' /etc/sddm.conf
cp /usr/share/xsessions/openbox.desktop /usr/share/xsessions/plasma.desktop

Копирование openbox в plasma нужно, потому что sddm при автоматическом входе без авторизации пытается найти plasma.desktop и игнорирует параметр Session.

Укажите иконки по умолчанию:

update-alternatives --set x-cursor-theme /etc/X11/cursors/breeze_cursors.theme

Создайте пользователя ubuntu:

echo "%wheel  ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
useradd -m --shell /bin/bash ubuntu
usermod -a -G sudo ubuntu
groupadd -r wheel
usermod -a -G wheel ubuntu
chmod 700 /home/ubuntu
chown -R ubuntu:ubuntu /home/ubuntu

Укажите sddm, чтобы он грузился без пароля:

sed -i -- 's/User=/User=ubuntu/g' /etc/sddm.conf

Установите конфиги домашней папки от openbox. Это уже настроенная конфигурация рабочего стола Openbox с темой Breeze.

cd /root
wget https://blog.bayrell.org/media/files/archives/openbox.config.zip
unzip /root/openbox.config.zip
cp -aT /root/.bak/ /home/ubuntu/

Установите полезные программы:

apt-get install gnome-disk-utility

Установите пароль для пользователя ubuntu (Пароль ubuntu):

passwd ubuntu

Cконфигурируйте fstab:

nano /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
/dev/sda1   /     ext4  errors=remount-ro  0  1

# swap was on /dev/sda4 during installation
/dev/sda2   none  swap  sw                 0  0

Сконфигурируйте раскладку клавиатуры на переключение через Alt+Shift:

nano /etc/default/keyboard

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL=""
XKBLAYOUT="us,ru"
XKBVARIANT=""
XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll"

BACKSPACE="guess"

Настройте grub:

aptitude install os-prober

Если спросит, на какой диск ставить grub, укажите диск /dev/sdb.

Выйдите из chroot:

apt-get clean
rm -rf /tmp/*

exit
sudo umount /media/UFS/disk/sys/
sudo umount /media/UFS/disk/dev/pts
sudo umount /media/UFS/disk/dev/
sudo umount /media/UFS/disk/proc/sys/fs/binfmt_misc
sudo umount /media/UFS/disk/proc/

Дальше можно создать новую виртуальную машину №2, и указать в качестве главного диска второй диск, загрузится с него и проверить как все работает.

Ссылки на полезные материалы по этой теме:

  1. https://www.youtube.com/watch?v=fxWRZuKqmk4 - How to create a custom Linux GUI (Desktop) from scratch
  2. http://help.ubuntu.ru/wiki/дистрибутив_на_базе_ubuntu_вручную
  3. https://help.ubuntu.com/community/LiveCDCustomization_ru
  4. https://help.ubuntu.com/community/CustomizationFromScratch