# Install from existing Linux (Українська)

Мета цієї інструкції - об'єднати та освіжити три інші подібні інструкції на цьому wiki. Інструкція призначена для будь-кого, хто бажає виконати інсталяцію Arch Linux з іншого працюючого екземпляру Linux -- будь-то з LiveCD або з вже існуючої інсталяції іншого дистрибутиву.

## Огляд

Пакунок Pacman з дистрибутиву Arch Linux'у за допомогою опції -r здатен виконувати дії у будь-якому каталозі, розлядаючи його у якості / (root, корінного).

На деяких дзеркалах дистрибутиву існує статично зібрана версія бінарника (виконуваного двійкового коду) pacman.static, який очікувано буде виконуватися під оточенням більшості сучасних linux через відсутність залежностей від інших бібліотек, тощо.

Це можна використати для побудови нової "чистої" системи Arch Linux з іншого LiveCDs або інших систем під Linux оточенням, створення нового chroot оточення на "host" системі, підтримці "майстер-копії" для розробки та розповсюдження, або для інших цікавих речей на зразок rootfs-over-NFS чи бездискових машин.

У випадку платформи x86_64 можливо навіть використовувати i686-pacman щоб побудувати 32-bit chroot оточення. Див. Arch64 Install bundled 32bit system.

Усі команди, про які пропонується виконувати на системі слід виконувати з-під користувача "root", або використовувати обгортку "sudo", якщо остання доступна.

У цій інструкції ми будемо посилатися на дискові розділи як /dev/hdxx або /dev/sdxx. Це треба розуміти як посилання на фактичні dev entry які ви маєте на своїй системі для відповідних розділів: Drive 1, Partition 1: /dev/hda1 або /dev/sda1 Drive 1, Partition 2: /dev/hda2 або /dev/sda2 Drive 2, Partition 1: /dev/hdb1 або /dev/sdb1 і т.п...

Будемо посилатися на /dev/sdxx де можливо, але, у залежності від особливостей вашої системи, це може бути /dev/hdxx.

Якщо ви маєте швидкісний канал у процесі інсталяції і виконуєте лише базову інсталяцію, UNetbootin також може виявитися легким рішенням вартим уваги.

## Встановлення хост-системи

Вам необхідно встановити archlinux package manager - pacman у ваше linux оточення хост-системи. На додачу вам знадобиться перелік сайтів з дзеркалами, який використовується для завантаження списку наявних пакунків, а також самих цих пакунків.

### Отримання необхідних пакунків

Вам необхідно отримати обов'язкові пакунки для вашого linux оточення. Приклад, який тут наводиться, дійсний за умови що ви використовуєте оточення i686. Якщо натомість працює 64bit'ний linux, вам слід замінити кожний "i686" на "x86_64".

Усі наведені номери версій можуть відрізнятися від вашого випадку. Будь-ласка з'ясуйте першоджерельні номери версій та занотуйте їх. Номери версій можна знайти на here for pacman та here for pacman-mirrorlist. З'ясувавши номери версій, завантажте обов'язкові пакунки:

    mkdir /tmp/archlinux
    cd /tmp/archlinux
    wget ftp://ftp.archlinux.org/core/os/i686/pacman-3.3.0-3-i686.pkg.tar.gz
    wget ftp://ftp.archlinux.org/core/os/i686/pacman-mirrorlist-20101223-1-any.pkg.tar.gz
    tar xzvf pacman-3.3.0-3-i686.pkg.tar.gz
    tar xzvf pacman-mirrorlist-20090616-1-i686.pkg.tar.gz

pacman'у зібраному з залежностями від динамічних бібліотек є альтернатива - його статично зібрана версія. Остання краще інтегрується до інших можливих хост-оточень linux'у. Ця статична версія більше не є частиною базового "дистрибутиву" archlinux, але може бути знайдена на http://repo.archlinux.fr/i686/. Виконайте наступні команди щоб її отримати:

    cd /tmp/archlinux
    wget http://repo.archlinux.fr/i686/pacman-static-3.2.2-1.pkg.tar.gz
    tar xzvf pacman-static-3.2.2-1.pkg.tar.gz

### Встановлення необхідних файлів на хост-систему

Оскільки ми будемо використовувати pacman.static на початковому етапі встановлення, нам лише потрібно декілька файлів інстальованих на хост-систему. Це можна проробити виконавши наступні команди:

    cp /tmp/archlinux/etc/pacman.conf /etc
    mkdir /etc/pacman.d
    cp /tmp/archlinux/etc/pacman.d/* /etc/pacman.d
    cp /tmp/archlinux/usr/bin/pacman.static /usr/bin

Якщо ви не проти деякого захаращення вашого хосту, з якого виконується інсталяція, ви також можете розгорнути усі завантажені архіви tar до власного домашнього каталогу виконавши:

    cd /
    for f in /tmp/archlinux/pacman-*pkg.tar.gz
      tar xzf $f
    done

Також можна перетворити ці архіви у пакунки вашого дистрибутиву за допомогою інструменту alien. Дивись інструкцію на сторінці відповідного керівництва (man page). Пакунок, створений таким чином, може бути встановлений використовуючи звичайні інструменти керування пакунками системи. Цей підхід забезпечує найкращу інтеграцію до хост-оточення linux. Для пакунків дистрибутиву debian цього можна досягнути за допомогою:

    cd /tmp/archlinux
    alien -d pacman-3.3.0-3-i686.pkg.tar.gz
    alien -d pacman-mirrorlist-20090108-1-i686.pkg.tar.gz
    alien -d pacman-static-3.2.2-1-i686.pkg.tar.gz

Для систем, що використовують RPM, вам необхідно замінити параметр "-d" на "-r".

Потім ці пакунки можна встановити використовуючи "рідні" інструменти керування пакунками цільового хост-оточення linux.

### Конфігурація хост-системи

Виконайте бажані налаштування у /etc/pacman.conf, та вилучить дзеркала, які не планується використовувати, з /etc/pacman.d/mirrorlist. При цьому, активізуйте щонайменше декілька дзеркал, оскільки існує ймовірність виникнення помилки синхронізації, у випадку недоступності деяких з них. Можливо ви захочете власноруч виконати відображення DNS у /etc/pacman.d/mirrorlist, оскільки pacman-static для i686 може не бути спроможним отримати інформацію про адреси на x86_64 системах.

Якщо ви інсталюєте з LiveCD та маєте обмаль RAM + swap (< 1 GB), обов'язково встановіть cachedir у /etc/pacman.conf на ресурс у розділі нового Arch (наприклад, /newarch/var/cache/pacman/pkg). Інакше може трапитись, що пам'ять буде вичерпана через поточні потреби даної системи та необхідними інсталяційними пакунками, які завантажуються.

## Встановлення хост-системи

### Підготовка диску для Arch

Підготуйте нову файлову систему та змонтуйте її. Якщо для цього ваша хост-система має будь-який графічний інструмент, такий як gparted, cfdisk, або diskdrake (мандріви), ви цілком можете скористатися ним.

Щоб виконати форматування розділу у ext3, зробіть (де /dev/sdxx є розділ, який ви готуєте):

    # mkfs.ext3 /dev/sdxx

у reiserfs:

    # mkreiserfs /dev/sdxx

swap:

    # mkswap /dev/sdxx

Більшість інших файлових систем можуть бути встановленими за допомогою своїх власних варіантів mkfs. Яких саме - доповніть цю команду (tab completion) набравши її з оболонки командного рядка, що підтримує readline. Перелік доступних файлових систем цілком залежить від вашої хост-системи.

Як тільки ви встановили файлові системи, змонтуйте їх. Коли ми хочемо вказати на / (кореневий каталог) нової системи Arch, ми пишемо /newarch, одначе ви можете використати будь яке інше місце за власним бажанням.

    # mkdir /newarch
    # mount /dev/sdxx /newarch

Також можливо побудувати файлову систему root у нормальному каталозі на інсталяційному хості для подальшої передачі на цільову систему через мережу, або створення з нього архіву, тощо.

### Інсталяція основного набору (core)

Поновіть базу даних pacman. Для цього може знадобитися створення каталогу /newarch/var/lib/pacman:

    # mkdir -p /newarch/var/lib/pacman

Інсталюйте 'base' групу пакунків:

    # pacman.static -Sy base -r /newarch

ЗАУВАЖТЕ: Кеш-каталог pacman не зачіпається при використанні параметру -r. Якщо ви не хочете щоб кеш створювався на поточній системі (pre-existing distro), використовуйте --cachedir або модифікуйте pacman.conf як зазначено у конфігурація хост-системи!

### Підготовка системи

Спочатку, переконайтеся що коректні ноди /dev створені для udev:

    ls -alF /newarch/dev

У результаті ви маєте побачити рядки схожі на наступні (з іншими датами, щонайменше):

    crw-------  1 root root 5, 1 2008-12-27 21:40 console
    crw-rw-rw-  1 root root 1, 3 2008-12-27 21:42 null
    crw-rw-rw-  1 root root 1, 5 2008-12-27 21:40 zero

Видаліть та створіть заново ноди, які мають відмінний набір дозволів (crw-..., цифра та двічі "root") і major/minor номери (дві цифри перед датою). Приклад:

    cd /newarch/dev
    rm console ; mknod -m 600 console c 5 1
    rm null ; mknod -m 666 null c 1 3
    rm zero ; mknod -m 666 zero c 1 5

Змонтуйте та продублюйте (опція bind) необхідні системні каталоги (службові файл-системи) до нового Arch:

    mount -o bind /dev /newarch/dev
    mount -t proc none /newarch/proc
    mount -o bind /sys /newarch/sys

Для того щоб DNS працював належним чином, вам необхідно відредагувати /newarch/etc/resolv.conf або замінити його resolv.conf з поточної системи:

    cp /etc/resolv.conf /newarch/etc/

Скопіюйте ваш pacman mirror list на нову систему:

    cp /etc/pacman.d/mirrorlist /newarch/etc/pacman.d

Переконайтеся що все встановлено коректно.

Встановіть нову систему як root у поточній сесії:

    chroot /newarch /bin/bash

### Інсталяція решти

Інсталюйте бажане ядро та інші пакунки які захочете.

Для базового ядра (той що використовується за замовчуванням):

    pacman -S linux

Якщо ви бажаєте зараз встановити додаткові пакунки, це можна зробити так:

    pacman -S packagename

### Конфігурація цільової системи

Відредагуйте ваш /etc/fstab, не забуваючи додати /, swap та інші розділи які ви використовуєте. Обов'язково використовуйте /dev/sd* (sda1, sda2, sdb1, etc) при найменуванні розділів, оскільки сучасний Arch використовує саме таку схему імен дискових пристроїв замість /dev/hd*.

Підлаштуйте ваш rc.conf до власних уподобань.

У /etc/locale.gen, вилучіть символ коментаря "#" з локалей, які ви плануєте використовувати, та створіть їх командою:

    locale-gen

### Встановлення Grub

Відомий трюк щоб уникнути деяких grub'их помлок під chroot оточенням:

    grep -v rootfs /proc/mounts > /etc/mtab

Також, якщо ви бажаєте зберегти grub з існуючої інсталяції (тої з якої будуєте нову), ви можете виконати grub-install з-під chroot, а потім повторити те саме з існуючої. Якщо grub-install не спрацює, ви можете спробувати виконати його роботу власноруч:

    grub
    grub> find /boot/grub/stage1     (Тут ви маєте побачити певний результат, якщо до цього все було зроблено правильно. Якщо ні, відновіть попередній стан.)
    grub> root (hd0,X)
    grub> setup (hd0)
    grub> quit

Ще раз перевірте ваш /boot/grub/menu.lst коли все зробите у випадку інсталяції з LiveCD. Залежно від хоста, може знадобитися його корегування: заміна hda на sda, sdb на sda, префіксу /boot та інших шляхів (paths).

Інструкції GRUB та LILO (застарілий) доступні на wiki.

### Останні крапки над i

Можете проігнорувати 2.11, але варто використати решту цієї інструкції для після-інсталяційного налаштування вашої системи.

Перезавантажтесь!

## Усунення несправностей

### Kernel Panic

Якщо на (пере)завантаженні новоствореної системи ви отримали kernel panic, який жаліється що "console couldn't open":

    kinit: couldn't open console, no such file...

Це означає що не все було виконано за даною інструкцією. Повторіть кроки по створенню базових нодів пристроїв на початку підготовки системи.

### Root device '/dev/sd??' doesn't exist

Якщо на (пере)завантаженні новоствореної системи ви отримали повідомлення про помилку на зразок:

    Root device '/dev/sda1' doesn't exist, attempting to create it... etc.

Це означає, що пристрої виглядають як "hda1" замість "sda1" (інша можлива розбіжність: "sda1" проти "sdb1" через зміну апаратної конфігурації або інсталяції з "живчика"). У цьому випадку поміняйте налаштування GRUB або LILO на використання належного пристрої, або спробуйте наступне.

Відредагуйте /etc/mkinitcpio.conf та поміняйте "ide" на "pata" у рядку "HOOKS=". Потім перегенеруйте ваш initrd виконавши chroot до нової системи.

    mkinitcpio -p linux

Якщо ви використовуєте LVM, переконайтесь що ви додали "lvm2" до рядка "HOOKS=". Перегенеруйте initrd.

Category:

- Getting and installing Arch (Українська)