FreeBSD: при установке на внешний жесткий диск при загрузке не находит корневую файловую систему
Установил FreeBSD 8.1 на внешний жесткий диск (обычный жесткий диск от ноутбука в китайской usb коробке). Во время загрузки загрузчик (расположен на том же диске) находит ядро, загружает его, но во время монтирования корневой файловой системы ядро выдает ошибку, что дескать устройство /dev/da0s3a не найдено.
Если немного подождать и ввести команду ? в списке устройств этот диск появится. Проблема в том, что определение USB устройств происходит с задержкой. Если после паузы ввести usb:/dev/da0s3a — система загрузится нормально. Это известная проблема, когда-нибудь будет патч, но пока придется внести небольшие изменения в ядро. Помог вот этот мануал.
Все необходимые исходники ядра должны быть установлены. Копируем образец конфигурации в новый файл. Кто знает, возможно мы захотим внести еще какие-либо изменения в конфигурацию:
Редактируем файл /usr/src/sys/kern/vfs_mount.c. Нужно добавить строку:
В функции vfs_mountroot.
Собираем ядро:
На всякий случай сохраняем директорию /boot/kernel.
Устанавливаем новое ядро:
Если немного подождать и ввести команду ? в списке устройств этот диск появится. Проблема в том, что определение USB устройств происходит с задержкой. Если после паузы ввести usb:/dev/da0s3a — система загрузится нормально. Это известная проблема, когда-нибудь будет патч, но пока придется внести небольшие изменения в ядро. Помог вот этот мануал.
Все необходимые исходники ядра должны быть установлены. Копируем образец конфигурации в новый файл. Кто знает, возможно мы захотим внести еще какие-либо изменения в конфигурацию:
cd /usr/src/sys/i386/conf
cp GENERIC MTAALAMU-KERNEL
Редактируем файл /usr/src/sys/kern/vfs_mount.c. Нужно добавить строку:
pause("usbhack", hz * 10);
В функции vfs_mountroot.
/*
* Find and mount the root filesystem
*/
void
vfs_mountroot(void)
{
char *cp, *cpt, *options, *tmpdev;
int error, i, asked = 0;
options = NULL;
pause("usbhack", hz * 10);
root_mount_prepare();
Собираем ядро:
cd /usr/src/
make buildkernel MTAALAMU-KERNEL
На всякий случай сохраняем директорию /boot/kernel.
Устанавливаем новое ядро:
make installkernel MTAALAMU-KERNEL
Комментарии (6)
RSS свернуть / развернутьMarkony
Sergei_T
yababay
Sergei_T
yababay
Sergei_T
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.