Продолжаем неделю «обожания linux на хабре», но не в стиле «линукс — это свободка, линукс — перспективно» https://habr.com/ru/companies/gnivc/articles/746104/ https://habr.com/ru/articles/746064/ , а берем в руки клаву‑мышь, и начинаем ставить этот Ваш линукс на свой комп с любименькой виндой.

Зачем это надо:

1. Linux работает на физической машине, а не на виртуальной машине, поэтому потерь в эффективности нет.

2. Один файл vhd/vdi можно загрузить как в режиме Legacy BIOS, так и в режиме UEFI.

3. Linux не нужен ни диск, ни раздел, только файл. Например, Windows является вашей основной ОС, и вы помещаете несколько файлов Ubuntu/Debian/Arch... каждый в своём VHD‑файле на С:\. Вы можете загрузить любой из них, как хотите. Если он вам больше не нужен, просто удалите его как обычный файл.


Качаем нашу самую русиянскую AstraLinux https://download.astralinux.ru/astra/stable/2.12_x86-64/iso/alce-2.12.46.6-17.04.2023_15.09.iso

Качаем буржуйский VirtualBox https://download.virtualbox.org/virtualbox/7.0.8/VirtualBox-7.0.8-156879-Win.exe

Ставим VirtualBox, создаём машину, Переходим в Экспертный режим.

Имя - любое
Образ ISO - подключаем alce-2.12.46.6-17.04.2023_15.09.iso
Тип Linux
Версия - не важно

Оборудование >
Указываем выделение памяти >=2Гб (не 1Гб, иначе будет ошибка Initramfs Unpacking Failed)
Процессоры - укажите больше чем 1
Включаем галку "Включить EFI (Только специальные ОС)" !!ОБЯЗАТЕЛЬНО!!
(можно ставить и без галки, разница в том, что с галкой диск будет размечен как GPT, без Галки как MBR и без галки при загрузке в EFI надо будет лишний раз нажимать ENTER (vdiskchain будет писать, что образ только для Legacy)).

Жесткий диск >
Тип VHD (можно VDI разницы нет)
Ставим галочку "Выделить место в полном размере" !!ОБЯЗАТЕЛЬНО!!
Создаем C:\Astra.vhd файл >=10Гб (стандартная установка astra занимает 7,4Гб)
Лучше в корне диска, но не обязательно

Начинаем установку в VirtualBox
Разметка дисков - вручную
Выбираем SCSI1 sda
Создать новую пустую таблицу разделов - ДА

Если не хотите заморачиваться, то выбирайте авторазметку
Или как настоящий линуксоид делаем всё по‑своему:
Выбираем Свободное место
Выбираем Создать новый раздел
Размер 10MB
Первичный
Конец
Использовать как: FAT16 (если хотите FAT32 то размер диска должен быть >=100MB, но у меня на реальной машине с FAT32 почему то не загружался, только с FAT16)
Точка монтирования: ввести вручную /boot/efi
Настройка раздела закончена.

Выбираем Свободное место
Выбираем Создать новый раздел
Размер ENTER (максимальный)
Первичный
Параметры монтирования - можно добавить - discard, noatime, nodirtime
Зарезервированные блоки - 0%
Настройка раздела закончена

Закончить разметку и записать изменения на диск.

Не найдено разделов EFI - НЕТ
Не указали раздел для подкачки - НЕТ (если памяти на реальной машине мало (<=2Gb), то создаём раздел)
Записать изменения на диск - ДА

Ядро 5.15-generic

Системные часы установлены на местное время !!ОБЯЗАТЕЛЬНО!! иначе будет разница в 3 часа между linux и windows.

Включить автологин в систему (если надо, в панели управления можно выключить)

Загрузчик GRUB - ДА !!ОБЯЗАТЕЛЬНО!!
Выбираем /dev/sda

Итак, вы установили astra на GPT с EFI-загрузчиком.

Теперь добавляем MBR-загрузчик, если не нужна загрузка из Legacy то можете пропустить.

Загружаем виртуальную машину, запускаем fly-terminal.

sudo su
apt update
apt install grub-pc-bin

Итак мы добавили MBR-загрузчик.

