суббота, 15 мая 2010 г.

Установка Gentoo и OpenVZ на Acer Revo R3610

Здесь я постарался кратко, но со всеми нюансами описать процесс установки Gentoo Linux на Acer Revo R3610 и системы виртуализации OpenVZ. Во многом это повторение Gentoo Handbook, Gentoo Wiki и OpenVZ Wiki, но собранное в одном месте под конкретную задачу. Сразу оговорюсь, что изложение не рассчитано на новичков. С другой стороны, вряд ли у новичков возникнет подобная потребность. :)

Сначала создаём загрузочную флешку с Gentoo Minimal Installation CD. Я выбрал архитектуру amd64, вполне возможно, вам стоит выбрать x86. TODO: описание процесса.

Подключаем Acer Revo к сети, обеспечивающей выход в интернет. У меня в сети есть роутер, который выдаёт IP-адрес и настройки по DHCP. Остальным предлагаю почитать соответствующие главы в Gentoo Handbook.

Выставляем в BIOS правильное UTC-время.

На этом этапе у меня возникла непонятная проблема с определением BIOS'ом загрузочной флешки. После включения мой Acer Revo её не видит, но спустя некоторое время после различных манипуляций (включения/выключения, загрузок, заходов в BIOS, перетыкания флешки) она вдруг появляется. Итак, считаем, что нам повезло, мы нажали F12 и увидели flash-накопитель, жмём на него, грузимся, жмём Enter на предложение загрузить ядро Linux.

При загрузке не зеваем и на вопрос "Please select a keymap" выбираем "31 ru".

Мне удобнее производить настройку через ssh, к тому же сеть у меня абсолютно доверенная. Создаём пароль для root и запускаем sshd:

livecd ~ # passwd
(вводим новый пароль 2 раза)
livecd ~ # /etc/init.d/sshd start

Затем смотрим IP-адрес, выданный роутером

livecd ~ # ifconfig
Заодно проверим наличие интернета
livecd ~ # ping www.ru

Затем с другой машины, где удобная клавиатура и гугл под рукой:

$ ssh root@192.168.0.xxx (подставить ваш IP)

В принципе, эти шаги можно пропустить. С этого момента считаем, что консоль Acer Revo и интернет у нас наличествует.

Смотрим, что у нас на жёстком диске:

livecd ~ # fdisk -l /dev/sda

Убеждаемся, что количество гигабайт соответствует тому, что мы покупали. Моя схема разметки простая: 32 Мб под /boot, 4Gb под swap, 50Gb под корневую файловую систему и оставшееся место под /vz, где будут находиться контейнеры с виртуальными машинами. Таким образом, в моём случае хватит primary-разделов, и extended-раздел создавать не потребуется.

Создаём новую таблицу разделов, используя утилиту fdisk:

livecd ~ # fdisk /dev/sda

Удаляем все разделы: последовательно жмём d и номер раздела. p выводит список разделов для контроля над процессом.

Создаём раздел для /boot:

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-60801, default 1): (Enter)
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-60801, default 60801): +32M

Выставляем для загрузочного раздела флаг bootable:

Command (m for help): a
Partition number (1-4): 1

Создаём раздел подкачки (swap):

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (6-60801, default 6): (Enter)
Using default value 6
Last cylinder, +cylinders or +size{K,M,G} (6-60801, default 60801): +4G

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)

Создаём раздел для /:

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (529-60801, default 529): (Enter)
Using default value 529
Last cylinder, +cylinders or +size{K,M,G} (529-60801, default 60801): +50G

Создаём раздел для /vz:

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4
First cylinder (7057-60801, default 7057): (Enter)
Using default value 7057
Last cylinder, +cylinders or +size{K,M,G} (7057-60801, default 60801): (Enter)
Using default value 60801

Убеждаемся, что всё получилось так, как задумано:

Command (m for help): p

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x5041ce77

