Я сделал Кв. - получают обновление и затем обновляют для контакта с heartbleed уязвимостью. Я перезагрузил после обновления, не проверяя, что все было хорошо. Теперь у меня нет большой удачи. Это загружает и говорит, что не может смонтировать файловую систему '-' и помещение меня в оболочке BusyBox.
Хорошие новости - то, что, если я загружаюсь прочь установки LiveUSB, я могу следовать инструкциям и сделать импорт шпульки моего rpool. Это работает. Однако я попробовал основы в ZFS Ubuntu FAQ, и у меня все еще нет большой удачи.
Какие шаги я должен сделать от LiveCD для получения системной переустановки обходящегося?
Я получил вещи, работающие, используя превосходное практическое руководство ZFS (Это, как к теперь заменяется, и более новым Практическим руководствам рекомендуют сопровождаться),
Я загрузил Ubuntu 12.04 живой usb и использовал все команды от шага 1 ПРАКТИЧЕСКОГО РУКОВОДСТВА.
Шаг 1: подготовьте среду установки
1.1 Запустите Ubuntu LiveCD и откройте терминал в рабочем столе.
1.2 Введите эти команды при терминальной подсказке:
$ sudo -i # apt-add-repository --yes ppa:zfs-native/stable # apt-get update # apt-get install debootstrap spl-dkms zfs-dkms ubuntu-zfs
1.3 Проверьте, что файловая система ZFS установлена и доступна:
# modprobe zfs # dmesg | grep ZFS: ZFS: Loaded module v0.6.3-2~trusty, ZFS pool version 5000, ZFS filesystem version 5
Шаг 2: разбиение дисков на разделы
Это учебное руководство намеренно рекомендует разделение MBR. GPT может использоваться вместо этого, но остерегаться микропрограммных ошибок UEFI.
2.1 Выполните свой любимый диск partitioner, как
parted
илиcfdisk
, на устройстве основной памяти./dev/disk/by-id/scsi-SATA_disk1
устройство в качестве примера, используемое в этом документе.2.2 Создайте маленький основной раздел MBR по крайней мере 8 мегабайтов. 256 МБ могут быть более реалистичными, если пространство не является ограниченным.
/dev/disk/by-id/scsi-SATA_disk1-part1
раздел начальной загрузки в качестве примера, используемый в этом документе.2.3 На этом первом небольшом разделе, наборе
type=BE
и включитеbootable
флаг.2.4 Создайте большой раздел по крайней мере 4 гигабайтов.
/dev/disk/by-id/scsi-SATA_disk1-part2
системный раздел в качестве примера, используемый в этом документе.2.5 На этом втором большом разделе, наборе
type=BF
и отключитеbootable
флаг.Таблица разделов должна быть похожей на это:
# fdisk -l /dev/disk/by-id/scsi-SATA_disk1 Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sda1 * 1 1 8001 be Solaris boot /dev/sda2 2 1305 10474380 bf Solaris
Помните: Замена
scsi-SATA_disk1-part1
иscsi-SATA_disk1-part2
соответственно ниже.Подсказки: * Вы делаете это в виртуальной машине? Что-то в
/dev/disk/by-id
пропавшие без вести? Пойдите читает раздел поиска и устранения неисправностей. * Недавние выпуски GRUB предполагают что/boot/grub/grubenv
файл перезаписываем stage2 модулем. Пока GRUB не получает улучшение записи ZFS, модули GRUB должны быть установлены на отдельной файловой системе в отдельном разделе, который перезаписываем личинкой. *, Если/boot/grub
находится в файловой системе ZFS, затем GRUB не загрузится с этим сообщением:error: sparse file not allowed
. Если Вы абсолютно хотите только одну файловую систему, то удаляете вызов кrecordfail()
в каждомgrub.cfg
строка файла конфигурации меню и редактирование/etc/grub.d/10_linux
файл для внесения изменения постоянным. *, С другой стороны, если/boot/grub
находится в файловой системе ZFS, можно прокомментировать каждую строку с текстомsave_env
в файле/etc/grub.d/00_header
и выполненная личинка обновления.Шаг 3: дисковое форматирование
3.1 Отформатируйте маленький раздел начальной загрузки, созданный Шагом 2.2 как файловая система, которая имеет поддержку stage1 GRUB как это:
# mke2fs -m 0 -L /boot/grub -j /dev/disk/by-id/scsi-SATA_disk1-part1
3.2 Создайте корневой пул на большем разделе:
# zpool create -o ashift=9 rpool /dev/disk/by-id/scsi-SATA_disk1-part2
Всегда используйте длинное/dev/disk/by-id /* псевдонимы с ZFS. Используя/dev/sd* узлы устройства непосредственно могут вызвать спорадические отказы импорта, особенно в системах, которые имеют больше чем один пул хранения данных.
Предупреждение: grub2-1.99 пакет, в настоящее время публикуемый в PPA для Точного, надежно не обрабатывает 4k размер блока, который является
ashift=12
.Подсказки: *
# ls -la /dev/disk/by-id
перечислит псевдонимы. * Корневой пул может быть зеркалом. Например,zpool create -o ashift=9 rpool mirror /dev/disk/by-id/scsi-SATA_disk1-part2 /dev/disk/by-id/scsi-SATA_disk2-part2
. Помните, что версия и ashift имеют значение для любого пула, что GRUB должен читать, и что эти вещи трудно изменить после создания пула. * При использовании зеркала с отдельным разделом начальной загрузки, как описано выше не забывайте редактировать grub.cfg файл на втором разделе HD так, чтобы "корень =" раздел относился к тому разделу на втором HD также; иначе при потере первого диска Вы не сможете загрузиться от второго, потому что ядро будет продолжать пытаться смонтировать корневой раздел от первого диска. * Имя пула произвольно. В системах, которые могут автоматически установить на ZFS, корневой пул называют "rpool" по умолчанию. Обратите внимание, что системное восстановление легче при выборе уникального имени вместо "rpool". Что-либо кроме "rpool" или "корпуса", как имя хоста, было бы хорошим выбором. *, Если Вы хотите создать зеркало, но только иметь один диск в наличии теперь можно создать зеркало с помощью редкого файла в качестве второго участника затем сразу офлайн оно так, зеркало находится в ухудшенном режиме. Позже можно добавить другой диск к шпульке, и ZFS будет автоматически синхронизировать их. Редкий файл не поднимет больше, чем некоторые КБ, таким образом, это сможет быть больше, чем Ваша рабочая система. Просто удостоверьтесь в офлайн редкий файл прежде, чем записать в пул.3.2.1 Создайте редкий файл, по крайней мере, столь же большой как больший раздел на Вашем жестком диске:
# truncate -s 11g /tmp/sparsefile
3.2.2 Вместо команды в разделе 3,2 использования это для создания зеркала:
# zpool create -o ashift=9 rpool mirror /dev/disk/by-id/scsi-SATA_disk1-part2 /tmp/sparsefile
3.2.3 Офлайн редкий файл. Можно удалить его после этого, если Вы хотите.
# zpool offline rpool /tmp/sparsefile
3.2.4 Проверьте, что пул был создан и теперь ухудшается.
# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 10.5G 188K 10.5G 0% 1.00x DEGRADED -
3.3 Создайте "КОРНЕВУЮ" файловую систему в корневом пуле:
# zfs create rpool/ROOT
3.4 Создайте порожденную файловую систему для системы Ubuntu:
# zfs create rpool/ROOT/ubuntu-1
В системах Соляриса клонирована корневая файловая система, и суффикс увеличен для главных системных изменений через
pkg image-update
илиbeadm
. Схожая функциональность для APT возможна, но в настоящее время нереализовываемая.3.5 Демонтируйте все файловые системы ZFS.
# zfs umount -a
3.6 Установите
mountpoint
свойство в корневой файловой системе:# zfs set mountpoint=/ rpool/ROOT/ubuntu-1
3.7 Установите
bootfs
свойство на корневом пуле.# zpool set bootfs=rpool/ROOT/ubuntu-1 rpool
Загрузчик использует эти два свойства, чтобы найти и запустить операционную систему. Эти имена свойства не произвольны.
Подсказка: помещение
rpool=MyPool
илиbootfs=MyPool/ROOT/system-1
на ядре командная строка переопределяет свойства ZFS.3.9 Экспортируйте пул:
# zpool export rpool
Не пропускайте этот шаг. Система помещается в непоследовательное состояние, если эта команда перестала работать или если Вы перезагружаете в этой точке.
(Я имею, включают Шаг 2 и Шаг 3 для полноты, но я пропустил их, так как все было уже разделено и отформатировано.)
Я затем работал zpool list
проверить, что никакие пулы не были загружены. (Ни один не был), я затем сделал только Шаг 4.1
zpool import -d /dev/disk/by-id -R /mnt rpool
Полный шаг 4 ниже
Шаг 4: установка системы
Помните: Замените "rpool" имя, выбранное на Шаге 3.2.
4.1 Импортируйте пул:
# zpool import -d /dev/disk/by-id -R /mnt rpool
Если это перестало работать с, "не может импортировать 'rpool': никакой такой доступный пул", можно попробовать, не импортирует пул без имени устройства, например:
# zpool import -R /mnt rpool
4.2 Смонтируйте маленькую файловую систему начальной загрузки для GRUB, который был создан на шаге 3.1:
# mkdir -p /mnt/boot/grub # mount /dev/disk/by-id/scsi-SATA_disk1-part1 /mnt/boot/grub
4.4 Установите минимальную систему:
# debootstrap trusty /mnt
debootstrap
управляйте оставляет новую систему в ненастроенном состоянии. На Шаге 5 мы только сделаем минимальное количество конфигурации, необходимой для создания новой системы выполнимой.
Я затем проверил ls -al /mnt
для проверки это смотрело хорошо.
Я затем пропустил к Шагу 5.4. Пришло время к chroot
в импортированный rpool.
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
# chroot /mnt /bin/bash --login
На данном этапе мы находимся теперь в надлежащем состоянии для фиксации системы.
Полный шаг 5 был
Шаг 5: конфигурация системы
5.1 Скопируйте эти файлы от среды LiveCD до новой системы:
# cp /etc/hostname /mnt/etc/ # cp /etc/hosts /mnt/etc/
5.2
/mnt/etc/fstab
файл должен быть пустым за исключением комментария. Добавьте эту строку к/mnt/etc/fstab
файл:/dev/disk/by-id/scsi-SATA_disk1-part1 /boot/grub auto defaults 0 1
Обычный настольный установщик Ubuntu может добавить
dev
,proc
,sys
, илиtmp
строки к/etc/fstab
файл, но такие записи избыточен в системе, которая имеет a/lib/init/fstab
файл. Добавьте их теперь, если Вы хотите их.5.3 Отредактируйте
/mnt/etc/network/interfaces
файл так, чтобы это содержало что-то вроде этого:# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
Настройте этот файл, если новая система не является клиентом DHCP на LAN.
5.4 Сделайте виртуальные файловые системы в среде LiveCD видимыми к новой системе и
chroot
в него:# mount --bind /dev /mnt/dev # mount --bind /proc /mnt/proc # mount --bind /sys /mnt/sys # chroot /mnt /bin/bash --login
5.5 Установите поддержку PPA в chroot среде как это:
# locale-gen en_US.UTF-8 # apt-get update # apt-get install ubuntu-minimal software-properties-common
Даже если Вы предпочитаете неанглийский системный язык, всегда удостоверяетесь, что en_US.UTF-8 доступен. Минимальный человечностью пакет требуется, чтобы использовать ZoL, как упаковано в PPA.
5.6 Установите ZFS в chroot среде для новой системы:
# apt-add-repository --yes ppa:zfs-native/stable # apt-add-repository --yes ppa:zfs-native/grub # apt-get update # apt-get install --no-install-recommends linux-image-generic linux-headers-generic # apt-get install ubuntu-zfs # apt-get install grub2-common grub-pc # apt-get install zfs-initramfs # apt-get dist-upgrade
Предупреждение: Это - второй раз, что необходимо ожидать SPL и модулей ZFS для компиляции. Не пытайтесь пропустить этот шаг путем копирования чего-либо с серверной среды в chroot среду.
Примечание: Это должно установить пакет ядра и его заголовки, исправленный mountall и dkms пакеты. Перепроверка, что Вы получаете эти пакеты от PPA, если Вы отклоняетесь от этих инструкций всегда.
Выбрать
/dev/disk/by-id/scsi-SATA_disk1
если запрошено устанавливать загрузчик MBR.Проигнорируйте предупреждения, которые вызываются chroot средой как:
Can not write log, openpty() failed (/dev/pts not mounted?)
df: Warning: cannot read table of mounted file systems
mtab is not present at /etc/mtab.
5.7 Установите пароль root в новой системе:
# корень passwd
Подсказка: Если Вы хотите настольный человечностью пакет, то устанавливаете его после первой перезагрузки. Если Вы установите его теперь, то это запустит несколько процессов, которые должны быть вручную остановлены, прежде демонтируют.
Шаг 6: установка GRUB
Помните: Весь Шаг 6 зависит от Шага 5.4 и должен произойти в chroot среде.
6.1 Проверьте, что корневая файловая система ZFS распознана GRUB:
# grub-probe / zfs
И что модули ZFS для GRUB установлены:
# ls /boot/grub/zfs* /boot/grub/zfs.mod /boot/grub/zfsinfo.mod
Обратите внимание, что после Ubuntu 13, они находятся теперь в/boot/grub/i386/pc/zfs*
# ls /boot/grub/i386-pc/zfs* /boot/grub/i386-pc/zfs.mod /boot/grub/i386-pc/zfsinfo.mod
Иначе проверьте примечания поиска и устранения неисправностей на GRUB ниже.
6.2 Обновите initrd файлы:
# update-initramfs -c -k all update-initramfs: Generating /boot/initrd.img-3.2.0-40-generic
6.3 Обновите файл загрузочной конфигурации:
# update-grub Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.2.0-40-generic Found initrd image: /boot/initrd.img-3.2.0-40-generic done
Проверьте это
boot=zfs
появляется в файле загрузочной конфигурации:# grep boot=zfs /boot/grub/grub.cfg linux /ROOT/ubuntu-1/@/boot/vmlinuz-3.2.0-40-generic root=/dev/sda2 ro boot=zfs $bootfs quiet splash $vt_handoff linux /ROOT/ubuntu-1/@/boot/vmlinuz-3.2.0-40-generic root=/dev/sda2 ro single nomodeset boot=zfs $bootfs
6.4 Установите загрузчик на MBR как это:
# grub-install $(readlink -f /dev/disk/by-id/scsi-SATA_disk1) Installation finished. No error reported.
Не перезагружайте компьютер, пока Вы не получите точно то сообщение результата. Обратите внимание установку загрузчика на целом диске, не раздела.
Примечание: readlink требуется, потому что недавние выпуски GRUB не разыменовывают символьные ссылки.
Шаг 7: очистка и первая перезагрузка
7.1 Выход от
chroot
среда назад к среде LiveCD:# exit
7.2 Выполните эти команды в среде LiveCD для демонтажа всех файловых систем:
# umount /mnt/boot/grub # umount /mnt/dev # umount /mnt/proc # umount /mnt/sys # zfs umount -a # zpool export rpool
zpool export
команда должна успешно выполниться, не будучи вызванным, или новая система не запустится.7.3 Мы сделаны!
# reboot
Перед Шагом 6 я пытался делать все шаги выше без модификации. Как ожидалось система все еще не работала бы. (Взгляды здесь состояли в том, что это было простой проблемой zpool.cache.)
На другой попытке я восстановил Кв. - получают обновление и обновление. Я имел 'ага' момент и сделал:
# apt-get dist-upgrade
Когда я исправлял для heartbleed, я просто делал apt-get upgrade
. Dist-обновление даже установит пакеты, которые обычно сдерживаются (как ядра). Эта незначительная ошибка была, вероятно, что вызвало все это. Так или иначе, после dist-обновления, за которым следуют, я имел некоторый успех. Система загрузилась бы и перешла бы к сути дела, где сеть произошла, и я мог попытаться к ssh в. Однако я не мог войти в свою учетную запись.
На данном этапе моя теория состояла в том, что 'большой' пул не становился импортированным и смонтированным. Тот пул имел мой корневой каталог. Любая проблема с ним монтирование препятствовала бы тому, чтобы я вошел в систему.
Я думал, что у меня могла бы быть действительно рабочая система для устранения проблемы. Я пытался загрузиться в ядро восстановления с помощью меню 'личинки'. Когда я выбрал ядро восстановления, я никогда не получал надлежащее меню восстановления личинки или к оболочке. Система загрузила бы и загрузила бы ядро + модули, но затем это зависнет. Я затем перезагрузил и отредактировал команды загрузки личинки. Я добавил ‘1’ для вхождения в однопользовательский режим. Тот же результат, никакая оболочка. Я отредактировал команды личинки при начальной загрузке снова. Я изменился ro
-> rw
и добавление init=/bin/bash
. Я затем загрузился и вошел в оболочку. Я не могу помнить, импортировался ли ‘rpool’/монтировался в этой точке. Или rpool был смонтирован, или я смонтировал его. Я затем заметил, что мое большое объединение не было смонтировано, но я не был уверен, смонтируется ли оно на данном этапе так или иначе.
Я затем импортировал свое большое объединение. На моем 'большом' объединении у меня также есть zfs, монтируются к /var/cache
. Так как точка монтирования не была пуста, она жаловалась. Я затем убрал старое /var/cache
и повторно смонтированный. Все работали и выглядели хорошими. Однако как идиот, я поразил CTRL-D для выхода из оболочки, и ядро сразу сделало панику... (как ожидалось). Doh! У меня теперь было ожидание, что система правильно не синхронизировала к диску, и я должен буду восстановить все от последней начальной загрузки.
Я перезагрузил систему, не редактируя параметры начальной загрузки, и система была похожа на нее, работал. Я попробовал к ssh в снова …, и он работал! ничего себе! Я предполагаю, что как раз достаточно информации действительно становилось синхронизировавшим, чтобы система возобновилась.
Я перезагрузил, чтобы проверить, что система возвратится снова. Я также проверил, что был абсолютно актуален с Кв. - получают обновление. Я также проверил, что у меня был исправленный OpenSSL. Все это было хорошо. После моей последней проверки перезагрузки я сделал свой нормальный zfs назад взлеты к другой системе.
Теперь, почему это работало? Определенно была нанесенная самому себе проблема с dist-обновлением. Почему 'большой' пул не смонтировался?Не уверен. Я не восстановил zpool.cache в дисках поршня. Я подозреваю, что это была просто проблема 'большого' пула, импортируемого и смонтированного правильно.