Теперь патчим astra для загрузки на реальной машине запускаем терминал:
wget https://github.com/ventoy/vtoyboot/releases/download/v1.0.29/vtoyboot-1.0.29.iso
или смотрим версию новее https://github.com/ventoy/vtoyboot/releases
7z x vtoyboot-1.0.29.iso
tar -xvf vtoyboot-1.0.29.tar.gz
cd vtoyboot-1.0.29
sudo sh vtoyboot.sh

Выключаем виртуальную машину и проверяем загрузку в обоих режимах MBR и EFI
со включённой и выключенной галкой "Включить EFI (Только специальные ОС)" (Настройки->Система).

Теперь подготавливаем образ к загрузке на реальном железе.

К файлу vhd добавляем окончание .vtoy получится astra.vhd.vtoy !!ОБЯЗАТЕЛЬНО!!


Самый простой способ загрузить astra.vhd.vtoy - это установить https://www.ventoy.net/ на флешку и из неё запустить astra.vhd.vtoy.

Но можно загрузить astra.vhd.vtoy из виндового загрузчика, через Grub4dos, но только режиме загрузки Legacy.

Для загрузки через Legacy:
Качаем Grub4Dos http://dl.grub4dos.chenall.net/grub4dos-0.4.6a-2023-06-10.7z
Именно grub4dos-0.4.6a-2023-06-10.7z следующие версии выдают ошибку c000007b при загрузке из виндового загрузчика.
В корне диска С кладем файл grldr
В корне диска С кладем файл menu.lst и добавляем:

title Astra.vhd.vtoy
kernel (hd0,1)/ipxe.krn vdisk=/Astra.vhd.vtoy
initrd (hd0,1)/vdiskchain

Другой вариант:

kernel (hd0,msdos1)/ipxe.krn vdisk=/Astra.vhd.vtoy
initrd (hd0,msdos1)/vdiskchain

(hd0,msdos1) диск и раздел где лежит astra.vhd.vtoy

Кладём файл vdiskchain и ipxe.krn вместе с файлом astra.vhd.vtoy
https://github.com/ventoy/vdiskchain/releases/download/v1.3/vdiskchain-1.3.tar.gz

Загрузку Grub4Dos прописываем в виндовый загрузчик.
В BootIce открыть bcd файл и добавить RealMode Grub/Linux
Указать раздел где находится grldr
Изменить \grldr.mbr на \grldr
Перезагружаемся - выбираем из меню запись с grub

Или в BootIce загрузку Grub4Dos прописать на сам раздел диска.
Выбираем диск - управление MBR - GRUB - Инсталляция - 0.4.6a - Сохранить на диск
перезагружаемся - F8/F11 и выбираем диск, на который установили grub.


Для загрузки через UEFI нужно установить другой загрузчик (grub4dos-for_UEFI, rEFInd, grub2-efi), но лучше использовать загрузчики SilentSuperBoot (Super-UEFIinSecureBoot-Disk_minimal_v3.zip) или Ventoy, там есть MokManager и поддержка SecureBoot.

Кладем файл vdiskchain вместе с файлом astra.vhd.vtoy
https://github.com/ventoy/vdiskchain/releases/download/v1.3/vdiskchain-1.3.tar.gz

В grub2-efi или в другом загрузчике добавить новый пункт меню:

menuentry 'Astra' {
	search --no-floppy --file /astra.vhd.vtoy --set root
	chainloader /vdiskchain vdisk=/astra.vhd.vtoy
}

Другие примеры:

==== 2.1 i386-pc ====
grub4dos:
kernel /ipxe.krn vdisk=/MyVdiskDir/Astra.vhd.vtoy
initrd /vdiskchain

GRUB2:
linux16 (hd0,1)/ipxe.krn vdisk=/MyVdiskDir/Astra.vhd.vtoy
initrd16 (hd0,1)/vdiskchain

==== 2.2 x86-64-efi ====
grub2:
chainloader (hd1,1)/test123/vdiskchain vdisk=/MyVdiskDir/Astra.vhd.vtoy

rEFInd:
loader /vdiskchain vdisk=/MyVdiskDir/Astra.vhd.vtoy

Systemd-boot:
efi /vdiskchain vdisk=/MyVdiskDir/Astra.vhd.vtoy


Исправляем разные ошибки :