Device Boot Start End Blocks Id System
/dev/sda1 * 1 5 40131 83 Linux
/dev/sda2 6 528 4200997+ 82 Linux swap / Solaris
/dev/sda3 529 7056 52436160 83 Linux
/dev/sda4 7057 60801 431706712+ 83 Linux

Жмём w, после чего новая таблица разделов будет записана, а все имеющиеся на диске данные уничтожены.

Создаём файловые системы:

livecd ~ # mke2fs /dev/sda1
livecd ~ # mke2fs -j /dev/sda3
livecd ~ # mke2fs -j /dev/sda4

Отдельный раздел для OpenVZ создаётся для того, чтобы обеспечить безопасность хост-системе. Если контейнеры будут находиться в корневом разделе, то их данные могут "залезть" на зарезервированные для root 5% дискового пространства хост-системы. К тому же важно использовать для этого раздела ext3, потому что только для неё (и ext2) гарантируется корректная работа дисковых квот для контейнеров.

Создаём и активируем swap-раздел:

livecd ~ # mkswap /dev/sda2
livecd ~ # swapon /dev/sda2

Монтируем разделы в соответствующие директории:

livecd ~ # mount /dev/sda3 /mnt/gentoo/
livecd ~ # mkdir /mnt/gentoo/boot
livecd ~ # mount /dev/sda1 /mnt/gentoo/boot/

Качаем актуальный stage3 и распаковываем его:

livecd ~ # cd /mnt/gentoo/
livecd gentoo # wget http://mirror.yandex.ru/gentoo-distfiles/releases/amd64/autobuilds/current-stage3/stage3-amd64-20xxxxxx.tar.bz2
livecd gentoo # tar xjpf stage3-amd64-20xxxxxx.tar.bz2

Качаем актуальный срез portage и распаковываем его:

livecd gentoo # wget http://mirror.yandex.ru/gentoo-distfiles/snapshots/portage-latest.tar.bz2
livecd gentoo # tar xjf portage-latest.tar.bz2 -C /mnt/gentoo/usr/

Далее доводим до ума make.conf:

livecd gentoo # nano -w /mnt/gentoo/etc/make.conf

CFLAGS="-O2 -march=core2 -mtune=generic -mssse3 -mfpmath=sse -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"

USE="mmx sse sse2 ssse3 vdpau -ipv6 -ldap -pcf"

MAKEOPTS="-j5"

SYNC="rsync://rsync2.ru.gentoo.org/gentoo-portage"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/"

Последние приготовления chroot-окружения:

livecd gentoo # cp -L /etc/resolv.conf /mnt/gentoo/etc/
livecd gentoo # mount -t proc none /mnt/gentoo/proc/
livecd gentoo # mount -o bind /dev /mnt/gentoo/dev/

Переходим в него:

livecd gentoo # chroot /mnt/gentoo/ /bin/bash
livecd / # env-update
livecd / # source /etc/profile
livecd / # export PS1="(chroot) $PS1"

Обновляем дерево портежей:

(chroot) livecd / # emerge --sync

Выбираем серверный профиль:

(chroot) livecd / # eselect profile list
[1] default/linux/amd64/10.0 *
...
[7] default/linux/amd64/10.0/server
...
(chroot) livecd / # eselect profile set 7

Для хост-машины создаём только английскую локаль:

(chroot) livecd / # nano -w /etc/locale.gen

и раскомментируем строку en_US.UTF-8 UTF-8

(chroot) livecd / # locale-gen

Выбираем свой часовой пояс:

(chroot) livecd / # cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Устанавливаем пакет с исходниками ядра Linux:

(chroot) livecd / # emerge gentoo-sources

Далее можем долго и мучительно затачивать конфиг под оборудование Acer Revo:

(chroot) livecd linux # cd /usr/src/linux
(chroot) livecd linux # make menuconfig

, а можем воспользоваться готовым (и поблагодарить меня, потратившего на это несколько часов):

TODO: .config

Компилируем ядро (у меня оно компилировалось 11 минут 44 секунды):

