ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Пришла пора апгрейда одного из серверов.

Ему на замену пришел свеженький 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)

Похожие статьи:

    Не найдено

Прочитано: 12 590 раз(а)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (Еще не голосовали)
Загрузка...
Отправить на почту Отправить на почту

Добавить комментарий

Вам следует авторизоваться для размещения комментария.