# Установка и настройка ArchLinux руками (без скрипта archinstall)

##### Это краткая и надеюсь понятная для новичков wiki документация, по установке Arch Linux. Рассмотрим мы все, от конфигурации дисков и до установки графической оболочки!


### **Не будем медлить и приступим к установке.**

### Первым делом скачиваем образ дистрибутива с официального сайта!

Скачиваете с удобным для вас торрент-клиентом по этому пути: [https://archlinux.org/download/](https://archlinux.org/download/)

Создаем загрузочный образ на Flash-USB и настраиваем BIOS под автозагрузку нашей флешки.  
Думаю эти пункты можно и не раскрывать т.к. если вы уже решили установить Arch, то вы обязаны знать базовые вещи))

### 1. Проверка интернет-соединения.  


<p class="callout warning">В этой инструкции не будет информации про настройку подключения по Wi-Fi. Если вы собираетесь подключиться к беспроводной сети, то рекомендую прочитать эту [статью.](https://wiki.archlinux.org/title/Iwd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)) </p>

##### 1.1. Запускаем команду ping для проверки подключения к интернету.  


```bash
ping wiki.hellnetwork.net
```

При успешном соединении должны "побежать" байтики.

### 2. Настройка дисков.

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

##### 2.1. Сначала проверим доступные нам диски командой:

```
lsblk
```

В моем случае нужный мне диск это<span style="color: rgb(0, 0, 0);"> </span>***/dev/sdb.***

<p class="callout warning">Не забывайте, что в вашем случае диск скорее всего будет другой!</p>

##### 2.2. Подготовка диска.  


В этом гайде мы будем пользоваться утилитами ***gdisk*** и ***cgdisk.***

Запускаем команду ниже, что бы **удалить все данные** на нашем диске, и подготовить его к разметке:

```
gdisk /dev/sdb/
```

На первую опцию пишем букву **x** - для того, что бы зайти в режим эксперта, затем **z** что бы удалить данные на диске.

##### 2.3. Создание разделов.

Пора создавать разделы на нашем пустом диске. Для этого мы воспользуемся утилитой ***cgdisk*** (т.к банально, это легче для меня), вы можете воспользоватся удобной для вас утилитой!

Открываем наш диск командой:

```
cgdisk /dev/sdb/
```

1. **/boot-раздел. *First Sector*** оставляем дефолтным. На втором пункте прописываем сколько места мы выделяем для нашего раздела. Я обычно выделяю 1024MiB. **Код раздела - ef00. Даем имя нашему разделу - boot.**
2. **Раздел /swap**. ***First Sector*** также оставляем пустым. Затем пишем сколько места мы выделяем для раздела подкачки, обычно я выбираю не меньше 8GiB. В зависимости от размера вашего диска вы можете выделять сколько вам угодно (но желательно больше 4GiB). **Код раздела - 8200. Даем имя нашему разделу - swap.**
3. **/root.** Создаем корневой раздел. ***First Sector*** также оставляем пустым. Затем прописываем сколько места мы выделяем для корневой директории (и да, лучше всего разделять корневую директорию и домашнюю, в целях безопасности.). Обычно я выбираю не больше 40GiB, т.к корневой директорию я особо не буду нагружать. **Код раздела - 8300. Даем имя нашему разделу - root.**
4. И последнее **/home** - домашний раздел. Здесь мы все пункты оставляем пустыми, ибо все остальное место выделяется для домашнего раздела. **Код раздела - 8300. Даем имя нашему разделу - home.**

##### 2.4. Форматирование разделов.

Теперь нам нужно отморфатировать все наши разделы, для дальнейшего монтирования.

Запускаем команду **lsblk** и видим, что в нашем диске (в моем случае - **/dev/sdb/**) появились 4 раздела.   
Форматирование происходит по порядку разделов, то есть сначала **/boot , /swap, /root и /home.**

1. **Начнем с /boot.** Вводим команду**:   
    ```
    mkfs.fat -F32 /dev/sdb1
    ```
2. Для **/swap** вводим команды:  
      
    ```
    mkswap /dev/sdb2
    swapon /dev/sdb2
    ```
3. Затем последние разделы форматируем под ext4.  
      
    ```
    mkfs.ext4 /dev/sdb3
    mkfs.ext4 /dev/sdb4
    ```

##### 2.5 Проверяем результат форматирования.

Для этого вводим команду ***lsblk*** и в результате, в пункте **Type** наши разделы должны показываться как **part.**

##### 2.6 Монтирование разделов.

Для того, что бы установить систему, разделы сначала нужно будет примонтировать на определенный путь.

**Для корневой директории:**

```
mount /dev/sdb3 /mnt
```

Затем создаем директории внутри **/mnt** , в которые мы будем монтировать наши разделы.

```
mkdir /mnt/boot
mkdir /mnt/home
mount /dev/sdb1 /mnt/boot
mount /dev/sdb4 /mnt/home
```

Затем снова пишем команду ***lsblk*** и видим, что разделы примонтированы в указанные директории.

### 3. Обновление зеркал. 

Для начала забекапим файл зеркал:

```
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
```

Затем устанавливаем нужные нам пакеты:

```
sudo pacman -Sy pacman-contrib
```

и обновляем зеркала:

```
rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist
```

### 4. Установка основных пакетов и первоначальная настройка.

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

##### 4.1. Установка базы линукс

```
pacstrap -K /mnt base linux linux-firmware base-devel
```

##### 4.2. Генерируем **fstab** файл:

```
genstab -U -p /mnt >> /mnt/etc/fstab
```

##### 4.3. Переходим к корневому каталогу устанавливаемой системы

```
arch-chroot /mnt
```

Устанавливаем нужные нам пакеты, в первую очередь ***nano*** для работы с файлами.

```
pacman -S nano
```

##### 4.4. Настраиваем наши региональные данные.

Для этого открываем файл **/etc/locale.gen** и раскоментируем нужную нам строку. Для меня это **en\_US.UTF-8.** Затем запускаем команду:

```
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
```

Дальше настройка timezone.

```
ln -s /usr/share/zoneinfo/Asia/Tashkent > /etc/localtime
hwclock --systohc --utc
```

Прописываем hostname системы:

```
echo yourhostname > /etc/hostname
```

Для поддержки 32-битной структуры в файле **/etc/pacman.d/mirrorlist** раскоментируем пункт **\[multilib\]** и все что с ним связано.  
Затем обновляем пакеты:

```
sudo pacman -Sy
```


##### 4.5. Создание пароля рута и создание нового пользователя

Для начала установим пароль от рута командой **passwd**  
Затем создаем нового пользователя командой:

```
useradd -m -u users -G wheel,storage,power -s /bin/bash username
passwd username
```

##### 4.6. Настройка бутлоудера

Для начала установим наш бутлоудер:

```
bootctl install
```

но для его работы нам нужно прописать entries. В файле **/boot/loader/entries/arch-entry.conf** прописываем все что внизу:

```
title <yourtitle>
linux /vmlinuz-linux
initrd /initframs-linux.img
```

Затем прописываем команду:

```
echo "options root=PARTUUID=$(blkid -s PARTUUID -o value /dev/sdb3) rw" >> /boot/loader/entries/arch-entry.conf
```

##### 4.7. Настройка сети.

Установка и настройка dhcp:

```
sudo pacman -S dhcpd
sudo systemctl enable dhcpcd@<your-net-card>.service
```

Установка менеджера сети:

```
sudo pacman -S networkmanager
sudo systemctl enable NetworkManager.service
```

**Теперь мы можем перезагрузить систему и вытащить нашу флешку.**