(chroot) livecd linux # time make -j5
(chroot) livecd linux # make install
(chroot) livecd linux # make modules_install

Настраиваем fstab:

(chroot) livecd linux # nano -w /etc/fstab

/dev/sda1 /boot ext2 defaults,noatime 1 2
/dev/sda3 / ext3 defaults,noatime 0 1
/dev/sda2 none swap sw 0 0
proc /proc proc defaults 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0

Даём имя машине:

(chroot) livecd linux # nano -w /etc/conf.d/hostname
HOSTNAME="srv1"

Мне имя домена не нужно, поэтому удаляем .\O из шаблона приветствия:

(chroot) livecd linux # nano -w /etc/issue
This is \n (\s \m \r) \t

Конфигурируем сеть:

(chroot) livecd linux # nano -w /etc/conf.d/net
config_eth0=( "dhcp" )

(chroot) livecd linux # rc-update add net.eth0 default

Прописываем имя машины в hosts:

(chroot) livecd linux # nano -w /etc/hosts
127.0.0.1 srv1 localhost
::1 srv1 localhost

Создаём пароль для суперпользователя:

(chroot) livecd linux # passwd

Делаем vim текстовым редактором по-умолчанию для системы:

(chroot) livecd linux # nano -w /etc/rc.conf
#EDITOR="/bin/nano"
EDITOR="/usr/bin/vim"

Настраиваем часы:

(chroot) livecd linux # nano -w /etc/conf.d/clock
TIMEZONE="Europe/Moscow"
CLOCK_SYSTOHC="yes"

Решаем проблемы отображения кириллицы.

Меняем следующие строки в keymaps:

(chroot) livecd linux # nano -w /etc/conf.d/keymaps
KEYMAP="ruwin_cplk-UTF-8"
SET_WINDOWKEYS="yes"
#DUMPKEYS_CHARSET=""

Далее устанавливаем консольный шрифт с поддержкой кириллицы. Мне нравится terminus. Здесь мы немножко схитрили, выключив заранее в make.conf use-флаг pcf, который отвечает за поддержку Portable Compiled Font. Эта штука нам навряд ли понадобится, ведь у нас не стоит X11, а она тянет за собой кучу иксовых библиотек.

(chroot) livecd linux # emerge terminus-font

(chroot) livecd linux # nano -w /etc/conf.d/consolefont
CONSOLEFONT="ter-v14n"

Создадим файл, включающий нашу локаль:

(chroot) livecd linux # nano -w /etc/env.d/02locale
LANG="en_US.UTF-8"

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

(chroot) livecd linux # emerge gpm
(chroot) livecd linux # nano -w /etc/conf.d/gpm
#MOUSE=ps2
MOUSE=imps2

Доустанавливаем необходимые системные утилиты:

(chroot) livecd linux # emerge syslog-ng logrotate vixie-cron dhcpcd
(chroot) livecd linux # rc-update add syslog-ng default
(chroot) livecd linux # rc-update add vixie-cron default

Устанавливаем загрузчик GRUB:

(chroot) livecd linux # emerge grub

(chroot) livecd linux # nano -w /boot/grub/grub.conf
title Gentoo Linux 2.6.32
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-gentoo-r7 root=/dev/sda3 video=uvesafb:1024x768-32@100,mtrr:3,ywrap

(chroot) livecd linux # grep -v rootfs /proc/mounts > /etc/mtab
(chroot) livecd linux # grub-install --no-floppy /dev/sda

(chroot) livecd linux # exit
livecd gentoo # cd
livecd ~ # umount /mnt/gentoo/boot/ /mnt/gentoo/dev/ /mnt/gentoo/proc/ /mnt/gentoo/
livecd ~ # reboot

Входим в систему под root, создаём пользователя:

srv1 ~ # useradd -m -G users,wheel,audio,video -s /bin/bash vasyapupkin
srv1 ~ # passwd vasyapupkin

