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
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.