2024 год ☠️
Проект закрылся. Статья теперь, увы, только для памяти.
Попытка создать тестовую площадку на базе Linux Funtoo под VMWare. Изначально хотелось использовать ZFS в качестве базовой файловой системы. Но, по замечаниям с официального сайта Linux Funtoo, пакет поддержки ZFS на момент установки 07.08.2022 не поддерживает ядра версии 5+. Поэтому ограничивается стандартной установкой. Правда в качестве среды рабочего стола попытаюсь использовать xfce4, с акселерацией графики. Далее по шагам официальной документации, с некоторыми собственными улучшениями, которые каcаются только уменьшения интерактивного взаимодействия с программным инструментарием.
Создаем виртуальную машину с включенной виртуализацией CPU, а в файл .vmx впишем или исправим, если есть, строчку firmware = "efi". При настройках CPU виртуальной машины выбираем "количество" CPU вдвое меньше количества физических, иначе возможны сбои VMWare при сборках портежей в гостевой системе. Выкачиваем образ LiveCD. На момент установки его можно было взять отсюда - *https://build.funtoo.org/livecd/funtoo-livecd-20220715-1607.iso
В запущенной из LiveCD гостевой системе проверяем полученный IP по DHCP:
ifconfig
Выставляем пароль руту:
passwd
Сервер по-умолчанию уже должен быть запущен, но если по каким-то причинам не запущен - запускаем:
/etc/init.d/sshd start
Запускаем SSH-клиент, например Putty, и логинимся рутом.
sgdisk /dev/sda -Z -g -a1
sgdisk -n1:2048:264191 -t1:EF00 --change-name=1:"EFI system partition" /dev/sda
sgdisk -n2:264192:8652799 -t2:8200 --change-name=2:"Linux swap" /dev/sda
sgdisk --largest-new=3 -t3:8300 --change-name=3:"Linux filesystem" /dev/sda
Должно получится что-то типа этой разметки, кроме размера последнего раздела:
gdisk -l /dev/sda
Number Start (sector) End (sector) Size Code Name 1 2048 264191 128.0 MiB EF00 EFI system partition 2 264192 8652799 4.0 GiB 8200 Linux swap 3 8652800 67108830 27.9 GiB 8300 Linux filesystem
Размечаем файловые системы
mkfs.vfat -F 32 /dev/sda1
mkswap /dev/sda2
swapon /dev/sda2
mkfs.ext4 /dev/sda3
# первая команда может выполниться с ошибкой, т.к. /mnt/funtoo может существовать
mkdir /mnt/funtoo
mount /dev/sda3 /mnt/funtoo
mkdir /mnt/funtoo/boot
mount /dev/sda1 /mnt/funtoo/boot
Это важно для правильной загрузки портежей.
date
# вывод: Tue Aug 9 06:51:56 AM UTC 2022
date 080906562022
# пример установки: Tue Aug 9 06:56:00 AM UTC 2022
Stage3 выбираем для своего типа проца, но без целей установки GNOME, Mate и прочих, ибо потом будем ставить XFCE. На момент написания этой заметки это лежало тут - https://build.funtoo.org/1.4-release-std/x86-64bit/intel64-ivybridge/2022-06-04/stage3-intel64-ivybridge-1.4-release-std-2022-06-04.tar.xz.
cd /mnt/funtoo
wget https://build.funtoo.org/1.4-release-std/x86-64bit/intel64-ivybridge/2022-06-04/stage3-intel64-ivybridge-1.4-release-std-2022-06-04.tar.xz
tar --numeric-owner --xattrs --xattrs-include='*' -xpf stage3-intel64-ivybridge-1.4-release-std-2022-06-04.tar.xz
cd /mnt/funtoo
mount --rbind /proc proc
mount --rbind /sys sys
mount --rbind /dev dev
cp /etc/resolv.conf /mnt/funtoo/etc/
chroot . /bin/su --login
Сперва тестируем подключение к сети интернет пингом, потом используем утилиту ego:
ping -c 5 google.com
ego sync
Часть файлов конфигурации подлежит обязательной правке. Отдельная информация по файлу конфигурации /etc/make.conf - авторы проекта Funtoo (в отличии от Gentoo) этот файл не рекомендуют править, т.к. так как настройки были перенесены в расширенную систему профилей.
Для начала запускаем lsblk
lsblk
Наблюдаем:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 1.5G 1 loop sda 8:0 0 32G 0 disk ├─sda1 8:1 0 128M 0 part /boot ├─sda2 8:2 0 4G 0 part [SWAP] └─sda3 8:3 0 27.9G 0 part / sr0 11:0 1 1.8G 0 rom
Редактируем:
nano -w /etc/fstab
И приводим к виду:
/dev/sda1 /boot vfat noauto,noatime 1 2 /dev/sda2 none swap sw 0 0 /dev/sda3 / ext4 noatime 0 1
Делаем ссылкой:
ln -sf /usr/share/zoneinfo/Europe/Minsk /etc/localtime
Так как двойной загрузки с Windows у нас нет - этот файл не правим.
nano -w /etc/locale.gen
Приводим к виду:
en_US.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8
locale-gen
eselect locale list
Available targets for the LANG variable: [1] C [2] C.utf8 [3] POSIX [4] en_US.utf8 [5] ru_RU.utf8 [ ] (free form)
eselect locale set 5
env-update && source /etc/profile
nano -w /etc/portage/make.conf
L10N="en-US ru-RU" LINGUAS="en_US ru_RU"
emerge slang
emerge app-misc/mc
emerge -av linux-firmware
emerge -av grub
emerge intel-microcode iucode_tool
mount -o remount,rw /sys/firmware/efi/efivars
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="Funtoo Linux [GRUB]" --recheck /dev/sda
ego boot update
Для VMWare это конечно можно пропустить. Обычно это ставят под мобильные устройства типа ноутбуков
emerge linux-firmware networkmanager
rc-update add NetworkManager default
На этапе установки будет использоваться DHCP, будет установлен статический ШЗ-адрес.
rc-update add dhcpcd default
nano /etc/conf.d/hostname
Важный этап, иначе после перезагрузки в систему войти будет невозможно - только повторная загрузка и настройка с LiveCD!
passwd
useradd -m majestio
usermod -G wheel,audio,video,plugdev,portage majestio
passwd majestio
emerge haveged
rc-update add haveged default
exit
cd /mnt
umount -lR funtoo
reboot
После рестарта логинимся SSH-клиентом под регулярным пользователем (majestio) и производим установку утилит:
su
emerge e2fsprogs
emerge scrub
rm -f /var/cache/portage/distfiles/*
rm -f /stage3*
e4defrag /dev/sda3
scrub -X /root/scrub -p fillzero
shutdown -Ph now
epro mix-in +vmware-guest +xfce +gfxcard-vmware Вывод:
=== Enabled Profiles: === arch: x86-64bit build: current subarch: intel64-ivybridge flavor: core mix-ins: vmware-guest mix-ins: gfxcard-vmware mix-ins: xfce Updating profiles at /etc/portage/make.profile/parent...
emerge --autounmask-write xorg-x11 pulseaudio networkmanager lightdm
mv /etc/portage/._cfg0000_package.use /etc/portage/package.use
emerge xorg-x11 pulseaudio networkmanager lightdm
emerge --autounmask-write xfce4-meta
cat /etc/portage/._cfg0000_package.use >> /etc/portage/package.use
emerge xfce4-meta
epro flavor desktop
epro
=== Enabled Profiles: === arch: x86-64bit build: current subarch: intel64-ivybridge flavor: desktop mix-ins: vmware-guest mix-ins: gfxcard-vmware mix-ins: xfce === Python kit: === branch: 3.7-release === All inherited flavor from desktop flavor: === workstation (from desktop flavor) core (from workstation flavor) minimal (from core flavor) === All inherited mix-ins from desktop flavor: === X (from workstation flavor) audio (from workstation flavor) dvd (from workstation flavor) media (from workstation flavor) mediadevice-audio-consumer (from media mix-in) mediadevice-base (from mediadevice-audio-consumer mix-in) mediadevice-video-consumer (from media mix-in) mediadevice-base (from mediadevice-video-consumer mix-in) mediaformat-audio-common (from media mix-in) mediaformat-gfx-common (from media mix-in) mediaformat-video-common (from media mix-in) console-extras (from workstation flavor) print (from desktop flavor) === All inherited mix-ins from gfxcard-vmware mix-ins: === core-gl-kit:gfxcard-vmware (from gfxcard-vmware mix-in)
emerge x11-libs/gdk-pixbuf
emerge open-vm-tools
media-libs/mesa
rc-update add vmware-tools default
emerge --update --newuse --deep @world
emerge --depclean
emerge virtual/libmysqlclient
emerge dev-db/postgresql
emerge x11-libs/libxkbcommon
Правим .xinitrc
Продолжение не следует ...