Иска ми се да покажа как могат да се разположат две операционни системи на една машина. Също така ще демонстрирам как към съществуващ и настроен Windows може да се добави Arch linux. Самия линукс ще е в минимален размер но ще е подготвен за по-нататъшна инсталация на графична среда. Демонстрацията ще се направи на виртуална машина със следните параметри: CPU: 4 ядра RAM: 4096MB HDD: 99GB BIOS: UEFI Целия твърд диск с размер 99GB ще е зает с операционната система Windows. Ще се постараем да отделим място от Windows, след което на него ще инсталираме Arch linu. Накрая на упражнението ще можем да изберем коя операционна система да стартираме. Ако пък не ни харесате Arch linux, ще демонстрираме как може да се изтрие и да остане пак само Windows.
Самата инсталацията на Windows няма да показвам. Да погледнем какво имаме до тук. В терминален прозорец във Windows като Administrator пишем:
diskpart list disk Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 99 GB 1024 KB * sel dis 0 Disk 0 is now the selected disk. lis par Partition ### Type Size Offset ------------- ---------------- ------- ------- Partition 1 System 100 MB 1024 KB Partition 2 Reserved 16 MB 101 MB Partition 3 Primary 98 GB 117 MB Partition 4 Recovery 546 MB 98 GB
Имаме създадени 4 дяла. Partition 1 - системен (EFI) с размер 100 MB Partition 2 - резервиран от системата 16 MB Partition 3 - първичен дял, тук са разположени всички файлове на ОС Windows. Partition 4 - специален дял на Windows, за възстановяване на системата. От това което виждаме, трябва да отделим място за Arch linux от дял 3 (Partition 3) За начало да видим томовете в системата и какви букви са присъединени към тях.
lis vol Volume ### Ltr Label Fs Type Size Status Info ------------- --- ------------- --------- ------------ ---------- ---------- -------- Volume 0 D ESD-ISO UDF CD-ROM 107 GB Healthy Volume 1 C NTFS Partition 98 GB Healthy Boot Volume 2 FAT32 Partition 100 MB Healthy System Volume 3 NTFS Partition 546 MB Healthy Hidden
Може малко объркващо да се вижда но да уточним: Partition 3 - дял на който е разположен Windows Volume 1 има присъединена буква C и тук е разположен Windows. От двете таблици се вижда, че размера е 98GB. Да отделим от тези 98GB, едни 35GB и на тях да разположим на по-късен етап Arch linux. Стъпките са: - избираме Partition 3 - избираме Volume 1 - свиваме размера на тома.
### Избираме дял 3 sel par 3 Partition 3 is now the selected partition. ### Избираме том 1 sel vol 1 Volume 1 is the selected volume. ### Проверяваме максимално колко място можем да отделим shrink querymax The maximum number of reclaimable bytes is: 80 GB (82333 MB) ### Можем да отделим 80GB, но ние искам само 35GB shr desired=35840 DiskPart successfully shrunk the volume by: 35GB ### Да проверим дяловете lis par Partition ### Type Size Offset ------------- ---------------- ------- ------- Partition 1 System 100 MB 1024 KB Partition 2 Reserved 16 MB 101 MB Partition 3 Primary 63 GB 117 MB Partition 4 Recovery 546 MB 98 GB ### Да проверим томовете lis vol Volume ### Ltr Label Fs Type Size Status Info ------------- --- ------------- --------- ------------ ---------- ---------- -------- Volume 0 D ESD-ISO UDF CD-ROM 107 GB Healthy Volume 1 C NTFS Partition 63 GB Healthy Boot Volume 2 FAT32 Partition 100 MB Healthy System Volume 3 NTFS Partition 546 MB Healthy Hidden ### Да проверим детайлно тома, първо го избираме sel vol 1 Volume 1 is the selected volume. ### Детайлно го проверяваме det vol Disk ### Status Size Free Dyn Gpt -------- --------- ------- --------- ----- ----- * Disk 0 Online 99 GB 35 GB * Read-only : No Hidden : No No Default Drive Letter: No Shadow Copy : No Offline : No BitLocker Encrypted : No Installable : Yes Volume Capacity : 63 GB Volume Free Space : 43 GB
Забележете, когато даваме информация за дяловете. Дял 3 е с размер 63GB, а дял 4 започва след 98GB. Това означава, че имаме едни 35GB незаети. На последната команда много ясно се вижда. Тях ще използваме за Arch linux. Да видим нагледно в Disk Management
Наистина имаме заделени 35GB свободно място.
Първо разменяме инсталационния диск. Слагаме на Arch linux. Зареждаме от него. За да можем да влезем отдалечено в системата през SSH е необходимо на root да дадем парола.
passwd New password: Pa$$ Retype new password: Pa$$ passwd: password updated successfully
Проверяваме IP адреса на системата.
ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:15:5d:0b:de:00 brd ff:ff:ff:ff:ff:ff altname enx00155d0bde00 inet 192.168.11.83/24 metric 100 brd 192.168.11.255 scope global dynamic eth0 valid_lft 409sec preferred_lft 409sec inet6 fe80::215:5dff:fe0b:de00/64 scope link proto kernel_ll valid_lft forever preferred_lft forever
Влизаме отдалечено през SSH на IP адреса който имаме. Проверяваме разпределението на диска.
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 846.7M 1 loop /run/archiso/airootfs sr0 11:0 1 1.2G 0 rom /run/archiso/bootmnt nvme0n1 259:0 0 99G 0 disk ├─nvme0n1p1 259:1 0 100M 0 part ├─nvme0n1p2 259:2 0 16M 0 part ├─nvme0n1p3 259:3 0 63.3G 0 part └─nvme0n1p4 259:4 0 546M 0 part lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS loop0 squashfs 4.0 0 100% /run/archiso/airootfs sr0 iso9660 Joliet Extension ARCH_202505 2025-05-01-10-09-37-00 0 100% /run/archiso/bootmnt nvme0n1 ├─nvme0n1p1 vfat FAT32 046F-5C0D ├─nvme0n1p2 ├─nvme0n1p3 ntfs 169A6FF19A6FCC35 └─nvme0n1p4 ntfs E87E83527E831908 fdisk /dev/nvme0n1 -l Disk /dev/nvme0n1: 99 GiB, 106300440576 bytes, 207618048 sectors Disk model: VMware Virtual NVMe Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 308C0407-3A8B-4A1D-B7CB-135265A61F0A Device Start End Sectors Size Type /dev/nvme0n1p1 2048 206847 204800 100M EFI System /dev/nvme0n1p2 206848 239615 32768 16M Microsoft reserved /dev/nvme0n1p3 239616 133093789 132854174 63.3G Microsoft basic data /dev/nvme0n1p4 206495744 207613951 1118208 546M Windows recovery environment
Да разпределим свободното пространство за Arch.
cfdisk /dev/nvme0n1
Да проверим какво разпределение получихме.
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 846.7M 1 loop /run/archiso/airootfs sr0 11:0 1 1.2G 0 rom /run/archiso/bootmnt nvme0n1 259:0 0 99G 0 disk ├─nvme0n1p1 259:5 0 100M 0 part ├─nvme0n1p2 259:6 0 16M 0 part ├─nvme0n1p3 259:7 0 63.3G 0 part ├─nvme0n1p4 259:8 0 546M 0 part ├─nvme0n1p5 259:11 0 512M 0 part └─nvme0n1p6 259:12 0 34.5G 0 part lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS loop0 squashfs 4.0 0 100% /run/archiso/airootfs sr0 iso9660 Joliet Extension ARCH_202505 2025-05-01-10-09-37-00 0 100% /run/archiso/bootmnt nvme0n1 ├─nvme0n1p1 vfat FAT32 046F-5C0D ├─nvme0n1p2 ├─nvme0n1p3 ntfs 169A6FF19A6FCC35 ├─nvme0n1p4 ntfs E87E83527E831908 ├─nvme0n1p5 └─nvme0n1p6 fdisk /dev/nvme0n1 -l Disk /dev/nvme0n1: 99 GiB, 106300440576 bytes, 207618048 sectors Disk model: VMware Virtual NVMe Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 308C0407-3A8B-4A1D-B7CB-135265A61F0A Device Start End Sectors Size Type /dev/nvme0n1p1 2048 206847 204800 100M EFI System /dev/nvme0n1p2 206848 239615 32768 16M Microsoft reserved /dev/nvme0n1p3 239616 133093789 132854174 63.3G Microsoft basic data /dev/nvme0n1p4 206495744 207613951 1118208 546M Windows recovery environment /dev/nvme0n1p5 133095424 134143999 1048576 512M EFI System /dev/nvme0n1p6 134144000 206495743 72351744 34.5G Linux filesystem Partition table entries are not in disk order. Partition table entries are not in disk order.
Ще работим с дялове /dev/nvme0n1p5 и /dev/nvme0n1p6. Забележете, имаме два дяла EFI System. Това са /dev/nvme0n1p1 и /dev/nvme0n1p5. Бихме могли да ползваме само 1 дял, примерно /dev/nvme0n1p1 но той е много малък и няма как да побере няколко ядра, освен това ако не ни хареса Archlinux няма как безболезнено да го изтрием. Затова се налага да създадем втори /dev/nvme0n1p5. Именно в него ще дефинираме двойното зареждане. Да подготвим дяловете които последно създадохме.
mkfs.vfat -F32 /dev/nvme0n1p5 mkfs.fat 4.2 (2021-01-31) mkfs.btrfs -f /dev/nvme0n1p6 btrfs-progs v6.14 See https://btrfs.readthedocs.io for more information. Performing full device TRIM /dev/nvme0n1p6 (34.50GiB) ... NOTE: several default settings have changed in version 5.15, please make sure this does not affect your deployments: - DUP for metadata (-m dup) - enabled no-holes (-O no-holes) - enabled free-space-tree (-R free-space-tree) Label: (null) UUID: e65c5f08-4ae2-4f65-8860-66c882506f44 Node size: 16384 Sector size: 4096 (CPU page size: 4096) Filesystem size: 34.50GiB Block group profiles: Data: single 8.00MiB Metadata: DUP 256.00MiB System: DUP 8.00MiB SSD detected: yes Zoned device: no Features: extref, skinny-metadata, no-holes, free-space-tree Checksum: crc32c Number of devices: 1 Devices: ID SIZE PATH 1 34.50GiB /dev/nvme0n1p6
Двата дяла са форматирани. В /dev/nvme0n1p6 трябва да разположим субволумета. За целта първо дяла ще го монтираме.
mount /dev/nvme0n1p6 /mnt
Да създадем и субволумета.
btrfs su cr /mnt/@ Create subvolume '/mnt/@' btrfs su cr /mnt/@var Create subvolume '/mnt/@var' btrfs su cr /mnt/@home Create subvolume '/mnt/@home' btrfs su cr /mnt/@snapshots Create subvolume '/mnt/@snapshots'
Размонтираме /mnt
umount /mnt -R
А сега да монтираме субволуметата. Има една специфика. В субволуме /@ се помещават останалите. За целта първо монтираме него.
mount -o rw,noatime,compress=zstd:3,ssd,ssd_spread,discard=async,space_cache=v2,subvol=/@ /dev/nvme0n1p6 /mnt
Да проверим какво имаме в него.
ls /mnt
Субволумето е празно. Сега в него първо ще създадем папки и в тях ще монтираме другите субволумета. За създаване на папките ще използваме една команда.
mkdir -p /mnt/{boot,var,home,.snapshots}
Забележете, имаме две важни неща. Първо създадохме папка boot. Тя е необходима, защото там ще монтираме EFI частта. Второ, за субволуме @snapshsots създаваме папка .shapshots, не е точно като името. Да монтираме и останалите субволумета.
mount -o rw,noatime,compress=zstd:3,ssd,ssd_spread,discard=async,space_cache=v2,subvol=/@var /dev/nvme0n1p6 /mnt/var mount -o rw,noatime,compress=zstd:3,ssd,ssd_spread,discard=async,space_cache=v2,subvol=/@home /dev/nvme0n1p6 /mnt/home mount -o rw,noatime,compress=zstd:3,ssd,ssd_spread,discard=async,space_cache=v2,subvol=/@snapshots /dev/nvme0n1p6 /mnt/.snapshots
Да проверим какво направихме. Първо да видим какво имаме в /mnt.
ls -la /mnt total 0 drwxr-xr-x 1 root root 42 May 28 12:01 . drwxr-xr-x 1 root root 100 May 28 04:36 .. drwxr-xr-x 1 root root 0 May 28 11:52 .snapshots drwxr-xr-x 1 root root 0 May 28 12:01 boot drwxr-xr-x 1 root root 0 May 28 11:52 home drwxr-xr-x 1 root root 0 May 28 11:51 var
Да проверим какво сме монтирали.
mount | grep /dev/nvme0n1p6 /dev/nvme0n1p6 on /mnt type btrfs (rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvolid=256,subvol=/@) /dev/nvme0n1p6 on /mnt/var type btrfs (rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvolid=257,subvol=/@var) /dev/nvme0n1p6 on /mnt/home type btrfs (rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvolid=258,subvol=/@home) /dev/nvme0n1p6 on /mnt/.snapshots type btrfs (rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvolid=259,subvol=/@snapshots)
В папка /mnt имаме подпапка boot. Там трябва да монтираме EFI дяла който създадохме за двойното зареждане.
mount /dev/nvme0n1p5 /mnt/boot
Да проверим какво сме монтирали.
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 846.7M 1 loop /run/archiso/airootfs sr0 11:0 1 1.2G 0 rom /run/archiso/bootmnt nvme0n1 259:0 0 99G 0 disk ├─nvme0n1p1 259:5 0 100M 0 part ├─nvme0n1p2 259:6 0 16M 0 part ├─nvme0n1p3 259:7 0 63.3G 0 part ├─nvme0n1p4 259:8 0 546M 0 part ├─nvme0n1p5 259:11 0 512M 0 part /mnt/boot └─nvme0n1p6 259:12 0 34.5G 0 part /mnt/.snapshots /mnt/home /mnt/var /mnt
Готови сме да инсталираме базисните пакети на Archlinux.
pacstrap /mnt base linux linux-firmware btrfs-progs bash-completion nano
base - базови компоненти на системата linux - ядро на linux linux-firmware - файлов фърмуер на Linux, драйвери на ядрото за мрежови устройства, видеокарти и т.н. btrfs-progs - за нормална работа на файловата система btrfs bash-completion - автоматично допълване на командите в шела BASH nano - терминален текстов редактор Да генерираме и таблицата за автоматично зареждане на дяловете.
genfstab -U /mnt >> /mnt/etc/fstab cat /mnt/etc/fstab # Static information about the filesystems. # See fstab(5) for details. # <file system> <dir> <type> <options> <dump> <pass> # /dev/nvme0n1p6 UUID=78861890-6ae6-4762-8bc1-0f15edae06e2 / btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@ 0 0 # /dev/nvme0n1p6 UUID=78861890-6ae6-4762-8bc1-0f15edae06e2 /var btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@var 0 0 # /dev/nvme0n1p6 UUID=78861890-6ae6-4762-8bc1-0f15edae06e2 /home btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@home 0 0 # /dev/nvme0n1p6 UUID=78861890-6ae6-4762-8bc1-0f15edae06e2 /.snapshots btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@snapshots 0 0 # /dev/nvme0n1p5 UUID=D03A-5311 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
Готови сме да влезем в новосъздадената система и да я настроим.
arch-chroot /mnt
Да проверим какви папки и файлове имаме в корена.
ls bin boot dev etc home lib lib64 mnt opt proc root run sbin srv sys tmp usr var
Точно както на инсталационния пакет. До тук всичко е правилно. По-надолу ще ползваме пакетния менажер pacman. За целта да го настроим.
nano /etc/pacman.conf #VerbosePkgLists VerbosePkgLists ParallelDownloads = 15
VerbosePkgLists - включва подробно списъци когато pacman показва пакетите. Организира актуализираните пакети в табличен формат, което прави списъка лесен за четене! ParallelDownloads - забързва свалянето на пакетите. По-подразбиране е 5 но аз предпочитам да сваля едновременно повече файлове, защото нета ми е добър. Да обновим първо репозиторите на новата система и след това самата нея.
pacman -Syy pacman -Syu
Да синхронизираме времето на системата с локалното.
ln -sf /usr/share/zoneinfo/Europe/Sofia /etc/localtime hwclock --systohc
Да настроим какви кодови таблици ще ползваме. Лично аз ползваме Американска UTF-8 и Българска UTF-8.
nano /etc/locale.gen #bg_BG.UTF-8 UTF-8 bg_BG.UTF-8 UTF-8 #en_US.UTF-8 UTF-8 en_US.UTF-8 UTF-8
Да генерираме локалните настройки.
locale-gen Generating locales... bg_BG.UTF-8... done en_US.UTF-8... done Generation complete.
Да конфигурираме езика който ще ползваме по подразбиране.
nano /etc/locale.conf LANG=en_US.UTF-8
Да се занимаем малко с мрежови настройки. За начало да дадем име на хоста.
nano /etc/hostname MyPC
Да дефинираме и локалния хост, както и локалния домейн.
nano /etc/hosts # Static table lookup for hostnames. # See hosts(5) for details. 127.0.0.1 localhost ::1 localhost 127.0.1.1 MyPC.localhostdomain MyPC
Направихме няколко настройки но след рестарт на системата няма да имаме мрежа. За целта трябва да инсталираме пакета networkmanager и да го активираме.
### Първво го инсталираме pacman -Sy networkmanager ### След това го активираме systemctl enable NetworkManager Created symlink '/etc/systemd/system/multi-user.target.wants/NetworkManager.service' → '/usr/lib/systemd/system/NetworkManager.service'. Created symlink '/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service' → '/usr/lib/systemd/system/NetworkManager-dispatcher.service'. Created symlink '/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service' → '/usr/lib/systemd/system/NetworkManager-wait-online.service'.
Така след рестарт на системата ще имаме активна мрежа. Да настроим и потребителите които ще работят със системата. Първо да дадем парола на главния потребител root.
passwd
Да създадем допълнителен потребител неразполагащ с правата на root. Не е добра практика да се работи с главния потребите. Той ще може да ползва допълнителни права чрез sudo. За начало да инсталираме пакета.
pacman -Sy sudo
Да създадем и допълнителния потребител, който да членува в тази група.
useradd -g users -G wheel,audio -s /bin/bash -m cccp
Да дадем парола за потребителя cccp.
passwd cccp New password: Pa$$ Retype new password: Pa$$ passwd: password updated successfully
Да подготвим потребителя за работа с графична среда. За целта трябва да го добавим към още няколко групи.
usermod -aG video,storage,power cccp
Да дадем на потребителя cccp, sudo права.
EDITOR=nano visudo ## Uncomment to allow members of group wheel to execute any command # %wheel ALL=(ALL:ALL) ALL %wheel ALL=(ALL:ALL) ALL
Първо ще инсталираме GRUB само за Archlinux. За целта са ни необходими няколко пакета които ще инсталираме.
pacman -S grub efibootmgr dosfstools mtools grub-btrfs
grub - програма за зареждане на системи efibootmgr - промяна на конфигурацията на UEFI Boot Manager dosfstools - Помощни програми за файлова система на DOS mtools - Колекция от помощни програми за достъп до MS-DOS дискове Последните два пакета са необходими защото ще имаме освен Archlinux и Windows. Да инсталираме GRUB в дефинирано от нас място.
grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot Installing for x86_64-efi platform. Installation finished. No error reported.
Не сме завършили с GRUB. По подразбиране в ядрото на linux няма btrfs. Той трябва да се зареди като драйвер. За целта:
nano /etc/mkinitcpio.conf # vim:set ft=sh # MODULES # The following modules are loaded before any boot hooks are # run. Advanced users may wish to specify all system modules # in this array. For instance: # MODULES=(usbhid xhci_hcd) MODULES=(btrfs)
Да гнерерираме конфигурацията на драйверите.
mkinitcpio -p linux ==> Generating module dependencies ==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-fallback.img' -> Early uncompressed CPIO image generation successful ==> Initcpio image generation successful
Да генерираме и GRUB.
grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux Found initrd image: /boot/initramfs-linux.img Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img Warning: os-prober will not be executed to detect other bootable partitions. Systems on them will not be added to the GRUB boot configuration. Check GRUB_DISABLE_OS_PROBER documentation entry. Adding boot menu entry for UEFI Firmware Settings ... done
Готви сме с настройката на новосъздадената система. Да излезем от arch-chroot режима.
exit
Да размонтираме /mnt.
umount -lR /mnt
Да рестартираме системата.
reboot
След рестарт на системата ще видите долния екран.
Забележете, нямаме меню за Windows. Влизаме в Archlinux и продължаваме с настройката на системата. За начало да позволим отдалечено да достъпваме системата през SSH.
pacman -S openssh systemctl status sshd ○ sshd.service - OpenSSH Daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; preset: disabled) Active: inactive (dead) systemctl enable --now sshd Created symlink '/etc/systemd/system/multi-user.target.wants/sshd.service' → '/usr/lib/systemd/system/sshd.service'. systemctl status sshd ● sshd.service - OpenSSH Daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled) Active: active (running) since Wed 2025-05-14 20:03:39 UTC; 21s ago Invocation: f25d65f70f684f988b96ec9130c12dbd Main PID: 644 (sshd) Tasks: 1 (limit: 4621) Memory: 1.3M (peak: 1.5M) CPU: 20ms CGroup: /system.slice/sshd.service └─644 "sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups" May 14 20:03:39 archlinux systemd[1]: Starting OpenSSH Daemon... May 14 20:03:39 archlinux sshd[644]: Server listening on 0.0.0.0 port 22. May 14 20:03:39 archlinux sshd[644]: Server listening on :: port 22. May 14 20:03:39 archlinux systemd[1]: Started OpenSSH Daemon.
Да проверим дали SSH "слуша" на порт 22.
ss -tulpn Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=644,fd=6)) tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=644,fd=7))
Всичко е точно.
Ако се сещате в системата има меню само за Archlinux. Ние желаем да имаме няколко системи на една машина.
Да добавим Windows. За целта ни е необходим допълнителен пакет, който да сканира системата за още операционни система. Пакета се казва os-prober. Да го инсталираме.
pacman -Sy os-prober
Да проверим за втора операционна система.
os-prober
Нямаме никакъв резултат от командата, а сме сигурни, че имаме инсталиран Windows. Да проверим.
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sr0 11:0 1 1.2G 0 rom nvme0n1 259:0 0 99G 0 disk ├─nvme0n1p1 259:1 0 100M 0 part ├─nvme0n1p2 259:2 0 16M 0 part ├─nvme0n1p3 259:3 0 63.3G 0 part ├─nvme0n1p4 259:4 0 546M 0 part ├─nvme0n1p5 259:5 0 512M 0 part /boot/efi └─nvme0n1p6 259:6 0 34.5G 0 part /var /.snapshots /home /
EFI дяла за Windows е nvme0n1p1. За да го открие os-prober трябва да монтираме nvme0n1p1 някъде в нашата система.
mkdir /mnt/win mount /dev/nvme0n1p1 /mnt/win
Наново да проверим за втора операционна система.
os-prober /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:ef
Вече откриваме и Windows. Сега да накараме и GRUB да го открие. За целта променяме конфигурационния му файл.
nano /etc/default/grub GRUB_TIMEOUT=25 # Probing for other operating systems is disabled for security reasons. Read # documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this # functionality install os-prober and uncomment to detect and include other # operating systems. #GRUB_DISABLE_OS_PROBER=false GRUB_DISABLE_OS_PROBER=false
Преконфигурираме GRUB.
grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux Found initrd image: /boot/initramfs-linux.img Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi Adding boot menu entry for UEFI Firmware Settings ... Detecting snapshots ... No snapshots found. If you think an error has occurred, please file a bug report at "https://github.com/Antynea/grub-btrfs" Unmount /tmp/grub-btrfs.sI43gJ1B8F .. Success done
Открил е и втората операционна система. Рестартираме се. След рестарта се появява Windows меню.
Не ползваме допълнителни пакети а ръчно добавяме меню за стартиране на Windows 10. Ако се сещате когато инсталирахме Windows, той си създаде собствен EFI дял. Точно той ни трябва. Да проверим къде се намираше.
fdisk -l Disk /dev/nvme0n1: 99 GiB, 106300440576 bytes, 207618048 sectors Disk model: VMware Virtual NVMe Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 308C0407-3A8B-4A1D-B7CB-135265A61F0A Device Start End Sectors Size Type /dev/nvme0n1p1 2048 206847 204800 100M EFI System /dev/nvme0n1p2 206848 239615 32768 16M Microsoft reserved /dev/nvme0n1p3 239616 133093789 132854174 63.3G Microsoft basic data /dev/nvme0n1p4 206495744 207613951 1118208 546M Windows recovery environment /dev/nvme0n1p5 133095424 134143999 1048576 512M EFI System /dev/nvme0n1p6 134144000 206495743 72351744 34.5G Linux filesystem Partition table entries are not in disk order.
Маркирания ред в червено е EFI дяла за Windows. На този дял ни трябва UUID номера. Да го извадим.
blkid /dev/nvme0n1p1 /dev/nvme0n1p1: UUID="046F-5C0D" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="93576974-5f3a-42c1-bac3-cce89bcf524e"
Маркирания текст в червено е UUID номера. Запомнете го някъде, ще е необходим за по-нататъшна настройка. Ръчно да добавим меню за зареждане на Windows.
nano /etc/grub.d/40_custom #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "Windows 10" --class windows --class os { search --fs-uuid --no-floppy --set=root 046F-5C0D chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi } grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux Found initrd image: /boot/amd-ucode.img /boot/initramfs-linux.img Found fallback initrd image(s) in /boot: amd-ucode.img initramfs-linux-fallback.img Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. Adding boot menu entry for UEFI Firmware Settings ... done
Рестартираме системата. След рестарта се получава следния екран.
Вече имаме меню за зареждане на Windows.
Има още един детайл който трябва да се обсъди. Производителите на процесори пускат актуализации за стабилност и сигурност на микрокода на процесора. Въпреки че микрокодът може да се актуализира чрез BIOS, ядрото на Linux може да прилага тези актуализации и по време на зареждане. Тези актуализации предоставят корекции на грешки, които могат да бъдат критични за стабилността на вашата система. Без тези актуализации може да се сблъскате с фалшиви сривове или неочаквани системни замръзвания, които могат да бъдат трудни за откриване. Особено потребителите на процесори Intel Haswell и Broadwell трябва да инсталират тези актуализации, за да осигурят стабилност на системата. Но разбира се, всички потребители трябва да ги инсталират. От горе казаното трябва да се инсталират пакетите за обновяване на стабилността на процесорите Първо да проверим какъв е нашия процесор.
lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 45 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Vendor ID: AuthenticAMD Model name: AMD Ryzen 7 3700X 8-Core Processor CPU family: 23 Model: 113 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Stepping: 0 BogoMIPS: 7186.55 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pg e mca cmov pat pse36 clflush mmx fxsr sse sse2 ht s yscall nx mmxext pdpe1gb rdtscp lm constant_tsc rep _good nopl xtopology tsc_reliable nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave a vx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_le gacy abm sse4a misalignsse 3dnowprefetch osvw topoe xt ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 r dseed adx smap clflushopt clwb sha_ni xsaveopt xsav ec xgetbv1 clzero arat umip rdpid overflow_recov su ccor Virtualization features: Hypervisor vendor: VMware Virtualization type: full Caches (sum of all): L1d: 128 KiB (4 instances) L1i: 128 KiB (4 instances) L2: 2 MiB (4 instances) L3: 16 MiB (1 instance) NUMA: NUMA node(s): 1 NUMA node0 CPU(s): 0-3 Vulnerabilities: Gather data sampling: Not affected Ghostwrite: Not affected Indirect target selection: Not affected Itlb multihit: Not affected L1tf: Not affected Mds: Not affected Meltdown: Not affected Mmio stale data: Not affected Reg file data sampling: Not affected Retbleed: Mitigation; untrained return thunk; SMT disabled Spec rstack overflow: Vulnerable: Safe RET, no microcode Spec store bypass: Mitigation; Speculative Store Bypass disabled via p rctl Spectre v1: Mitigation; usercopy/swapgs barriers and __user poi nter sanitization Spectre v2: Mitigation; Retpolines; IBPB conditional; STIBP dis abled; RSB filling; PBRSB-eIBRS Not affected; BHI N ot affected Srbds: Not affected Tsx async abort: Not affected
Процесора ни е AMD и трябва да инсталираме неговия пач. Ще ползваме amd-ucode, ако процесора беше Interl то тогава щяхме да инсталираме intel-ucode. Да инсталираме пакета.
pacman -Sy amd-ucode
За да влязат обновленията трябва да преконфигурираме GRUB.
grub-mkconfig -o /boot/grub/grub.cfg
Това е края. Всичко което си поставихме за цел работи. По-нататък ще покажа как се слага графична среда в Archlinux.