Если не запускается на реальном железе в EFI то загрузить в другой linux например в xubuntu. Там должен раздел FAT быть виден и монтироваться, если не виден, то удалить весь раздел и создать заново.

C помощью blkid узнать UUID нового раздела и изменить его в /etc/fstab

mkfs.vfat /dev/sda1

#sed "/boot/efi/d" /etc/fstab > /etc/fstab2
#blkid /dev/sda1 | cut -f2 -d' ' >> /etc/fstab2

#blkid /dev/sda1 | awk '{print $2," /boot/efi vfat utf8 0 0"}' >> /etc/fstab
#blkid /dev/sda1 | awk '{print $3," /boot/efi vfat utf8 0 0"}' >> /etc/fstab

UUID=1234-1234 /boot/efi vfat utf8 0 0

Если не запускается на реальном железе в Lefacy
Если пишет "Waiting for vtoy device...", то надо дефрагментировать файл образа Astra.vhd.vtoy.

Скачайте Defraggler https://www.softportal.com/get-8257-defraggler.html
Можно не устанавливать программу, а открыть dfsetup222.exe как архив (7z или через TotalCommander с помощью Ctrl+PageDown)
Там есть утилита для дефрагментации отдельных файлов.
Скопировать df.exe из архива в c:
В коммандной строке запустить
c:\df.exe c:/Astra.vhd.vtoy

Второй вариант установки без галки "Включить EFI (Только специальные ОС)". Разница лишь, в том, что при загрузке на реальной машине, надо будет лишний раз нажимать ENTER (vdiskchain будет писать, что образ только для Legacy).
Устанавливаем также, но теперь добавляем EFI-загрузчик на раздел FAT.
Если не нужна загрузка из UEFI то можете пропустить.

Загружаем виртуальную машину, запускаем fly-terminal
sudo su
apt update
apt install grub-efi-amd64-bin

mkdir -p /boot/efi/efi/boot
cp /usr/lib/grub/x86_64-efi/monolithic/grubx64.efi /boot/efi/efi/boot/bootx64.efi
cp /boot/grub/grub.cfg /boot/efi/efi/boot/

Итак мы добавили EFI-загрузчик на раздел FAT.


Чтобы работал Bluetooth:

apt install blueman fly-admin-bluetooth

Задать пустой пароль пользователя или короче 8 символов:

sudo usermod -p '' user

Установить драйвер для Nvidia:

apt install nvidia-driver-510

или sudo sh astra-nvidia если карта старее nvida rtx.

Установить вайн

apt install wine-staging winetricks


Подключаем разные USB WI-FI.

=========================

Tp-link 150m
0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
Удивительно, но подключается и работает.

=========================

Китайская 802.11n с красным ободком
0bda:f179 Realtek USB Wireless Adapter Drivers [rtl8188fu]

sudo apt update && sudo apt-get install build-essential git dkms linux-headers-$(uname -r)
git clone https://github.com/kelebek333/rtl8188fu

mcedit ./rtl8188fu/Makefile

CONFIG_POWER_SAVING = n
CONFIG_WIFI_MONITOR = y

sudo dkms add ./rtl8188fu
sudo dkms build rtl8188fu/1.0
sudo dkms install rtl8188fu/1.0
sudo cp ./rtl8188fu/firmware/rtl8188fufw.bin /lib/firmware/rtlwifi/
sudo modprobe rtl8188fu

=========================

Ourlink 300m
0bda:818b Realtek Semiconductor Corp. RTL8192EU 802.11b/g/n WLAN Adapter
RTL8192EU rev B (SMIC) 2T2R, TX queues 3, WiFi=1, BT=0, GPS=0, HI PA=0
Видит сети, но не подключается.

sudo apt update && sudo apt-get install linux-headers-$(uname -r) build-essential dkms git

git clone https://github.com/clnhub/rtl8192eu-linux.git
cd rtl8192eu-linux
sudo rmmod rtl8xxxu
echo "blacklist rtl8xxxu" >> ./blacklist-rtl8xxxu.conf
sudo mv ./blacklist-rtl8xxxu.conf /etc/modprobe.d/
sudo dkms add .
sudo dkms install rtl8192eu/1.0
sudo modprobe 8192eu

=========================