Удаляем ненужный файл (stage3 оставляем, он потребуется для создания шаблона контейнера OpenVZ):

srv1 ~ # rm /portage-latest.tar.bz2

Устанавливаем всё то, чего не хватало для полного счастья:

srv1 ~ # emerge vim gentoolkit eix mc

При желании, теперь можно пересобрать всю систему, после чего каждая программа будет использовать оптимизации, которые мы указали в make.conf:

srv1 ~ # eix-sync
srv1 ~ # emerge -1 binutils gcc glibc && emerge -e world

После чего можно смело ложиться спать, чего я и сделаю. :)

Иначе же можно просто проапдейтить все пакеты:

srv1 ~ # emerge -uND world

Просыпаемся, завтракаем и выполняем:

srv1 ~ # etc-update

Оставляем наши версии конфигурационных файлов.

На всякий случай:

srv1 ~ # revdep-rebuild

На этом можно было бы и закончить, но в моём случае имеет смысл использовать виртуальные машины, поэтому продолжаем. :)

Небольшое лирическое отступление. На данный момент стабильным ядром по-прежнему считается 2.6.18. В Gentoo по-умолчанию уже предлагается 2.6.27 (релизы которого называются, к слову, по фамилиям русских художников), но есть возможность использовать и development-версию 2.6.32 (а эти ядра называют по фамилиям русских космонавтов).

Существуют три причины, по которым я решился использовать openvz-ядро 2.6.32 (да-да, на свой страх и риск). Во-первых, это лень опять копаться в конфиге ядра, во-вторых, поддержка типа процессора Atom в новом ядре (правда, можно это будет использовать только с gcc 4.5, стабильность которого, по отзывам, сейчас оставляет желать лучшего), в-третьих, по слухам, новой стабильной версией ядра будет как раз 2.6.32, и я верю, что светлое будущее уже не за горами. Мой сугубо домашний сервер как-нибудь период ожидания переживёт.

Размаскируем ядро:

srv1 ~ # vi /etc/portage/package.unmask
sys-kernel/openvz-sources
srv1 ~ # vi /etc/portage/package.keywords
>=sys-kernel/openvz-sources-2.6.32 ~amd64

И установим его исходники:

srv1 ~ # emerge openvz-sources

TODO: .config

srv1 ~ # eselect kernel list
[1] linux-2.6.32-gentoo-r7 *
[2] linux-2.6.32-openvz-avdeyev.1
srv1 ~ # eselect kernel set 2
srv1 ~ # ls -l /usr/src/linux
lrwxrwxrwx 1 root root 29 May 16 18:06 /usr/src/linux -> linux-2.6.32-openvz-avdeyev.1
srv1 ~ # cd /usr/src/linux

srv1 linux # time make -j5
srv1 linux # make install
srv1 linux # make modules_install

Ради интереса, это ядро компилировалось 13 минут 40 секунд.

srv1 linux # vi /boot/grub/grub.conf
title Gentoo Linux 2.6.32 (OpenVZ)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-openvz-avdeyev.1 root=/dev/sda3 video=uvesafb:1024x768-32@100,mtrr:3,ywrap

title Gentoo Linux 2.6.32 (rescue)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-gentoo-r7 root=/dev/sda3 video=uvesafb:1024x768-32@100,mtrr:3,ywrap init=/bin/bb

Редактируем настройки ядра и перезагружаемся с новым ядром:

srv1 etc # vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
kernel.sysrq = 1

srv1 linux # reboot

Убеждаемся, что это оно:

srv1 ~ # uname -r
2.6.32-openvz-avdeyev.1

Создаём директорию для контейнеров OpenVZ и монтируем в неё раздел:

srv1 ~ # mkdir /vz
srv1 ~ # vi /etc/fstab
/dev/sda4 /vz ext3 defaults,noatime 0 2
srv1 ~ # mount /vz

Устанавливаем необходимый комплект программ:

srv1 ~ # emerge vzctl

