ArchLinux имеет очень-очень хороший Wiki с документацией на разных языках. Я бы даже сказал - это один из лучших Wiki вместе с Wiki Gentoo. Вот попалась мне задача - установить Arch на RAID1 и... возникли вопросы, которые, как мне показалось, в официальных доках подробно не рассмотрены. Вообще, установка Arch проста - у нее чудесный и очень удобный инсталлятор, не такой навороченный как в Debian, но зато позволяющий в любой момент допилить что-нибудь из shell. К примеру, RAID инсталлятор не поддерживает - нужна небольшая магия. Короче, поехали. Вставляем CD, грузимся, но перед тем, как запустить инсталлятор /arch/setup разбиваем диск на партиции. Повторюсь - моя задача - установить Arch на зеркальный RAID1 - чтобы всё было надежно, как в танке. == Разбиение == Диски у меня большие - по 2Тб. Если были бы еще больше, то разбивать их с помощью fdisk/mbr - бесполезно. MBR не видит больше 2Тб. Понадобится parted/gpt. Но в моем случае хватает и fdisk. Разбивая на партиции - нужно понимать, что на больших дисках партиции нужно выравнивать по цилиндрам, иначе, судя по некоторым тестам, диск может "тормозить" и терять до 30% своей эффективной скорости чтения-записи. Пользуюсь ключиком -u, который сам устанавливает правильные границы выравнивания: # fdisk -u /dev/sda Разбить, кстати, можно и с помощью parted: # parted -a optimal /dev/sda Выравнивание можно проверить всё там же - в parted: (parted) align-check opt 1 1 aligned (parted) align-check opt 2 2 aligned (parted) align-check opt 3 3 aligned После записи с помощью sfdisk разбиение легко скопировать на другой винт, однако с ключиком --force, поскольку на выровненные партиции sfdisk чуть-чуть ругается: # sdfisk -d /dev/sda | sfdisk --force /dev/sdb Я разбил свои диски так (упрощенно): 100M /boot (будет ext2) ~2000G / (будет ext4) 4G swap Кстати, при записи для партицией нужно выставлять тип партиции fd, что означает software raid autodetect. Дальше все там же из консоли собираем RAID1: # mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 # mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2 # mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3 Тут у меня начался главный тормоз, который я потом долго "думал". Дело в том, что raid- устройства создались в формате metadata=1.20, а grub 0.97, идущий с инсталлятором такой формат не поддерживает. Если продолжить инсталляцию дальше стандартным исталлятором - grub на последнем шаге не установится, и система вообще не загрузится. Обломно. Чтобы все было легко - можно было бы сделать так: # mdadm --create /dev/md1 --level=1 --metadata=0.90 --raid-devices=2 /dev/sda1 /dev/sdb1 # mdadm --create /dev/md2 --level=1 --metadata=0.90 --raid-devices=2 /dev/sda2 /dev/sdb2 # mdadm --create /dev/md3 --level=1 --metadata=0.90 --raid-devices=2 /dev/sda3 /dev/sdb3 Но мне хотелось "ускориться" и использовать новый формат. Т.е. как-то использовать grub2, умеющий его понимать. Подумаем по ходу пьесы. == Инсталлятор автоматический и ручной == После создания raid-узлов, наконец-то нужно запустить /arch/setup и аккуратно выполнить все пункты до разбиения дисков. Вместо разбиения - выбрать Manual configure block devices, filesystems, etc... и сделать правильную разметку и файловые системы для устройств /dev/md1 (/boot), /dev/md2 (/), /dev/md3 (swap) После этого конфигурения новые файловые системы автоматически будут замонтированы в /mnt/ и /mnt/boot. Следующим шагом является выбор и установка пакетов - выбираем и устанавливаем. Ничего сложного. Все просто. А вот дальше... Скажу теперь "хитрость" - чтобы не выходить из установщика - нужно нажать Ctrl+F2 и работать в соседней консоли. В консоли нужно сконфигурить сеть. В Arch сеть вообще нужна обязательно - установочный диск содержит самый-самый минимум пакетов. # aif -p partial-configure-network # cp /etc/resolv.conf /mnt/etc И вот теперь делаем chroot в новую систему: # mount -t proc proc /mnt/ptoc # mount -t sysfs sys /mnt/sys # mount -o bind /dev /mnt/dev # chroot /mnt /bin/bash И вот тут у меня произошла еще одна нештатная ситуация. В новой системе было не видно примонтированных дисков и из-за этого pacman не мог установить пакеты: "Not enougth space". Решается так: # grep -v rootfs /proc/mounts > /etc/mtab Теперь с пакетами и установкой пакетов всё в порядке: # pacman -Syy # pacman -S grub2-bios grub2, кстати, предложит удалить grub, который как один из штатных пакетов установился инсталлятором. Соглашаемся. Если нужно - правим конфиг grub2: # vi /etc/default/grub Теперь наконец-то устанавливаем загрузочную запись: # grub-install /dev/sda --no-floppy # grub-install /dev/sdb --no-floppy И автоматически генерим конфиг # grub-mkconfig -o /boot/grub/grub.cfg Теперь перегенерим связи ядра: # mkinitcpio -p linux Выходим из новой системы и в финале не забудем сделать конфиг для наших raid-устройств: # exit # mdadm --examine --scan >> /etc/mdadm.conf # reboot Замечу, что в инсталляторе Arch, который остался в первой консоли, мы так и не завершили последний шаг - установку grub. Вместо этого мы самостоятельно руками установили "более модный" grub2. == Мелкие баги или фичи == После перезагрузки у меня всё ОК, но возникли мелкие помарочки, которые однако позволили загрузиться. 1. grub2 выдал: "error: file '/boot/grub/locale/en.mo.gz' not found" Решение: # cp /boot/grub/locale/en@guot.mo /boot/grub/locale/en_US.mo 2. pacman -Syu не сумел обновить пакеты. сначала выдал что-то типа: "/etc/mtab error" Решение: # pacman -S filesystem --force 3. Потом pacman -Syu опять не обновил пакеты с багом: "initscripts: /etc/profile.d/locale.sh exists in filesystem" Решение: # mv /etc/profile.d/locale.sh /etc/profile.d/locale.sh.old И вот таперь всё отлично! На восьмиядерном проце AMD FX система летает с такой скоростью, что дух захватывает, а благодаря UPS, RAID1 и бекапам на удаленные компьютеры - надежна до бесконечности. И не надо менять версии - ведь у нас rolling-release. И не надо компилить пакеты - поэтому все 8 ядер свободны и готовы к полезному труду на благо мастера. == Примечания == В этой статье я не упомянул, что во время установки можно было бы и локали настроить, и русский язык сделать, и зеркала для обновлений указать, а в хуки ядра еще и mdadm прописать для загрузки. Думаю, всё это элементарно и без меня описано очень подробно.
Linux/Windows Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor