Данная инструкция описывает как создать загрузочную флешку с разделами GPT и загрузочником UEFI.
Создание загрузочной флешки состоит из двух этапов. Сначала нужно создать папку, и подготовить сборку. Затем подготовить флешку, и перенести файлы на эту флешку.
Выберите флешку, у которой большая скорость чтения и записи.
Подготовка файлов
1. Создайте папку
_x000D_mkdir -p /media/ubuntu/root2. Подготовьте среду
_x000D_apt install debootstrap -y_x000D__x000D_cd /media/ubuntu_x000D_debootstrap --arch amd64 focal root http://ru.archive.ubuntu.com/ubuntu3. Смонтируйте папки
_x000D_yes | cp /etc/apt/sources.list /media/ubuntu/root/etc/apt/sources.list_x000D_yes | cp /etc/resolv.conf /media/ubuntu/root/etc/resolv.conf_x000D__x000D_mount -t proc proc /media/ubuntu/root/proc_x000D_mount -t sysfs sys /media/ubuntu/root/sys_x000D_mount -o bind /dev /media/ubuntu/root/dev_x000D_mount -t devpts none /media/ubuntu/root/dev/pts_x000D__x000D_echo "127.0.0.1 ubuntu" > /media/ubuntu/root/etc/hosts_x000D_echo "ubuntu" > /media/ubuntu/root/etc/hostname4. Сделайте chroot
_x000D_chroot /media/ubuntu/root5. Установите базовое ПО
_x000D_locale-gen en_US.UTF-8_x000D_locale-gen ru_RU.UTF-8_x000D_apt update_x000D_apt install aptitude -y_x000D_aptitude upgrade -y_x000D_aptitude install apt-utils -y_x000D_aptitude install libgcc1 libstdc++6 -y_x000D_aptitude install debconf-i18n -yУстановите системные пакеты:
_x000D_aptitude install bash-completion bsdmainutils psmisc update-motd uuid-runtime _x000D_ ubuntu-standard linux-base linux-generic dbus bridge-utils _x000D_ cron htop mc nano curl dnsutils sudo grep man anacron iotop preload _x000D_ g++ gcc cpp openssh-client unrar unar bzip2 zip unzip p7zip-full _x000D_ python2.7 python3 tar mtools grub-efi grub-efi-amd64 attr inxi _x000D_ traceroute xfsprogs network-manager dnsmasq resolvconf -yУстановите Openbox и LXQT
_x000D_aptitude install xorg openbox sddm sddm-theme-maldives gmrun xterm update-manager _x000D_ nitrogen compton lxappearance lxappearance-obconf xxkb xkbind gxkb _x000D_ obconf obconf-qt alsa alsaplayer alsa-base alsa-tools alsa-utils alsamixergui _x000D_ lxqt lxqt-about lxqt-core lxqt-config lxqt-sudo lxqt-qtplugin lxqt-panel _x000D_ kde-spectacle scrot gnome-disk-utility pulseaudio dconf-editor gnome-screensaver _x000D_ pavumeter pavucontrol pavucontrol-qt smbclient gvfs-bin libnotify-bin -yУстановите темы
_x000D_aptitude install adwaita-icon-theme-full adwaita-qt breeze-icon-theme gtk3-engines-breeze _x000D_ breeze breeze-cursor-theme breeze-gtk-theme breeze-icon-theme _x000D_ qt5-style-plugins ubuntu-gnome-wallpapers ubuntu-wallpapers-bionic _x000D_ ubuntu-gnome-wallpapers kubuntu-wallpapers-bionic gnome-backgrounds -yУстановите приложения:
_x000D_aptitude install gedit audacious baobab firefox konsole chromium-browser ffmpeg _x000D_ vlc geany geany-plugins libreoffice okular gwenview pinta ark _x000D_ filezilla gnome-terminal systemsettings florence abiword _x000D_ dolphin plasma-framework plasma-workspace plasma-sdk -yУстановите драйвера:
_x000D_aptitude install xserver-xorg-input-synaptics -y6. Настройте среду
Сконфигурируйте раскладку клавиатуры на переключение через Ctrl+Shift:
nano /etc/default/keyboard
_x000D_# KEYBOARD CONFIGURATION FILE_x000D__x000D_# Consult the keyboard(5) manual page._x000D__x000D_XKBMODEL=""_x000D_XKBLAYOUT="us,ru"_x000D_XKBVARIANT=""_x000D_XKBOPTIONS="grp:ctrl_shift_toggle,grp_led:scroll"_x000D__x000D_BACKSPACE="guess"Настройте sddm в качестве display manager по умолчанию:
_x000D_echo "/usr/bin/sddm" > /etc/X11/default-display-manager _x000D_sddm --example-config > /etc/sddm.conf_x000D_Укажите в /etc/sddm.conf тему maldives:
_x000D_sed -i -- 's/Session=openbox.dektop/Session=plasma.dektop/g' /etc/sddm.conf_x000D_sed -i -- 's/Current=breeze/Current=maldives/g' /etc/sddm.conf_x000D_cp /usr/share/xsessions/openbox.desktop /usr/share/xsessions/plasma.desktopКопирование openbox в plasma нужно, потому что sddm при автоматическом входе без авторизации пытается найти plasma.desktop и игнорирует параметр Session.
Укажите иконки по умолчанию:
_x000D_update-alternatives --set x-cursor-theme /etc/X11/cursors/breeze_cursors.theme7. Создайте пользователя ubuntu
_x000D_echo "%wheel ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers_x000D_useradd -m --shell /bin/bash ubuntu_x000D_usermod -a -G sudo ubuntu_x000D_groupadd -r wheel_x000D_usermod -a -G wheel ubuntu_x000D_chmod 700 /home/ubuntu_x000D_chown -R ubuntu:ubuntu /home/ubuntuУкажите sddm, чтобы он грузился без пароля:
_x000D_sed -i -- 's/User=/User=ubuntu/g' /etc/sddm.conf_x000D_sed -i -- 's/Session=/Session=openbox.desktop/g' /etc/sddm.confУстановите пароль для пользователя ubuntu (Пароль ubuntu):
_x000D_passwd ubuntu8. Установите BFQ
В файл /etc/default/grub добавить в параметр GRUB_CMDLINE_LINUX_DEFAULT строчку
_x000D_scsi_mod.use_blk_mq=1Добавить в файл /etc/initramfs-tools/modules строчку
_x000D_bfqСоздать файл /etc/udev/rules.d/60-scheduler.rules и добавить
_x000D_ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"9. Установите iptables
_x000D_aptitude install iptables-persistentПропишите в /etc/iptables/rules.v4 следующее содержимое:
_x000D_*filter_x000D_:INPUT ACCEPT [19:913]_x000D_:FORWARD ACCEPT [0:0]_x000D_:OUTPUT ACCEPT [39:3584]_x000D_:ALLOW-INPUT - [0:0]_x000D_-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT_x000D_-A INPUT -p icmp -j ACCEPT_x000D_-A INPUT -i lo -j ACCEPT_x000D__x000D_# Перейти к цепочке ALLOW-INPUT_x000D_-A INPUT -j ALLOW-INPUT_x000D__x000D_# Запрещаем остальные входящие соединения_x000D_-A INPUT -j REJECT_x000D_-A FORWARD -j REJECT_x000D__x000D_-A ALLOW-INPUT -j RETURN_x000D__x000D_COMMITОбязателен ENTER в конце (перевод на новую строку). Скопируйте rules.v4 в rules.v6
_x000D_cp /etc/iptables/rules.v4 /etc/iptables/rules.v610. Установите конфиги домашней папки от openbox
Это уже настроенная конфигурация рабочего стола Openbox с темой Breeze.
_x000D_cd /tmp_x000D_wget /wp-content/uploads/blinux/openbox_18_04.config.zip_x000D_unzip /tmp/openbox_18_04.config.zip_x000D_cp -aT /tmp/.bak/ /home/ubuntu/_x000D_chown -R ubuntu:ubuntu /home/ubuntu_x000D_rm -rf /tmp/.bak/11. Отредактируйте файл grub
_x000D_nano /etc/default/grubУстановите строки:
_x000D_#GRUB_TIMEOUT_STYLE=hidden_x000D_GRUB_TIMEOUT=5_x000D_GRUB_CMDLINE_LINUX_DEFAULT="scsi_mod.use_blk_mq=1"_x000D_12. Настройте Network Manager
Измените файл /etc/NetworkManager/NetworkManager.conf
_x000D_[main]_x000D_#auth-polkit=false_x000D_plugins=ifupdown,keyfile_x000D_systemd-resolved=false_x000D_rc-manager=resolvconf_x000D_dns=default_x000D__x000D_[ifupdown]_x000D_managed=false_x000D__x000D_[device]_x000D_wifi.scan-rand-mac-address=noВ файле /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf пропишите строчку:
_x000D_[keyfile]_x000D_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
_x000D_systemctl disable systemd-networkd.socket_x000D_systemctl disable systemd-networkd.service_x000D_systemctl disable systemd-resolved_x000D_systemctl disable networkd-dispatcher_x000D_systemctl disable connmanСкопируйте конфиг:
_x000D_cp /etc/dnsmasq.conf /etc/dnsmasq.conf.example_x000D_echo "" > /etc/dnsmasq.confВ /etc/dnsmasq.conf пропишите:
_x000D_port=53_x000D_listen-address=127.0.0.1_x000D_no-dhcp-interface=_x000D_bind-interfaces_x000D_expand-hosts_x000D_local-ttl=1_x000D_conf-dir=/etc/dnsmasq.dСоздайте файл /etc/dnsmasq.d/dns
_x000D_server=8.8.8.8_x000D_server=8.8.4.4_x000D_server=1.1.1.113. Установите Ядро 5.3
_x000D_apt remove xorg_x000D_apt-get install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04 15. Удалите лишние приложения
_x000D_aptitude purge connman16. Выйдите из chroot
_x000D_exitОтмонтируйте папки
_x000D_umount /media/ubuntu/root/proc_x000D_umount /media/ubuntu/root/sys_x000D_umount /media/ubuntu/root/dev/pts_x000D_umount /media/ubuntu/root/devУдалите содержимое папки dev
_x000D_rm -rf /media/ubuntu/root/dev/*Перезагрузитесь
Перенос файлов на флешку
1. Подключите флешку. И узнайте на каком устройстве она подключена.
Это можно сделать через команду
_x000D_fdisk -lлибо запустить программу
_x000D_gnome-disksУ меня флешка значится под устройством /dev/sdb
2. Создание разделов на флешке
Выполните команду создания GPT разметки. Убедитесь, что указан верный диск. В моем случае это /dev/sdb.
_x000D_parted /dev/sdb mklabel gptДанная команда выдаст предупреждение, что все данные на выбранном диске будут уничтожены. Еще раз убедитесь в правильности устройства.
_x000D_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?_x000D_Yes/No?Если все верно, введите Yes.
_x000D_YesВыведите на экран результат
_x000D_parted /dev/sdb printУ меня выдало следующее
_x000D_Model: JetFlash Transcend 8GB (scsi)_x000D_Disk /dev/sdb: 8103MB_x000D_Sector size (logical/physical): 512B/512B_x000D_Partition Table: gpt_x000D_Disk Flags:_x000D__x000D_Number Start End Size File system Name FlagsТеперь нужно создать разделы на флешке. Запустите программу
_x000D_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
Выполните команду
_x000D_blkidОна выдаст UUID дисков. Примерно следующее:
_x000D_/dev/sdb1: SEC_TYPE="msdos" LABEL="efi" UUID="8F2E-54C2" TYPE="vfat" PARTUUID="09c37ee0-6005-4b9e-b953-02f7a4571e66"_x000D_/dev/sdb2: LABEL="swap" UUID="09431b9f-fa47-4aed-9699-824d7128bedd" TYPE="swap" PARTUUID="89eae7e6-7a0a-4b62-9e8f-f49b97d24562"_x000D_/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
_x000D_# /etc/fstab: static file system information._x000D_#_x000D_# Use 'blkid' to print the universally unique identifier for a_x000D_# device; this may be used with UUID= as a more robust way to name devices_x000D_# that works even if disks are added and removed. See fstab(5)._x000D_#_x000D_# <file system> <mount point> <type> <options> <dump> <pass>_x000D_# / was on /dev/sda1 during installation_x000D_UUID=cecd3222-1c6c-4eee-af58-786fa8c27656 / ext4 errors=remount-ro 0 1_x000D_UUID=8F2E-54C2 /boot/efi vfat umask=0077 0 1_x000D__x000D_# swap was on /dev/sda4 during installation_x000D_UUID=09431b9f-fa47-4aed-9699-824d7128bedd none swap sw 0 03. Смонтируйте флешку в /media/ubuntu/usb
_x000D_mkdir -p /media/ubuntu/usb_x000D_mount /dev/sdb3 /media/ubuntu/usb_x000D_4. Скопируйте содержимое /media/ubuntu/root в /media/ubuntu/usb
_x000D_rsync -aSsuh --info=progress2 --numeric-ids --bwlimit=10240 --delete --exclude 'proc' --exclude 'sys' --exclude 'dev' /media/ubuntu/root/ /media/ubuntu/usb/Сбросьте кэш на диск:
_x000D_sync -f5. Смонтируйте остальные папки:
_x000D_mkdir -p /media/ubuntu/usb/proc_x000D_mkdir -p /media/ubuntu/usb/sys_x000D_mkdir -p /media/ubuntu/usb/dev_x000D__x000D_mount -t proc proc /media/ubuntu/usb/proc_x000D_mount -t sysfs sys /media/ubuntu/usb/sys_x000D_mount -o bind /dev /media/ubuntu/usb/dev_x000D_mount -t devpts none /media/ubuntu/usb/dev/pts_x000D__x000D_mkdir -p /media/ubuntu/usb/boot/efi_x000D_mount /dev/sdb1 /media/ubuntu/usb/boot/efi6. Сделайте chroot
_x000D_chroot /media/ubuntu/usb7. Выполнить команды
_x000D_grub-install /dev/sdb3_x000D_update-initramfs -u_x000D_update-grub8. Выйдите из chroot
_x000D_exit9. Отмонтируйте папки
_x000D_umount /media/ubuntu/usb/proc_x000D_umount /media/ubuntu/usb/sys_x000D_umount /media/ubuntu/usb/dev/pts_x000D_umount /media/ubuntu/usb/dev_x000D_umount /media/ubuntu/usb/boot/efi_x000D_umount /media/ubuntu/usb_x000D_10. Запустите cfdisk и проверьте тип разделов
_x000D_cfdisk /dev/sdbДля:
/dev/sdb1 — EFI System
/dev/sdb2 — Linux swap
/dev/sdb3 — Должно стоять Linux root x86-64
Если так не написано, то нужно поменять на соотвествующие значения, и после измененений, выбрать пункт Write и написать yes. Затем сделать quit.
Проверка флешки через QEMU
Установите qemu
_x000D_aptitude update_x000D_aptitude install qemu-kvm -yСделайте
_x000D_lsusbНайдите строчку с USB флешки. У меня она выглядит следующим образом.
_x000D_Bus 002 Device 005: ID 8564:1000 Transcend Information, Inc. JetFlashЗапустите qemu с параметрами bus, device для флешки:
_x000D_qemu-system-x86_64 -m 1G -cpu host -enable-kvm -usb -device usb-host,vendorid=0x8564,productid=0x1000либо, если ID такиж несколько, то указать bus и addr:
_x000D_qemu-system-x86_64 -m 1G -cpu host -enable-kvm -usb -device usb-host,hostbus=2,hostaddr=5