Создание Live USB Ubuntu 18.04
Данная инструкция описывает как создать загрузочную флешку с разделами GPT и загрузочником UEFI.
Создание загрузочной флешки состоит из двух этапов. Сначала нужно создать папку, и подготовить сборку. Затем подготовить флешку, и перенести файлы на эту флешку.
Выберите флешку, у которой большая скорость чтения и записи.
Подготовка файлов
1. Создайте папку
mkdir -p /media/ubuntu/root
2. Подготовьте среду
apt install debootstrap -y
cd /media/ubuntu
debootstrap --arch amd64 focal root http://ru.archive.ubuntu.com/ubuntu
3. Смонтируйте папки
yes | cp /etc/apt/sources.list /media/ubuntu/root/etc/apt/sources.list
yes | cp /etc/resolv.conf /media/ubuntu/root/etc/resolv.conf
mount -t proc proc /media/ubuntu/root/proc
mount -t sysfs sys /media/ubuntu/root/sys
mount -o bind /dev /media/ubuntu/root/dev
mount -t devpts none /media/ubuntu/root/dev/pts
echo "127.0.0.1 ubuntu" > /media/ubuntu/root/etc/hosts
echo "ubuntu" > /media/ubuntu/root/etc/hostname
4. Сделайте chroot
chroot /media/ubuntu/root
5. Установите базовое ПО
locale-gen en_US.UTF-8
locale-gen ru_RU.UTF-8
apt update
apt install aptitude -y
aptitude upgrade -y
aptitude install apt-utils -y
aptitude install libgcc1 libstdc++6 -y
aptitude install debconf-i18n -y
Установите системные пакеты:
aptitude install bash-completion bsdmainutils psmisc update-motd uuid-runtime \
ubuntu-standard linux-base linux-generic dbus bridge-utils \
cron htop mc nano curl dnsutils sudo grep man anacron iotop preload \
g++ gcc cpp openssh-client unrar unar bzip2 zip unzip p7zip-full \
python2.7 python3 tar mtools grub-efi grub-efi-amd64 attr inxi \
traceroute xfsprogs network-manager dnsmasq resolvconf -y
Установите Openbox и LXQT
aptitude install xorg openbox sddm sddm-theme-maldives gmrun xterm update-manager \
nitrogen compton lxappearance lxappearance-obconf xxkb xkbind gxkb \
obconf obconf-qt alsa alsaplayer alsa-base alsa-tools alsa-utils alsamixergui \
lxqt lxqt-about lxqt-core lxqt-config lxqt-sudo lxqt-qtplugin lxqt-panel \
kde-spectacle scrot gnome-disk-utility pulseaudio dconf-editor gnome-screensaver \
pavumeter pavucontrol pavucontrol-qt smbclient gvfs-bin libnotify-bin -y
Установите темы
aptitude install adwaita-icon-theme-full adwaita-qt breeze-icon-theme gtk3-engines-breeze \
breeze breeze-cursor-theme breeze-gtk-theme breeze-icon-theme \
qt5-style-plugins ubuntu-gnome-wallpapers ubuntu-wallpapers-bionic \
ubuntu-gnome-wallpapers kubuntu-wallpapers-bionic gnome-backgrounds -y
Установите приложения:
aptitude install gedit audacious baobab firefox konsole chromium-browser ffmpeg \
vlc geany geany-plugins libreoffice okular gwenview pinta ark \
filezilla gnome-terminal systemsettings florence abiword \
dolphin plasma-framework plasma-workspace plasma-sdk -y
Установите драйвера:
aptitude install xserver-xorg-input-synaptics -y
6. Настройте среду
Сконфигурируйте раскладку клавиатуры на переключение через Ctrl+Shift:
nano /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL=""
XKBLAYOUT="us,ru"
XKBVARIANT=""
XKBOPTIONS="grp:ctrl_shift_toggle,grp_led:scroll"
BACKSPACE="guess"
Настройте 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
7. Создайте пользователя 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
sed -i -- 's/Session=/Session=openbox.desktop/g' /etc/sddm.conf
Установите пароль для пользователя ubuntu (Пароль ubuntu):
passwd ubuntu
8. Установите BFQ
В файл /etc/default/grub добавить в параметр GRUB_CMDLINE_LINUX_DEFAULT строчку
scsi_mod.use_blk_mq=1
Добавить в файл /etc/initramfs-tools/modules строчку
bfq
Создать файл /etc/udev/rules.d/60-scheduler.rules и добавить
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
9. Установите iptables
aptitude install iptables-persistent
Пропишите в /etc/iptables/rules.v4 следующее содержимое:
*filter
:INPUT ACCEPT [19:913]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [39:3584]
:ALLOW-INPUT - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
# Перейти к цепочке ALLOW-INPUT
-A INPUT -j ALLOW-INPUT
# Запрещаем остальные входящие соединения
-A INPUT -j REJECT
-A FORWARD -j REJECT
-A ALLOW-INPUT -j RETURN
COMMIT
Обязателен ENTER в конце (перевод на новую строку). Скопируйте rules.v4 в rules.v6
cp /etc/iptables/rules.v4 /etc/iptables/rules.v6
10. Установите конфиги домашней папки от openbox
Это уже настроенная конфигурация рабочего стола Openbox с темой Breeze.
cd /tmp
wget https://blog.bayrell.org/media/files/archives/openbox_18_04.config.zip
unzip /tmp/openbox_18_04.config.zip
cp -aT /tmp/.bak/ /home/ubuntu/
chown -R ubuntu:ubuntu /home/ubuntu
rm -rf /tmp/.bak/
11. Отредактируйте файл grub
nano /etc/default/grub
Установите строки:
#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=5
GRUB_CMDLINE_LINUX_DEFAULT="scsi_mod.use_blk_mq=1"
12. Настройте Network Manager
Измените файл /etc/NetworkManager/NetworkManager.conf
[main]
#auth-polkit=false
plugins=ifupdown,keyfile
systemd-resolved=false
rc-manager=resolvconf
dns=default
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
В файле /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf пропишите строчку:
[keyfile]
unmanaged-devices=*,except:type:wifi,except:type:gsm,except:type:cdma,except:type:ethernet,interface-name:lxc*,interface-name:docker*,interface-name:virtual*,interface-name:veth*
Отключите управление сетью через systemd
systemctl disable systemd-networkd.socket
systemctl disable systemd-networkd.service
systemctl disable systemd-resolved
systemctl disable networkd-dispatcher
systemctl disable connman
Скопируйте конфиг:
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.example
echo "" > /etc/dnsmasq.conf
В /etc/dnsmasq.conf пропишите:
port=53
listen-address=127.0.0.1
no-dhcp-interface=
bind-interfaces
expand-hosts
local-ttl=1
conf-dir=/etc/dnsmasq.d
Создайте файл /etc/dnsmasq.d/dns
server=8.8.8.8
server=8.8.4.4
server=1.1.1.1
13. Установите Ядро 5.3
apt remove xorg
apt-get install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
15. Удалите лишние приложения
aptitude purge connman
16. Выйдите из chroot
exit
Отмонтируйте папки
umount /media/ubuntu/root/proc
umount /media/ubuntu/root/sys
umount /media/ubuntu/root/dev/pts
umount /media/ubuntu/root/dev
Удалите содержимое папки dev
rm -rf /media/ubuntu/root/dev/*
Перезагрузитесь
Перенос файлов на флешку
1. Подключите флешку. И узнайте на каком устройстве она подключена.
Это можно сделать через команду
fdisk -l
либо запустить программу
gnome-disks
У меня флешка значится под устройством /dev/sdb
2. Создание разделов на флешке
Выполните команду создания GPT разметки. Убедитесь, что указан верный диск. В моем случае это /dev/sdb.
parted /dev/sdb mklabel gpt
Данная команда выдаст предупреждение, что все данные на выбранном диске будут уничтожены. Еще раз убедитесь в правильности устройства.
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No?
Если все верно, введите Yes.
Yes
Выведите на экран результат
parted /dev/sdb print
У меня выдало следующее
Model: JetFlash Transcend 8GB (scsi)
Disk /dev/sdb: 8103MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
Теперь нужно создать разделы на флешке. Запустите программу
gnome-disks
У этой программы удобный интерфейс для создания разделов.
Создайте разделы:
1 - efi [FAT 150М]
2 - swap [2Gb]
3 - root [ext4]
Укажите тип раздела. У каждого раздела, есть пункт меню Edit Partition. Root partition должен быть в конце, чтобы если переносить на флешку с большим объемом через dd можно было увеличить root раздел.
Нужно выбрать:
/dev/sdb1 - Системный EFI
/dev/sdb2 - Раздел подкачки Linux
/dev/sdb3 - Корневой раздел Linux (x86_64)
2. Cконфигурируйте fstab
Выполните команду
blkid
Она выдаст UUID дисков. Примерно следующее:
/dev/sdb1: SEC_TYPE="msdos" LABEL="efi" UUID="8F2E-54C2" TYPE="vfat" PARTUUID="09c37ee0-6005-4b9e-b953-02f7a4571e66"
/dev/sdb2: LABEL="swap" UUID="09431b9f-fa47-4aed-9699-824d7128bedd" TYPE="swap" PARTUUID="89eae7e6-7a0a-4b62-9e8f-f49b97d24562"
/dev/sdb3: LABEL="root" UUID="cecd3222-1c6c-4eee-af58-786fa8c27656" TYPE="ext4" PARTUUID="71cdc983-2312-47d0-9421-5e8b0d343da9"
ID дисков sdb1, sdb2 и sdb3 нужно прописать в /etc/fstab.
nano /media/ubuntu/root/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
UUID=cecd3222-1c6c-4eee-af58-786fa8c27656 / ext4 errors=remount-ro 0 1
UUID=8F2E-54C2 /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda4 during installation
UUID=09431b9f-fa47-4aed-9699-824d7128bedd none swap sw 0 0
3. Смонтируйте флешку в /media/ubuntu/usb
mkdir -p /media/ubuntu/usb
mount /dev/sdb3 /media/ubuntu/usb
4. Скопируйте содержимое /media/ubuntu/root в /media/ubuntu/usb
rsync -aSsuh --info=progress2 --numeric-ids --bwlimit=10240 --delete --exclude 'proc' --exclude 'sys' --exclude 'dev' /media/ubuntu/root/ /media/ubuntu/usb/
Сбросьте кэш на диск:
sync -f
5. Смонтируйте остальные папки:
mkdir -p /media/ubuntu/usb/proc
mkdir -p /media/ubuntu/usb/sys
mkdir -p /media/ubuntu/usb/dev
mount -t proc proc /media/ubuntu/usb/proc
mount -t sysfs sys /media/ubuntu/usb/sys
mount -o bind /dev /media/ubuntu/usb/dev
mount -t devpts none /media/ubuntu/usb/dev/pts
mkdir -p /media/ubuntu/usb/boot/efi
mount /dev/sdb1 /media/ubuntu/usb/boot/efi
6. Сделайте chroot
chroot /media/ubuntu/usb
7. Выполнить команды
grub-install /dev/sdb3
update-initramfs -u
update-grub
8. Выйдите из chroot
exit
9. Отмонтируйте папки
umount /media/ubuntu/usb/proc
umount /media/ubuntu/usb/sys
umount /media/ubuntu/usb/dev/pts
umount /media/ubuntu/usb/dev
umount /media/ubuntu/usb/boot/efi
umount /media/ubuntu/usb
10. Запустите cfdisk и проверьте тип разделов
cfdisk /dev/sdb
Для:
/dev/sdb1 - EFI System
/dev/sdb2 - Linux swap
/dev/sdb3 - Должно стоять Linux root x86-64
Если так не написано, то нужно поменять на соотвествующие значения, и после измененений, выбрать пункт Write и написать yes. Затем сделать quit.
Проверка флешки через QEMU
Установите qemu
aptitude update
aptitude install qemu-kvm -y
Сделайте
lsusb
Найдите строчку с USB флешки. У меня она выглядит следующим образом.
Bus 002 Device 005: ID 8564:1000 Transcend Information, Inc. JetFlash
Запустите qemu с параметрами bus, device для флешки:
qemu-system-x86_64 -m 1G -cpu host -enable-kvm -usb -device usb-host,vendorid=0x8564,productid=0x1000
либо, если ID такиж несколько, то указать bus и addr:
qemu-system-x86_64 -m 1G -cpu host -enable-kvm -usb -device usb-host,hostbus=2,hostaddr=5