"Программное обеспечение словно секс: лучше, когда это бесплатно!" Линус Торвальдс
"Программное обеспечение словно секс: лучше, когда это бесплатно!" Линус Торвальдс
Join Us
это дистрибутив Linux, который ни чего не хочет делать сам.
Повышает Ваш IQ, в замен требуя кучу времени на то, чтобы разобраться, как это работает и почему не всё получается.
Он не становится с первого раза.., вот зараза, легко заставит рвать на себе волосы и проклинать того, кто подсунул эту гадость.
Не раз может возникнуть желание послать всё к чёртовой матери.
Но пройдёт немного времени и снова захочется вернуться.
В конечном итоге, настроив систему по своему усмотрению, вытираем пот со лба, больше не придётся этим заниматься.
Однажды установив Gentoo, можно годами использовать его, и это всегда будет свежая версия дистрибутива, которая больше всего подходит именно Вам.
"за другое будем бить по попе"
"Я вчера много пил...
Пришёл домой, не мог зайти в инет,
чё то сделал и зашёл.
Когда с утра увидел, что у меня стоит
Gentoo, вместо macOC...||||||||| Windы...
Я бросил пить."
"Доктор, у меня глюки.
А какая у Вас операционная
система? - macOC...|||||||| Windows.
Могу посоветовать перейти на Gentoo.
Но предупреждаю, глюки
должны исчезнуть, но получите геморрой."
"Гентушник без терминала
не может даже пукнуть."
"Ставил Gentoo - поломал 2 бубна."
Загружаем образ Live CD.
Определяем нашу флешку:
ls -l /dev/disk/by-id/
(например /dev/sdb) и записываем образ на неё:
dd if=./livedvd-amd64-multilib-XXXXXXXX.iso of=/dev/sdb status=progress && sync # если получаем сообщение:
dd: invalid status flag: 'progress' # данная версия dd не поддерживает параметр status=progress, удаляем его (и пропускаем индикатор прогресса записи).
Запуск установочного носителя:
Запускаем livedvd-amd64-multilib-XXXXXXXX.iso с флешки и начинаем установку Gentoo.
Проверка доступности сетевой платы:
ifconfig
(удачная):
enp3s0: flags=4163 UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.101 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::4216:7eff:fe24:dfb8 prefixlen 64 scopeid 0x20
ether 40:16:7e:24:df:b8 txqueuelen 1000 (Ethernet)
RX packets 358625 bytes 534838685 (510.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 275597 bytes 23854365 (22.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo flags= ...
Если сеть не заработает сразу, можно использовать net-setup (для обычных или беспроводных сетей),
pppoe-setup
(для пользователей ADSL) или pptp (для пользователей PPTP; есть на x86, amd64, alpha, ppc и ppc64).
Тестирование сети:
ping -c 3 www.gentoo.org
Использование GPT на компьютере с BIOS работает, но нельзя выполнять двойную загрузку с операционной системой Microsoft Windows.
Windows загрузится в режиме UEFI, если обнаружит метку раздела GPT. Некоторые прошивки материнской платы, настроенные для загрузки в BIOS / CSM , могут также иметь проблемы с загрузкой дисков с меткой GPT. Можно обойти проблему, добавив флаг boot / active в загрузочный раздел MBR, через fdisk -t dos чтобы заставить прочитать таблицу разделов с использованием формата MBR.
fdisk -t dos /dev/sda
Parted поддерживает большие разделы (более 2 ТБ).
Для оптимального выравнивания разделов:
parted -a optimal /dev/sda
Удаление X раздела:
(parted) rm X
При изменении типа раздела gpt будут удалены все разделы с диска:
(parted) mklabel gpt
Чтобы иметь диск с макетом MBR, используется mklabel msdos.
Разделы могут быть выражены в s - сектора, b, kb, mb, gb и тд.
(parted) unit b
(parted) mkpart primary 1048576 3145727
(parted) name 1 grub
(parted) set 1 bios_grub on
(parted) mkpart primary 3145728 137363455
(parted) name 2 "EFI System Partition"
(parted) mkpart primary 137363456 17317232639
(parted) name 3 swap
(parted) mkpart primary 17317232640 71004323839
(parted) name 4 rootfs
(parted) mkpart primary 71004323840 1000066206719
(parted) name 5 home
Для определения оставшегося свободного места на диске, используем команду:
(parted) print free
При использовании интерфейса UEFI для загрузки системы (вместо BIOS),
отмечаем загрузочный раздел в качестве раздела EFI System Partition
(parted) set 2 boot on
Для проссмотра конечного результата:
(parted) unit mb print
Для выхода
(parted) q
Parted позволяет изменять размеры раздела диска командой resizepart.
Будет предложено указать номер раздела, который необходимо изменить.
После этого необходимо установить новую конечную точку для этого раздела.
(parted) resizepart
Partition number? X
End? [XX.XGB]? XXXXX
Может помочь восстановить потерянный раздел между начальной и конечной точками. Если раздел найден в этом диапазоне, он попытается восстановить его.
(parted) rescue
Start? X
End? XXXXX
(parted) print
Создание файловых систем на разделах:
Первый раздел оставляем пустым.
При установке Gentoo на систему, которая использует UEFI для загрузки операционной системы (вместо BIOS), важно, чтобы был создан системный раздел EFI.
Для EFI должена быть создана файловая система FAT32 (или VFAT, как на системах Linux).
mkfs.vfat -F 32 /dev/sda2
Чтобы у раздела /dev/sda4 была файловая система ext4, требуется выполнить:
mkfs.ext4 /dev/sda4
XFS Файловая система с журналированием метаданных, обладающая надёжным набором функций и оптимизированная для масштабируемости. Она постоянно обновляется и включает в себя современные функции. Единственным недостатком является то, что разделы XFS пока нельзя сжать, хотя над этим работают. XFS, в частности, поддерживает реферальные ссылки и копирование при записи (CoW), что особенно полезно в системах Gentoo из-за большого количества компиляций, выполняемых пользователями. XFS — рекомендуемая современная универсальная файловая система для всех платформ.
mkfs.xfs /dev/sda4
Для других разделов выбираем свою файловую систему.
Например для /dev/sda5, файловую систему btrfs:
mkfs.btrfs -f /dev/sda5
Подключение раздела подкачки
mkswap /dev/sda3 команда, используемая для инициализации разделов подкачки
swapon /dev/sda3 для подключения раздела подкачки.
mount /dev/sda4 /mnt/
Проверка даты и времени:
date
Fri Mar 29 16:21:18 UTC 2016
если время не соответствует, набираем команду:
date ММДДччммГГГГГ
Загрузка архива стадии:
переход к точке подключения Gentoo
cd /mnt/
загружаем файл стадии:
links http://www.gentoo.org/main/en/mirrors.xml
Выберите ближайшее зеркало. Перейдите в каталог releases/amd64/autobuilds/,
выберите файлы стадий для вашей архитектуры и нажмите D для загрузки.
По окончании нажмите Q, чтобы выйти из браузера.
Распаковка архива стадии:
tar xpf stage3-amd64-*.tar.xz
Создаём efi директорию:
mkdir -p /mnt/boot/efi
mount /dev/sda2 /mnt/boot/efi
Копирование информации о DNS:
DNS-сервер своего провайдера и его адрес можно найти в /etc/resolv.conf.
(при устранении ошибок в установленной ОС с Systemd, предварительно удаляем resolv.conf)
rm /mnt/etc/resolv.conf
cp -L /etc/resolv.conf /mnt/etc/
Монтирование proc, sys и dev
mount --types proc /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --rbind /dev /mnt/dev
mount --bind /run /mnt/run
mount --make-slave /mnt/run
mount --make-rslave /mnt/sys
mount --make-rslave /mnt/dev
Операции --make-rslave необходимы для поддержки Systemd.
chroot /mnt /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
Для выбора зеркала, настраиваем репозиторий ebuild Gentoo через файл /etc/portage/repos.conf/gentoo.conf. Этот файл содержит информацию о синхронизации, необходимую для обновления репозитория пакетов (коллекция ebuild и связанных файлов, содержащая всю информацию, необходимую Portage для загрузки и установки пакетов программного обеспечения).
Создаём каталог repos.conf:
mkdir --parents /etc/portage/repos.conf
Копируем файл конфигурации репозитория Gentoo, предоставленный Portage, в (вновь созданный) каталог repos.conf:
cp /usr/share/portage/config/repos.conf /etc/portage/repos.conf/gentoo.conf
Запускаем emerge-webrsync для установки образа Portage:
emerge-webrsync
Для быстрой загрузки исходного кода рекомендуется выбирать быстрое и географически близкое зеркало. Portage будет искать в файле make.conf переменную GENTOO_MIRRORS и использовать перечисленные в нем зеркала. Можно просмотреть список зеркал Gentoo и найти зеркало (или несколько зеркал), расположенное рядом с физическим местоположением системы (поскольку они чаще всего являются самыми быстрыми).
Инструмент под названием Mirrorselect предоставляет красивый текстовый интерфейс для более быстрого запроса и выбора подходящих зеркал. Просто переходим к выбранным зеркалам и нажимаем пробел, чтобы выбрать одно или несколько зеркал.
emerge --ask --verbose --oneshot app-portage/mirrorselect
mirrorselect -i -o >> /etc/portage/make.conf
Работаем с новостями Portage:
eselect news list
eselect news read 23
2024-03-22-новые-23-профили
Доступно обновление титульного профиля до версии 23.0.
Автор Андреас К. Хюттель <dilfridge@gentoo.org>
Опубликовано 22 марта 2024 г.
Версия 2
Для вашей архитектуры доступно обновление профиля до версии 23.0.
Новые профили 23.0 включают некоторые функции усиления защиты инструментальной цепочки и улучшения производительности по умолчанию и стандартизация настроек.
Список изменений можно найти на вики-странице отслеживания [1].
Мы настоятельно рекомендуем точно следовать инструкциям по обновлению, найденным ниже. Профили 17.0, 17.1, 20.0 и 22.0 будут помечены как устаревшие через 2 месяца и удалены через год. Точные даты могут зависеть от архитектуру см. [2].
Инструкции по обновлению
Примечание 1. Если вы вручную изменили CHOST на значение, отличное от какие заданы этапы и профили, возможно, вам придётся сделать это и в будущем.
Надеюсь, в этом случае вы должны знать, что делаете; пожалуйста, прочитайте тогда инструкции с критическим взглядом.
Примечание 2. Если вы уже знакомы с двоичными пакетами, вам следует возможность добавить «--getbinpkg» к вызовам Erge для ускорения работы.
Однако использование бинарных пакетов совершенно необязательно и не так же проверен, как и путь обновления на основе исходного кода.
1. Убедитесь, что резервные копии вашей системы обновлены. Пожалуйста, также прежде чем продолжить, обновите и выполните полную очистку вашей системы.
glibc старше 2.36 и musl старше 1.2.4 больше не поддерживаются.
2. Если вы все ещё используете один из давно устаревших профилей amd64 17.0 (кроме x32 или musl), сначала завершите миграцию на соответствующий профиль 17.1. Инструкции можно найти по адресу [3].
3. Если вы сейчас используете systemd в конфигурации split-usr, то сначала завершить миграцию в соответствующий профиль merged-usr та же версия профиля. Подробности о том, как это сделать, можно прочитать в новостях, пункт [4].
Если вы в настоящее время используете openrc, сначала перейдите на версию 23.0, сохранив диск макет. Если вы хотите перейти от split-usr к merged-usr, сделайте это позже.
4. Запустите «emerge --info» и запишите значение переменной CHOST.
5. Отредактируйте /etc/portage/make.conf; если есть строка, определяющая переменную CHOST, убери это. Также удалите все строки, определяющие переменные CHOST_....
6. Выберите профиль 23.0, соответствующий вашему текущему профилю, либо с помощью «eselect Profile» или вручную установив символическую ссылку профиля.
Обратите внимание, что старые профили по умолчанию разделены на usr, а профили 23.0 — по умолчанию merged-usr. НЕ меняйте схему каталогов сейчас, так как это испортит систему!
Вместо этого убедитесь, что новый профиль имеет то же свойство: например,
СТАРЫЙ по default/linux/amd64/17.1
==> НОВОЕ по default/linux/amd64/23.0/split-usr
(добавлен "split-usr")
СТАРЫЙ по default/linux/amd64/17.1/systemd/merged-usr
==> НОВОЕ по default/linux/amd64/23.0/systemd
(удален «merged-usr»)
Подробную таблицу путей обновления можно найти в [5]. Пожалуйста, проконсультируйтесь с ней.
В некоторых случаях (hppa, x86) таблица предложит вам выбрать один из двух вариантов.
То, что вам нужно, должно быть очевидно из вашего *старого* значения CHOST (из шага 4).
7. Удалите содержимое кэша двоичных пакетов по адресу ${PKGDIR}.
rm -r /var/cache/binpkgs/*
8. В файле или каталоге /etc/portage/binrepos.conf (если он существует) обновите URI во всех конфигурациях так, чтобы они указывали на профиль 23.0 в binhost каталогах. Точные пути также можно найти в таблице в [5].
9. Пересоберите или переустановите из двоичного файла (если доступно) следующие пакеты в с той же версией, которая уже активна:
emerge --ask --oneshot sys-devel/binutils
(возможно, вам придётся запустить binutils-config и повторно выбрать binutils сейчас)
emerge --ask --oneshot sys-devel/gcc
(ВАЖНО: Если эта команда хочет сначала пересобрать glibc, *не* позволяйте ей это делать, вместо этого прервите выполнение и повторите попытку, добавив --nodeps в командную строку.)
(возможно, вам придётся запустить gcc-config и повторно выбрать gcc сейчас) и библиотека C, то есть для систем на базе glibc
emerge --ask --oneshot sys-libs/glibc
или для систем на основе musl
emerge --ask --oneshot sys-libs/musl
10. Повторно запустите «emerge --info» и проверьте, изменился ли CHOST по сравнению с шагом 4.
Если CHOST не изменился, перейдите к шагу 13 (обновление окружения).
11. Ещё раз проверьте с помощью binutils-config и gcc-config правильность установленных версий binutils и gcc.
12. Проверьте /etc/env.d, /etc/env.d/binutils и /etc/env.d/gcc на наличие файлов, которые обратились к значению *OLD* CHOST и удалите их.
Примеры того, как это сделать, можно найти в аналогичной процедуре в [6].
13. Запустите:
env-update && source /etc/profile
14. Перезапустите libtool:
emerge --ask --oneshot libtool
15. В целях безопасности удалите содержимое кэша двоичных пакетов по адресу ${PKGDIR} ещё раз:
rm -r /var/cache/binpkgs/*
16. Перестроить мир:
emerge --ask --emptytree @world
[1] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_profile_transition
[2] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_profile_timeline
[3] https://www.gentoo.org/support/news-items/2019-06-05-amd64-17-1-profiles-are-now-stable.html
[4] https://www.gentoo.org/support/news-items/2022-12-01-systemd-usrmerge.html
[5] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_update_table
[6] https://wiki.gentoo.org/wiki/Changing_the_CHOST_variable#Verifying_things_work
Выяснение используемого профиля:
eselect profile list
Available profile symlink targets:
...
[23] default/linux/amd64/23.0/desktop (stable)
[24] default/linux/amd64/23.0/desktop/systemd (stable)
[25] default/linux/amd64/23.0/desktop/gnome (stable)
[26] default/linux/amd64/23.0/desktop/gnome/systemd (stable)
[27] default/linux/amd64/23.0/desktop/plasma (stable)
[28] default/linux/amd64/23.0/desktop/plasma/systemd (stable)
...
[48] default/linux/amd64/23.0/split-usr/desktop/plasma (stable)
...
Изменяем профили, например для Plasma:
eselect profile set 27
С декабря 2023 года предлагается официальный хост бинарных пакетов (сокращённо "binhost") для получения и установки бинарных пакетов.
Добавление хоста бинарных пакетов позволяет Portage устанавливать скомпилированные пакеты с криптографической подписью. Во многих случаях добавление хоста бинарных пакетов значительно сокращает среднее время установки пакета и даёт большие преимущества при запуске Gentoo на старых, медленных или маломощных системах.
Конфигурация репозитория для binhost находится в каталоге Portage /etc/portage/binrepos.conf/, который функционирует аналогично конфигурации, упомянутой в разделе репозитория Gentoo ebuild.
При определении двоичного хоста следует учитывать два важных аспекта:
Целевые значения архитектуры и профиля в значении sync-uri имеют значение и должны соответствовать соответствующей архитектуре компьютера (в данном случае amd64) и профилю системы, выбранному в разделе "Выбор правильного профиля".
Файлы в каталоге /etc/portage/binrepos.conf сообщают Portage, где найти бинарные пакеты. Новые файлы Stage3 уже поставляются с подходящей конфигурацией binrepos.conf; в существующих установках его необходимо будет добавить.
Настоятельно рекомендуется использовать локальное зеркало Gentoo , чтобы снизить нагрузку на сервер и ускорить загрузку.
Пример зеркала в Великобритании, amd64
nano /etc/portage/binrepos.conf/gentoobinhost.conf
[binhost]
priority = 9999
sync-uri = https://mirror.bytemark.co.uk/gentoo/releases/amd64/binpackages/17.1/x86-64/
По умолчанию Portage скомпилирует пакеты из исходного кода. Ему можно поручить использовать бинарные пакеты следующими способами:
Опцию --getbinpkg можно передать при вызове команды Ergo. Этот метод установки двоичного пакета полезен для установки только определённого двоичного пакета.
Изменение системных настроек по умолчанию с помощью переменной FEATURES Portage, которая доступна в файле /etc/portage/make.conf. Применение этого изменения конфигурации приведёт к тому, что Portage запросит у хоста двоичных пакетов запрошенные пакеты и вернётся к локальной компиляции, если результаты не будут найдены.
Например, чтобы Portage всегда устанавливал доступные бинарные пакеты, в файле /etc/portage/make.conf настраиваем Portage на использование бинарных пакетов по умолчанию, добавляем getbinpkg к списку значений переменной FEATURES
FEATURES="${FEATURES} getbinpkg"
# Требовать подписи
FEATURES="${FEATURES} binpkg-request-signature"
Раньше /etc/portage/gnupg мог использоваться для старых методов проверки репозитория Gentoo. Если он существует, getuto не переопределит его, но правильные настройки могут отсутствовать. Если возникли проблемы, удалите старый каталог, а затем снова запустите getuto:
mv /etc/portage/gnupg /etc/portage/gnupg.bak ; getuto
Ниже приведены некоторые полезные настройки, которые можно применить с помощью EMERGE_DEFAULT_OPTS в make.conf или в командной строке emerge, для улучшения работы с двоичными пакетами Gentoo:
--getbinpkg (-g) автоматически загрузит и будет использовать двоичный пакет, когда подходящий будет доступен на серверах. Если подходящий двоичный пакет не найден, пакет будет скомпилирован из исходного кода, как обычно.
Использование --usepkgonly (-K) сообщит Portage использовать только бинарные пакеты и завершить работу, если подходящий пакет не найден локально или (с -g) для загрузки.
--with-bdeps=y для этого параметра можно установить значение y(es) или n(o) и контролировать, будут ли загружаться и/или устанавливаться зависимости сборки пакетов. Для установки двоичного пакета по умолчанию установлено значение "нет". Для установки на основе исходного кода необходимы зависимости сборки, которые соответственно также устанавливаются.
--binpkg-respect-use=y не устанавливайте --binpkg-respect-use=n легкомысленно, в EMERGE_DEFAULT_OPTS или где-либо ещё. Это сломает систему.
Если установлено значение y(es) (по умолчанию), Portage будет принимать двоичные пакеты только в том случае, если флаги использования соответствуют точным требованиям, и в противном случае компилировать пакет из исходного кода. Если установлено значение n(o), различия между конфигурацией пользователя и конфигурацией, используемой для создания двоичного пакета, игнорируются, и двоичный пакет все равно устанавливается.
Чтобы установить один пакет с помощью binhost, используем команду ниже:
emerge --ask --verbose --getbinpkg app-editors/vim
или сокращённо:
emerge -avg app-editors/vim
Чтобы выполнить полное обновление системы с помощью binhost, используем:
emerge --ask --verbose --update --deep --changed-use --getbinpkg @world
или сокращённо:
emerge -avuDUg @world
Если на binhost доступен двоичный пакет, но Portage его не использует, это вполне может быть из-за несоответствия между USE-флагами, которые были запрошены для установки пакета, и USE-флагами, которые были применены для сборки двоичного пакета.
USE-флаги, которые использовались для сборки доступного двоичного пакета, можно просмотреть с помощью следующей команды:
emerge --pretend --usepkgonly --binpkg-respect-use=n <package-X>
Открытие файла /etc/portag/make.conf
nano /etc/portage/make.conf
USE="-handbook -telemetry acl alsa berkdb cdr crypt cups dbus dvd elogind ipv6 nls policykit pulseaudio sasl ssl syslog tcpd udev udisks unicode X"
VIDEO_CARDS="intel"
INPUT_DEVICES="evdev synaptics"
CFLAGS="-march=x86-64 -O2 -pipe -mtune=generic"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j5"
L10N="ru en en-AU en-CA en-GB en-US en-ZA"
GRUB_PLATFORMS="efi-64" для ОС без efi GRUB_PLATFORMS="pc"
CPU_FLAGS_X86="aes mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 ssse3"
Телеметрия - это функция, которая позволяет собирать данные. Она используется для сбора показателей производительности и другой информации о том, как Firefox работает в реальных условиях, например, событий обновления или продолжительности сеансов. Gentoo позволяет обойти телеметрию Firefox используя флаг -telemetry.
Тот же флаг используется для kde-apps/dolphin и kde-plasma/plasma-workspace.
Для включения правильных флагов CPU_FLAGS_X86 используем Python
скрипт, который генерирует правильное значение с /proc/cpuinfo
emerge app-portage/cpuid2cpuflags
cpuid2cpuflags
emerge -C app-portage/cpuid2cpuflags
Для оптимизации GCC необходимо подобрать разумные флаги
CFLAGS и CXXFLAGS.
Самым первым и наиболее важным параметром является -march. Он сообщает компилятору, какой код генерировать для архитектуры процессора; он сообщает GCC, что тот должен генерировать код для определённого типа CPU.
-O2 или более низким уровнем оптимизации код будет (вероятнее всего) использовать инструкции, но с более короткими регистрами. Чтобы полностью использовать преимущества регистров, следует использовать -ftree-vectorize, -O3 или -Ofast.
Например для поддержки всех процессоров x86-64: CFLAGS="-march=x86-64 -O2 -pipe -mtune=generic".
Определяем модель процессора:
grep -m1 -A3 "vendor_id" /proc/cpuinfo
Чтобы узнать необходимый CFLAGS, сопоставляем CPU с одним, из указанных на странице.
Значение MAKEOPTS устанавливается в зависимости от числа процессоров +1.
Обновление системного набора @world не является обязательным и вряд ли приведёт к функциональным изменениям, если не будет выполнено одно или несколько из следующих дополнительных шагов:
Был выбран целевой профиль, отличный от промежуточного файла.
Для установленных пакетов установлены дополнительные USE-флаги.
emerge --ask --update --deep --newuse @world
Установка часового пояса:
ls /usr/share/zoneinfo
echo "Europe/Moscow" > /etc/timezone
Переконфигурируем timezone-data:
emerge --config sys-libs/timezone-data
При использовании systemd создаётся символическая ссылка:
ln -sf ../usr/share/zoneinfo/Europe/Moscow /etc/localtime
Прекрасный сайт. Давно такого не видел, очень интересный подход к дизайну. Я в восторге от прочитанного материала, сейчас устанавливаю Gentoo, дай бог здоровья автору. АМИНЬ!
Николай: Не стоит благодарностей. Будут вопросы - обращайтесь. Чем смогу, помогу.
Ээээ а че с дизайном?....
Николай: Всё тоже!...
Клиент 132: Ну то есть не перебор?
Как будто сервак блеванул.
Николай: Боюсь, что нет!
Клиент 132: Ну оооок)
Николай: Так и есть!
Мне понравилось Ваше выражение: "Как будто сервак блеванул."
Пришлось немного изменить дизайн! Удачи.
Николай: Люди тратили уйму своего времени и труда, чтобы создать этот софт и дарят его Вам. Найдите, пожалуйста, немного времени, чтобы прочитать документацию и научиться это использовать!