В контейнерах планируется использовать также Gentoo Linux, поэтому немного поправим конфиг, чтобы в будущем было удобнее создавать контейнеры:

srv1 ~ # vi /etc/conf.d/vz
DEF_OSTEMPLATE="gentoo"

srv1 ~ # rc-update add vz default
srv1 ~ # /etc/init.d/vz start

Приступаем к созданию шаблона контейнера (stage3 у нас должен был остаться от установки хост-системы):

srv1 ~ # mkdir /vz/private/101
srv1 ~ # tar xjf /stage3-amd64-20100514.tar.bz2 -C /vz/private/101/

Создадим конфигурационный файл для контейнера:

srv1 ~ # vzctl set 101 --applyconfig vps.basic --save

Настройки по-умолчанию контейнера меня не устраивают, мне нужен гораздо более мощный контейнер. Доводим конфигурационный файл до такого состояния:

srv1 ~ # vi /etc/vz/conf/101.conf
OSTEMPLATE="gentoo"
KMEMSIZE="16384000:18022400"
LOCKEDPAGES="4096:4096"
PRIVVMPAGES="262144:292912"
SHMPAGES="131072:131072"
NUMPROC="400:400"
PHYSPAGES="0:9223372036854775807"
VMGUARPAGES="102400:9223372036854775807"
OOMGUARPAGES="102400:9223372036854775807"
NUMTCPSOCK="500:500"
NUMFLOCK="200:220"
NUMPTY="64:64"
NUMSIGINFO="512:512"
TCPSNDBUF="5365760:10485760"
TCPRCVBUF="5365760:10485760"
OTHERSOCKBUF="1503232:4063232"
DGRAMRCVBUF="262144:262144"
NUMOTHERSOCK="500:500"
NUMFILE="8192:8192"
DCACHESIZE="4194304:4317184"
NUMIPTENT="128:128"
AVNUMPROC="180:180"
CPUUNITS="1000"
ONBOOT="yes"
ORIGIN_SAMPLE="vps.basic"
DISKSPACE="47185920:52428800"
DISKINODES="400000:440000"
QUOTATIME="0"
IP_ADDRESS="192.168.0.101"
NAMESERVER="192.168.0.1"
HOSTNAME="vps101"
DEVNODES="tty12:rw"

Делаем доступными примонтированные файловые системы внутри контейнера и оставляем в fstab контейнера только точку монтирования /proc, которая будет монтироваться во время загрузки контейнера:

srv1 ~ # rm -f /vz/private/101/etc/mtab
srv1 ~ # ln -s /proc/mounts /vz/private/101/etc/mtab
srv1 ~ # grep ^proc /etc/fstab > /vz/private/101/etc/fstab

Комментируем команды создания виртуальных консолей, которые не существуют внутри контейнера:

srv1 ~ # vi /vz/private/101/etc/inittab
комментируем знаком # все строки вида
c?:2345:respawn:/sbin/agetty 38400 tty? linux

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

srv1 ~ # vi /vz/private/101/etc/shadow
root:!:10770:0:::::

Когда возможность логина root понадобится, установить пароль можно будет командой vzctl set 101 --userpasswd root:password.

Удаляем стартовые скрипты, которые не должны выполняться в контейнере:

srv1 ~ # rm /vz/private/101/etc/runlevels/boot/checkroot
srv1 ~ # rm /vz/private/101/etc/runlevels/boot/consolefont

Закомментируем строку, отвечающую за монтирование /sys и защитим конфигурационный файл от автоматического обновления:

srv1 ~ # vi /vz/private/101/sbin/rc
# try mount -n ${mntcmd:--t sysfs sysfs /sys -o noexec,nosuid,nodev}
srv1 ~ # cp /etc/make.conf /vz/private/101/etc/make.conf
srv1 ~ # vi /vz/private/101/etc/make.conf
CONFIG_PROTECT="/sbin/rc"

Отключаем udev в контейнере:

