Аналогичный пост, но без LVM – тут>>>.
Задача: разбить диск на три раздела (/boot
, swap
, и раздел под LVM), установить Arch и base
систему.
- Подготовка
- Разбивка диска
- Создание разделов LVM
- Создание файловых систем
- Установка системы
- Настройка системы
- GRUB2
- Послеустановочные настройки
Содержание
Подготовка
Логинимся:
$ ssh [email protected] The authenticity of host '10.11.100.56 (10.11.100.56)' can't be established. ECDSA key fingerprint is 0c:e9:d2:d9:60:ef:2b:1f:1a:4e:52:82:9b:d7:d7:a8. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.11.100.56' (ECDSA) to the list of known hosts. [email protected]'s password: Last login: Mon Nov 28 11:22:28 2016 root@archiso ~ # bash [root@archiso ~]#
Загружаем device mapper – dm-mod
:
# modprobe dm-mod
Проверяем:
# cat /proc/modules | grep dm_mod dm_mod 102400 0 - Live 0xffffffffa0422000
Разбивка диска – fdisk
Разбиваем диск на:
/dev/sda1
: /boot/dev/sda2
: swap/dev/sda3
: LVM:root
: корневая системаhome
: раздел под /home
Подробнее о ручной разметке диска и создании разделов – в посте Debian: ручная разбивка диска с fdisk, создание разделов LVM и установка системы или в Arch Linux: установка:
# fdisk -l /dev/sda Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Создаём три раздела:
# fdisk /dev/sda ... Command (m for help): n ... Select (default p): p Partition number (1-4, default 1): First sector (2048-41943039, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +1G Created a new partition 1 of type 'Linux' and of size 1 GiB. ... Select (default p): p Partition number (2-4, default 2): First sector (2099200-41943039, default 2099200): Last sector, +sectors or +size{K,M,G,T,P} (2099200-41943039, default 41943039): +1G ... Command (m for help): p Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors 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: dos Disk identifier: 0x0cf903ea Device Boot Start End Sectors Size Id Type /dev/sda1 2048 2099199 2097152 1G 83 Linux /dev/sda2 2099200 4196351 2097152 1G 83 Linux Command (m for help): n ... Select (default p): p Partition number (3,4, default 3): First sector (4196352-41943039, default 4196352): Last sector, +sectors or +size{K,M,G,T,P} (4196352-41943039, default 41943039): Created a new partition 3 of type 'Linux' and of size 18 GiB. Command (m for help): p ... Device Boot Start End Sectors Size Id Type /dev/sda1 2048 2099199 2097152 1G 83 Linux /dev/sda2 2099200 4196351 2097152 1G 83 Linux /dev/sda3 4196352 41943039 37746688 18G 83 Linux
Для sda1
– устанавливаем загрузочный флаг, для sda2
– устанавливаем тип раздела swap
:
Command (m for help): a Partition number (1-3, default 3): 1 The bootable flag on partition 1 is enabled now. Command (m for help): t Partition number (1-3, default 3): 2 Partition type (type L to list all types): 82 Changed type of partition 'Linux' to 'Linux swap / Solaris'. Command (m for help): p ... Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 2099199 2097152 1G 83 Linux /dev/sda2 2099200 4196351 2097152 1G 82 Linux swap / Solaris /dev/sda3 4196352 41943039 37746688 18G 83 Linux
Записываем изменения:
Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
Создание разделов LVM
Создаём Phisical Volume на /dev/sda3
:
# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created.
Создаём Volume Group:
# vgcreate vg_arch /dev/sda3 Volume group "vg_arch" successfully created
Создаём два Logical Volume – root
и home
:
# lvcreate -L 10G -n root vg_arch Logical volume "root" created. # lvcreate -l 100%FREE -n home vg_arch Logical volume "home" created.
Проверяем:
# pvdisplay --- Physical volume --- PV Name /dev/sda3 VG Name vg_arch PV Size 18.00 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 4607 Free PE 0 Allocated PE 4607 PV UUID Xsc1Ra-TGQe-U70N-tsSg-Mr5d-jgAK-onOaQZ # vgdisplay --- Volume group --- VG Name vg_arch System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 18.00 GiB PE Size 4.00 MiB Total PE 4607 Alloc PE / Size 4607 / 18.00 GiB Free PE / Size 0 / 0 VG UUID IPZpNr-VycH-ySEM-cOs0-n4YE-97RI-TanKnT # lvdisplay --- Logical volume --- LV Path /dev/vg_arch/root LV Name root VG Name vg_arch LV UUID ZYOg2A-H3kc-ZHSw-Sm3m-ZWbj-Bmc8-up5Js6 LV Write Access read/write LV Creation host, time archiso, 2016-11-28 11:41:47 +0000 LV Status available # open 0 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Path /dev/vg_arch/home LV Name home VG Name vg_arch LV UUID cEarhy-9LUf-VYkw-n3rS-H8Xi-eRLD-FyZch3 LV Write Access read/write LV Creation host, time archiso, 2016-11-28 11:41:55 +0000 LV Status available # open 0 LV Size 8.00 GiB Current LE 2047 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1
Создание файловых систем
Создаём файловые системы:
# mkfs.ext2 /dev/sda1 # mkfs.ext4 /dev/vg_arch/root # mkfs.ext4 /dev/vg_arch/home # mkswap /dev/sda2 # swapon /dev/sda2
Монтируем их:
# mount /dev/vg_arch/root /mnt/ # mkdir /mnt/home # mount /dev/vg_arch/home /mnt/home/ # mkdir /mnt/boot # mount /dev/sda1 /mnt/boot/
Проверяем:
# mount | tail -n 3 /dev/mapper/vg_arch-root on /mnt type ext4 (rw,relatime,data=ordered) /dev/mapper/vg_arch-home on /mnt/home type ext4 (rw,relatime,data=ordered) /dev/sda1 on /mnt/boot type ext2 (rw,relatime,block_validity,barrier,user_xattr,acl)
Установка системы
Установка базовой системы выполняется с помощью скрипта pacstrap
, который устанавливает пакеты в новый корень системы.
Если pacstrap
не переданы аргументы – будет установлен только пакет base
.
Установку Xorg для Openbox выполним позднее, сейчас установим базовую систему, плюс утилиты для настройки WiFi:
# pacstrap /mnt base base-devel openssh wireless_tools wpa_supplicant wpa_actiond dialog ==> Creating install root at /mnt ==> Installing packages to /mnt :: Synchronizing package databases... ... ==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img ==> Image generation successful (2/4) Updating the info directory file... (3/4) Updating udev Hardware Database... (4/4) Rebuilding certificate stores...
Создаём файл /etc/fstab
:
# genfstab -U -p /mnt >> /mnt/etc/fstab
Проверяем:
# cat /mnt/etc/fstab # # /etc/fstab: static file system information # # <file system> <dir> <type> <options> <dump> <pass> # /dev/mapper/vg_arch-root UUID=b07b76ec-a456-44ea-aa64-e1f6c904cadc / ext4 rw,relatime,data=ordered 0 1 # /dev/mapper/vg_arch-home UUID=39d6507d-7f9b-476c-be01-a65a2340408d /home ext4 rw,relatime,data=ordered 0 2 # /dev/sda1 UUID=4cd2e5cb-31d9-46a0-abaf-803e8f44c313 /boot ext2 rw,relatime,block_validity,barrier,user_xattr,acl 0 2 # /dev/sda2 UUID=404fc127-aa76-4373-b2e8-950d3e6b84e9 none swap defaults 0 0
Проверяем UUID:
# blkid /dev/sda* /dev/sda: PTUUID="0cf903ea" PTTYPE="dos" /dev/sda1: UUID="4cd2e5cb-31d9-46a0-abaf-803e8f44c313" TYPE="ext2" PARTUUID="0cf903ea-01" /dev/sda2: UUID="404fc127-aa76-4373-b2e8-950d3e6b84e9" TYPE="swap" PARTUUID="0cf903ea-02" /dev/sda3: UUID="Xsc1Ra-TGQe-U70N-tsSg-Mr5d-jgAK-onOaQZ" TYPE="LVM2_member" PARTUUID="0cf903ea-03"
Настройка системы
Переключаемся в новую систему:
# arch-chroot /mnt sh-4.4# bash [root@archiso /]#
Имя хоста
Настраиваем имя хоста:
# echo "arch_1" > /etc/hostsname # echo "127.0.0.1 arch_1" >> /etc/hosts
Локализация
Устанавливаем локализацию. Редактируем файл /etc/locale.gen
, раскомментируем строку:
en_US.UTF-8 UTF-8
Генерируем локаль:
# locale-gen Generating locales... en_US.UTF-8... done Generation complete.
Создаём файл /etc/locale.conf
, в который вписываем:
LANG=en_US.UTF-8
Временная зона
Устанавливаем временную зону (Киев, Украина):
# tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent, ocean, "coord", or "TZ". ... 7) Europe ... #? 7 Please select a country whose clocks agree with yours. 1) Åland Islands 18) Greece 35) Norway ... 15) France 32) Monaco 49) Ukraine ... #? 49 Please select one of the following time zone regions. 1) Ukraine (most areas) 2) Ruthenia 3) Zaporozh'ye/Zaporizhia; Lugansk/Luhansk (east) #? 1 ... Therefore TZ='Europe/Kiev' will be used. Local time is now: Mon Nov 28 14:05:26 EET 2016. Universal Time is now: Mon Nov 28 12:05:26 UTC 2016. Is the above information OK? 1) Yes 2) No #? 1 You can make this change permanent for yourself by appending the line TZ='Europe/Kiev'; export TZ to the file '.profile' in your home directory; then log out and log in again. ...
Используя полученный файл зоны (Europe/Kiev) – cоздаём /etc/localtime
:
# ln -s /usr/share/zoneinfo/Europe/Kiev /etc/localtime
Настройка initramfs
Настраиваем mkinitcpio
– добавляем загрузку модуля lvm2
, что бы ядро смогло определить LVM разделы во время загрузки.
Редактируем /etc/mkinitcpio.conf
, и в HOOKS
добавляем lvm2
– перед filesystem:
... # usr, fsck and shutdown hooks. HOOKS="base udev autodetect modconf block lvm2 filesystems keyboard fsck"
И создаём загрузочный образ:
# mkinitcpio -p linux ==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default' -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img ==> Starting build: 4.8.10-1-ARCH -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [autodetect] -> Running build hook: [modconf] -> Running build hook: [block] -> Running build hook: [lvm2] -> Running build hook: [filesystems] -> Running build hook: [keyboard] -> Running build hook: [fsck] ==> Generating module dependencies ==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img ==> Image generation successful ==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback' -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect ==> Starting build: 4.8.10-1-ARCH -> Running build hook: [base] ... ==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img ==> Image generation successful
GRUB2
Устанавливаем загрузчик:
# pacman -S grub-bios # grub-install /dev/sda # cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo # grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... WARNING: Failed to connect to lvmetad. Falling back to device scanning. ... Found linux image: /boot/vmlinuz-linux Found initrd image(s) in /boot: initramfs-linux.img Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img WARNING: Failed to connect to lvmetad. Falling back to device scanning. WARNING: Failed to connect to lvmetad. Falling back to device scanning. done
При желании – можно посмотреть содержимое получившего диска так:
# cd /boot/ # ls -l | grep img -rw-r--r-- 1 root root 27166913 Nov 28 14:18 initramfs-linux-fallback.img -rw-r--r-- 1 root root 11490167 Nov 28 14:18 initramfs-linux.img # gunzip -c initramfs-linux.img > /tmp/initramfs # file /tmp/initramfs /tmp/initramfs: ASCII cpio archive (SVR4 with no CRC) # pacman -Sy cpio # cpio -it < /tmp/initramfs | grep dm-mod 64204 blocks usr/lib/modules/4.8.10-1-ARCH/kernel/dm-mod.ko
Модуль dm-mod.ko
из этого initramfs
-образа может быть использован ядром во время загрузки системы, что бы получить доступ к LVM-разделам.
Выходим, отмонтируем разделы, перезагружаемся:
# exit sh-4.4# exit # umount /mnt/boot # umount /mnt/home/ # umount /mnt/ # reboot
Выбираем при загрузке Boot existing OS – готово.
Послеустановочные настройки
OpenSSH
Задаём пароль root
:
# passwd root
Запускаем sshd
:
# systemctl start sshd.socket
Добавляем в автозагрузку:
# systemctl enable sshd.socket
Пользователь
Добавляем пользователя setevoy
, указав создать домашнюю директорию (-m
) и добавить его в группу wheel
(-G
):
# useradd -m -G wheel setevoy # passwd setevoy
Разрешаем sudo
без пароля – с помощью visudo
редактируем /etc/sudoers
.
Раскомментируем строку:
... ## Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL ...
Проверяем:
$ ssh [email protected] [email protected]'s password: [setevoy@localhost ~]$ file /etc/sudoers /etc/sudoers: regular file, no read permission [setevoy@localhost ~]$ sudo -s [root@localhost setevoy]#
Сеть
Сейчас сетевая карта называется enp0s3
. Что бы переименовать её в eth0
– находим её MAC:
# cat /sys/class/net/enp0s3/address 08:00:27:9d:9f:79
Либо:
# ip a s enp0s3 | grep link link/ether 08:00:27:9d:9f:79 brd ff:ff:ff:ff:ff:ff inet6 fe80::eb46:eb96:8efd:f1a2/64 scope link
В каталоге /etc/udev/rules.d/
создаём файл 10-network.rules
с содержимым:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="08:00:27:9d:9f:79", NAME="eth0"
Выключаем интерфейс:
# ip link set enp0s3 down
Находим файл устройства:
# find /sys/ -name "*enp*" /sys/kernel/debug/pm_genpd /sys/kernel/debug/pm_genpd/pm_genpd_summary /sys/devices/pci0000:00/0000:00:03.0/net/enp0s3 /sys/class/net/enp0s3
Проверяем:
# udevadm --debug test /sys/devices/pci0000:00/0000:00:03.0/net/enp0s3
Настраиваем DHCP для eth0
.
Копируем файл примера:
# cp /etc/netctl/examples/ethernet-dhcp /etc/netctl/eth0
Проверяем:
# cat /etc/netctl/eth0 Description='A basic dhcp ethernet connection' Interface=eth0 Connection=ethernet IP=dhcp #DHCPClient=dhcpcd #DHCPReleaseOnStop=no ## for DHCPv6 #IP6=dhcp #DHCP6Client=dhclient ## for IPv6 autoconfiguration #IP6=stateless
Ограничиваем доступ:
# chmod 600 /etc/netctl/eth0
Запускаем:
# netctl start eth0
Проверяем:
# netctl status eth0
Добавляем eth0
в автозапуск:
# netctl enable eth0 ln -s '/etc/systemd/system/[email protected]' '/etc/systemd/system/multi-user.target.wants/[email protected]'
Перезагружаем машину – готово.
Ссылки по теме:
Arch Linux guide: the always up-to-date Arch Linux tutorial
ArchLinux – Using netctl to setup the network
Installing Arch Linux on LVM (2012 год)
Installing Arch Linux with LVM
The Kernel Newbie Corner: “initrd>” and “initramfs”–What’s Up With That?