Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.
Отправить на почту
Пришла пора апгрейда одного из серверов.
Ему на замену пришел свеженький IBM x3250 M4 (P/N 258372G) c контроллером ServeRAID BR10il (LSISAS 1064E B3, P/N 49Y4737).
На болванку была нарезана FreeBSD 8.3-RELEASE-amd64, болванка вставлена в DVD привод, пошел процесс загрузки системы и… облом – еще до появления меню с опциями ловим какой-то kernel panic, информацию о причинах которого не успеваем увидеть на мониторе из-за мгновенного ухода сервера в ребут.
Загрузка без ACPI помогла узреть причину паники:
NMI ISA b8, EISA ff
RAM parity error, likely hardware failure
Ну, думаем, битая память приехала. Удалили планку с дополнительными 4Гб. Результат при загрузке FreeBSD не изменился. Поменяли местами планки памяти – эффект нулевой.
Попробовали загрузиться с установочных дисков с другими версиями FreeBSD (7.3, 8.2, 9.0 amd64/i386) – результат был неизменным: kernel panic.
Решили убрать RAID-контроллер – без него загрузка с любого дистрибутива FreeBSD проходила абсолютно нормально. «Узкое место» было найдено. Для того, чтобы определить «живость» контроллера решили попробовать поставить другую систему – и, о чудо, CentOS расчудесно встал с первого раза. Параллельно был найден топик на форуме FreeBSD с симптомами, на 100% совпадающими с нашим случаем. Решили попробовать загрузится с уже установленной системы с ядром, включающим в себя минимальное кол-во устройств и опций. Засада была в том, что жесткие диски были SAS, а у нас не было под рукой ни одной машинки с SAS контроллером.
Выходом стала установка FreeBSD на USB флешку. После установки было собрано ядро со следующим конфигом:
cpu HAMMER
device acpi
device ata
device atadisk
device atapicd
device atkbd
device atkbdc
device bpf
device cd
device ch
device cpufreq
device da
device ehci
device em
device ether
device firmware
device gif
device kbdmux
device loop
device md
device miibus
device mpt
device ohci
device pass
device pci
device psm
device pty
device random
device sa
device sc
device scbus
device ses
device splash
device tun
device uart
device uhci
device uhid
device ukbd
device ulpt
device umass
device usb
device vga
device vlan
ident MINI
makeoptions DEBUG=-g
options ATA_STATIC_ID
options AUDIT
options CD9660
options COMPAT_43TTY
options COMPAT_FREEBSD32
options COMPAT_FREEBSD4
options COMPAT_FREEBSD5
options COMPAT_FREEBSD6
options COMPAT_FREEBSD7
options FFS
options GEOM_LABEL
options GEOM_PART_GPT
options HWPMC_HOOKS
options INCLUDE_CONFIG_FILE
options INET
options KBD_INSTALL_CDEV
options KDB
options KDB_TRACE
options KTRACE
options MAC
options MD_ROOT
options MSDOSFS
options NFSCLIENT
options NFSLOCKD
options NFSSERVER
options NFS_ROOT
options P1003_1B_SEMAPHORES
options PREEMPTION
options PRINTF_BUFR_SIZE=128
options PROCFS
options PSEUDOFS
options SCHED_ULE
options SCSI_DELAY=5000
options SMP
options SOFTUPDATES
options STACK
options SYSVMSG
options SYSVSEM
options SYSVSHM
options UFS_ACL
options UFS_DIRHASH
options UFS_GJOURNAL
options USB_DEBUG
options _KPOSIX_PRIORITY_SCHEDULING
options IPDIVERT
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPSTEALTH
И FreeBSD смогла загрузиться с этим ядром без вопросов. Из двух дисков был организован (в биосе) RAID-1 для установки системы, а два оставшихся подключены as is:
mini# mptutil show config
mpt0 Configuration: 1 volumes, 4 drives
volume 0 (465G) RAID-1 OPTIMAL spans:
drive 1 (465G) ONLINE <IBM-ESXS ST9500620SS BD26> SAS
drive 0 (465G) ONLINE <IBM-ESXS ST9500620SS BD26> SAS
spare pools: 0
drive da2 (465G) ONLINE <IBM-ESXS ST9500620SS BD26> SCSI-6
drive da3 (465G) ONLINE <IBM-ESXS ST9500620SS BD26> SCSI-6
Для установки FreeBSD сначала нужно понять, на какой именно диск ее следует устанавливать. В этом вопросе нам поможет camcontrol:
#camcontrol devlist
<Multiple Card Reader 1.00> at scbus2 target 0 lun 0 (da0,pass0)
<LSILOGIC Logical Volume 3000> at scbus0 target 6 lun 0 (pass1,da1)
<IBM-ESXS ST9500620SS BD26> at scbus0 target 8 lun 0 (pass2,da2)
<IBM-ESXS ST9500620SS BD26> at scbus0 target 9 lun 0 (pass3,da3)
Итак, устанавливать будем на da1. Поехали:
Создаем разметку для схемы MBR:
mini# gpart create -s mbr da1
da1 created
Создадим партицию с типом freebsd:
mini# gpart add -t freebsd da1
da1s1 added
На созданной партиции создадим дополнительную разметку для BSD схемы:
mini# gpart create -s bsd da1s1
da1s1 created
Создадим партицию для /
mini# gpart add -s 1G -t freebsd-ufs da1s1
da1s1a added
Создадим партицию для свопа:
mini# gpart add -s 8G -t freebsd-swap da1s1
da1s1b added
Создадим остальные партиции:
mini# gpart add -s 10G -t freebsd-ufs da1s1
da1s1d added
mini# gpart add -s 10G -t freebsd-ufs da1s1
da1s1e added
mini# gpart add -s 20G -t freebsd-ufs da1s1
da1s1f added
Запишем загрузчик
mini# gpart bootcode -b /boot/mbr da1
Сделаем активным первый раздел:
mini# gpart set -a active -i 1 da1
Посмотрим на результат нашей работы:
Mini# gpart show da0
=> 63 976562113 da0 MBR (465G)
63 976559157 1 freebsd [active] (465G)
976559220 2956 — free — (1.5M)
mini# gpart show da1s1
=> 0 976559157 da1s1 BSD (465G)
0 2097152 1 freebsd-ufs (1.0G)
2097152 16777216 2 freebsd-swap (8.0G)
18874368 20971520 4 freebsd-ufs (10G)
39845888 20971520 5 freebsd-ufs (10G)
60817408 41943040 6 freebsd-ufs (20G)
Отформатируем наши партиции:
mini# newfs /dev/da1s1a
mini# newfs -U /dev/da1s1d
mini# newfs -U /dev/da1s1e
mini# newfs -U /dev/da1s1f
Смонитруем da1s1a (наш будущий /) в /mnt
mini# mount /dev/da1s1a /mnt
Создадим директории:
mini# mkdir /mnt/usr
mini# mkdir /mnt/var
mini# mkdir /mnt/tmp
Смонтируем остальные разделы в соответствующие вновь созданные директории:
mini# mount /dev/da1s1d /mnt/var
mini# mount /dev/da1s1e /mnt/tmp
mini# mount /dev/da1s1f /mnt/usr
В нашем случае установка FreeBSD будет производиться по сети с удаленного ftp-сервера, так что мы предварительно настроили сетевую карту для обеспечения серверу доступа в интернет.
Далее запускаем sysinstall и переходим в пункт Custom.
В Options изменяем значение Install Root на /mnt
В Distributions выбираем Developer
В Media я выбрал установку по сети с ftp-сервера: FTP Passive (ftp2.ru.freebsd.org)
Commit’им.
После окончания установки, выходим из sysinstall и изменим корневой каталог:
mini# chroot /mnt/ /bin/sh
Перейдем в директорию с конфигом ядра:
mini# cd /sys/amd64/conf
Создадим ядро (в нашем случае мы ему дали название MINI), соберем и установим наше минималистичное ядро:
mini# config MINI
mini# cd ../compile/MINI
mini# make cleandepend && make depend
mini# make -j8
mini# make install
Создадим файл /etc/fstab, с содержанием, соответствующим выполненным нами ранее действиям:
# Device Mountpoint FStype Options Dump Pass#
/dev/da0s1b none swap sw 0 0
/dev/da0s1a / ufs rw 1 1
/dev/da0s1d /var ufs rw 2 2
/dev/da0s1e /tmp ufs rw 2 2
/dev/da0s1f /usr ufs rw 2 2
Меняем рутовый пароль:
mini# passwd root
Перегружаемся в нашу свежеустановленную систему:
mini# shutdown –r now
Вот такая нелегкая установка системы вышла.
Дополнительная информация:
1. man 8 gpart
З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Пожалуйста, уважайте чужой труд.
Автор: Панфилов Алексей (lehis (at) subnets.ru)