srv1 ~ # vi /vz/private/101/etc/conf.d/rc
RC_DEVICES="static"

Проверяем контейнер:

srv1 ~ # vzctl start 101
srv1 ~ # vzctl enter 101

Убеждаемся, что на уровнях загрузки boot и default все сервисы стартовали:

vps101 / # rc-status -a

Добавим sshd в автозагрузку. Не запускаем сервис (!), т.к. при этом создадутся ключи, которые потом будут копироваться из шаблона во все вновь создаваемые контейнеры:

vps101 / # rc-update add sshd default

Теперь стоит выполнить настройку контейнера, аналогично описанной выше настройке хост-системы. Многое из этих настроек можно или нужно пропустить, поэтому перечислю то, что нужно настроить:
профиль, локаль (здесь, возможно, стоит добавить локали согласно требованию ваших приложений), шаблон приветствия системы, /etc/rc.conf, /etc/conf.d/keymaps, /etc/env.d/02locale.

Теперь хотелось бы установить в будущем шаблоне контейнера некоторый минимально необходимый набор системного ПО. Для этого выходим из контейнера и монтируем с опцией bind директорию дерева портежей хост-системы:

vps101 / # exit
srv1 ~ # mkdir /vz/root/101/usr/portage
srv1 ~ # mount -o bind /usr/portage/ /vz/root/101/usr/portage/
srv1 ~ # vzctl enter 101

Сначала немного изменим make.conf контейнера, т.к. gpm и cups в них не имеют смысла:

vps101 / # vi /etc/make.conf
USE="mmx sse sse2 ssse3 vdpau -ipv6 -ldap -gpm -cups"

Устанавливаем ПО:

vps101 / # emerge syslog-ng logrotate vixie-cron vim gentoolkit eix mc
vps101 / # rc-update add syslog-ng default
(это нужно будет для нормальной работы syslog после перезагрузки контейнера)
vps101 / # rm /dev/tty12
vps101 / # rc-update add vixie-cron default

Обновляем всё (это надолго):

vps101 / # emerge -1 binutils gcc glibc && emerge -e world

vps101 / # exit

Наконец создаем архив с шаблоном контейнера:

srv1 ~ # umount /usr/portage/
srv1 ~ # vzctl stop 101
srv1 ~ # cd /vz/private/101/
srv1 ~ # tar --numeric-owner -czf /vz/template/cache/gentoo.tar.gz *

Теперь для создания нового контейнера на основе шаблона можно просто выполнить команду:

srv1 ~ # vzctl create 102 --config gentoo --ipadd 192.168.0.10 --hostname testvps

Для установки пароля root в созданном контейнере выполняем:

srv1 ~ # vzctr set 102 --userpasswd root:password

На этом, пожалуй, можно и закончить.

воскресенье, 18 апреля 2010 г.

Acer Revo R3610 с Linpus Linux - первые впечатления

Приобрёл сей замечательный девайс ещё в прошлый четверг, и вот только сейчас нашёл время его поковырять. Предполагается использовать его как замену старому домашнему серверу, который по сути был обычным морально устаревшим компом, а следовательно шумел и занимал много места. Конфигурацию взял с 500Гб жёстким диском и 2 Гб оперативной памяти (которая легко расширяется до 4Гб, правда, с потерей гарантии) и, как выяснилось (а я не верил, наивный), порождением ада Linpus Linux на борту.

Замечу, что именно эту комплектацию мне пришлось ждать около 2 месяцев (lynx -source и grep рулят! :) ), и разошлась она буквально за пару дней после появления в магазине. Дело в том, что версия с 250Гб жёстким диском стоит почти столько же, а разница очевидна.