Comfast 600Mb
0bda:c811 Realtek Semiconductor Corp. 802.11ac NIC
https://4te.me/post/realtek-8821-linux-driver/
Linux Driver for USB WiFi Adapters that are based on the RTL8811CU, RTL8821CU, RTL8821CUH and RTL8731AU Chipsets

sudo apt update && sudo apt install build-essential git dkms bc iw rfkill

git clone https://github.com/morrownr/8821cu-20210916.git
cd 8821cu-20210916
sudo sh install-driver.sh

==============================

Netgear rtl8812au

sudo apt update && sudo apt install build-essential git dkms bc iw rfkill

git clone https://github.com/gnab/rtl8812au.git
sudo cp -r rtl8812au /usr/src/rtl8812au-4.2.2
sudo apt install dkms
sudo dkms add -m rtl8812au -v 4.2.2
sudo dkms build -m rtl8812au -v 4.2.2
sudo dkms install -m rtl8812au -v 4.2.2
sudo modprobe rtl8812au

==============================

0b05:17eb Asus USB-AC55 Wireless-AC1300
This driver supports Ralink / Mediatek mt766u, mt7632u and mt7612u chipsets.
the driver supports several USB dongles such as Netgear-A6210, ASUS USB-AC55, ASUS USB-N53 and EDUP EP-AC1601

sudo apt-get install git build-essential linux-headers-$(uname -r)
git clone https://github.com/jurobystricky/Netgear-A6210.git
cd Netgear-A6210
make
sudo make install

==============================

Если будет много лайков, добавлю видео с полным процессом установки...

(а то только минусовать можете за просто так..)

На хабре есть подобная статья https://habr.com/ru/companies/domclick/articles/547150/ но у меня linux по этой статье не загрузился.

Комментарии (9)


  1. anzay911
    05.07.2023 19:13
    +3

    У Microsoft есть статья по добавлению VHD с Windows в bcdboot. Если кому-то не хочется GRUB.
    https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/boot-to-vhd--native-boot--add-a-virtual-hard-disk-to-the-boot-menu?view=windows-11


    1. DikSoft
      05.07.2023 19:13

      Если не изменяет память, загрузка в VHDX работала только для Exterprise редакций Windows. Может сейчас и сняли ограничение, в описании процесса настройки его уже нет


      1. temnikov_vasiliy Автор
        05.07.2023 19:13

        в win10 загрузка из bcd другой винды из vhdx-файла работает с любыми редакциями.


    1. temnikov_vasiliy Автор
      05.07.2023 19:13

      там не про то.. виндовый загрузчик может загрузить другую винду, из vhdx-файла. поэтому grub'ов не избежать..


  1. DoMoVoY
    05.07.2023 19:13
    +2

    Не хватает нормальной разметки в статье. Хотя бы моношрифт для команд и вывода или как блок кода. Нагляднее на ключевых этапах скриншоты, чтобы свериться верно ли идет процесс. А попрошайничество лайков в конце выглядит не прилично. Ну и скриншоты с описанием для хабра будет лучше, чем видео.


    1. temnikov_vasiliy Автор
      05.07.2023 19:13
      -3

      я не писатель, а тоже читатель, как и все. я старался, как мог, но тутошний редактор это ужас-ужасный...


      1. VictorFilimonov
        05.07.2023 19:13
        +1

        Ну... То, что выполняется в коммандной строке, можно выделить как код...

        Выглядеть будет так:

        Пример какого-то кода

        Выделяете текст, кликаете на значок, похожий на "<>"

        Выглядеть будет лучше.

        Ещё, можно воспользоваться хайдами для больших кусков текста, но не совсем обязательных. Обозначается звёздочкой (*)

        Выглядит так

        Какой-то спрятанный текст, возможно,

        Многострочные
        Куски
        Кода

        И заголовки сделать чутка больше (не выделяя текст, тыкаете на кнопку "H", и в появившемся поле пишете название части статьи (например, "Шаг 1")

        А вообще, лучше прочесть эту статью, первый пункт. Там как раз куча рекомендаций по оформлению.


  1. NutsUnderline
    05.07.2023 19:13
    +2

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


  1. Demiourgos
    05.07.2023 19:13

    Это конечно мило, но после появления Вентоя на сцене я решил, шта ну его нафиг, лучше валяющийся без дела старый ССД с полки возьму и на него поставлю.