Теперь о плохом. Собственно, хорошего об устройстве было написано немало, я же опишу возникшие проблемы. В первую очередь, в Linpus'е не заработал wi-fi. В интернете можно найти буквально пару ссылок на аналогичную проблему - в networkmanager'е не показывается список доступных сетей, а если копнуть глубже, то интерфейс с красивым названием wifi0 вообще оказывается после загрузки не поднятым, команды iwlist и iwconfig падают с сообщением, что не найден какой-то so'шник модуля. В общем, тихий ужас. Даром что стоят два взаимозаменяемых wireless-tools и wpa_supplicant + networkmanager, и всё равно ничего не работает. :) Впрочем, по кабелю интернет заработал без проблем, хоть на том спасибо.

Далее смотрим память - порядок, процессор - общей сложностью 4 ядра, нормально. Опаньки, df показывает 20 Гб на жёстком диске, fdisk -l говорит, что диск всё-таки правильный, только почти всё дисковое пространство на нём попросту не размечено. Мягко говоря, удивительный подход производителя.

Попытка обновиться привела к сообщению, что у меня всё самое свежее. Я втайне надеялся, что обновится firmware для wifi и он наконец заработает. Попытка установить новый софт (захотелось midnight commander) привела к появлению надписи о создании некоей базы программ общим количеством 0 штук.

Тут я понял, что матюки в адрес создателей дистрибутива не такие уж безосновательные, и решил попробовать загрузиться с liveusb-диска. Почитав интернеты, понял, что быстрее всего сделать его для Ubuntu, благо Убунта у меня до сих пор не снесена. Выкачал образ для amd64 (оказывается, чипсеты Atom 330 и даже 230 64-битные), воткнул флешку, ткнул кнопку - образ перенёсся на флешку, причём с возможностью сохранять данные на ней. Затем выставил в BIOS (кнопка Del) нашего подопытного кролика Advanced BIOS Features -> Quick Boot в Disabled - так машина будет делать все предзагрузочные тесты и обнаружит нашу флешку. Кнопка F12, выбираем флешку и грузим Убунту. Сразу же убедился, что вай-фай прекрасно работает и нести компьютер в гарантийный отдел не нужно. Затем описал всё это здесь, выпил чаю, перечитал, опубликовал и лёг спать. :) Скоро буду водружать на Acer Revo нормальный дистриб, правда ещё не решил какой.

среда, 23 января 2008 г.

Быстророутер на m0n0wall.

Вчера открыл для себя m0n0wall. До сих пор под впечатлением. В принципе, оно может быть и ничего особенного, но я действительно без проблем поднял на этой штуке роутер за "ннадцать" минут, включая чтение документации. Быстро поднять роутер — это всё, что мне требовалось, но система умеет и многое другое, о чём можно прочитать на официальном сайте проекта.

Проблема была в том, что на имеющемся роутере на базе Debian Linux возникали непонятные затыки с интернетом. По горячим следам причин проблемы выявлено не было, и параллельно было решено соорудить роутер на FreeBSD, тем более только что зарелизилась версия 6.3. Но та упорно не устанавливалась на выделенную для этих целей машину. Такое ощущение, что в обоих случаях не повезло с железом, но пока суд да дело, надо обеспечить офис стабильным интернетом. Итак, мой выбор пал на m0n0wall по причине наличия подробной документации и достаточно частого выхода новых релизов.

Кратко, это мини-дистрибутив на базе FreeBSD (на данный момент используется ядро 4.11) размером меньше 6 Мб. Можно использовать на бездисковых машинах, что я и сделал (лишний жёсткий диск в хозяйстве всегда пригодится). Грузится у меня это добро с CD-диска (можно также с флэшки, но в моём случае это неактуально), настройки сохраняет на дискету, которым наконец нашлось применение. Настройки — обычный XML-файл. Мои настройки настолько просты, что с трудом заставил себя сделать бэкап. :) Из вкусностей — polling, из-за чего я планирую под роутер откопать в железках вообще что-нибудь времён раннего фанерозоя, заодно тогда посмотрим, насколько будет заметна увеличенная latency. Ну а главная фича этого проекта — отличный веб-интерфейс для редактирования всего и вся. Пока в режиме тестирования сидим всем отделом, полёт нормальный! :)