Монтирование диска с файловой системой ext4 во FreeBSD
Когда я переходил с GNU/Linux на FreeBSD у меня было несколько дисков на один из них я поставил FreeBSD, а GNU/Linux со всеми данными не стал убивать. После того как я установил и настроил FreeBSD мне нужно было перенести все данные на установленную систему. Я выключил свой компьютер подключил диск с GNU/Linux загрузился с FreeBSD и в терминале выполнил команду:
# mount /dev/da0s1 /mnt
на что я увидел вот такое сообщение об ошибке
mount: /dev/da0s1: Invalid argument
Я решил попробовать так:
# mount -t ext4 /dev/da0s1 /mnt
и тут ошибка
mount: /dev/da0s1: Operation not supported by device
Но данные нужно было как-то извлечь. Потом я посмотрел на свои диски этими командами:
# dmesg | grep da0
и
# gpart show da0
Диски определились нормально
Следующий мой шаг это разрешение обычному пользователю монтирование устройств.
Я отредактировал файл /etc/devfs.rules чтобы пользователи группы operator имели права на чтение и запись, вот так:
# ee /etc/devfs.rules
[localrules=5] add path 'da*' mode 0660 group operator
Теперь отредактируйте /etc/rc.conf чтобы разрешить devfs.rules набор правил:
# ee /etc/rc.conf
devfs_system_ruleset="localrules"
Разрешение обычному пользователю монтированию файловой системы.
Отредактируйте файл /etc/sysctl.conf так:
# ee /etc/sysctl.conf
vfs.usermount=1
Выполните:
# sysctl vfs.usermount=1 vfs.usermount: 0 -> 1
Создайте каталог например linux как это сделал я или любой другой:
# mkdir /mnt/linux
И указываем владельца и группу
# chown user:user /mnt/linux
Где user ваш пользователь и его группа
После я попытался монтировать диск и снова ошибка
$ mount -t ext4 /dev/da0s1 /mnt/linux
mount: /dev/da0s1: Invalid argument
Но теперь ошибка не операция запрещена,а недоступный аргумент это означает что FreeBSD не поддерживает файловую систему ext4.
Нам нужно установить порт fusefs-ext4fuse
# cd /usr/ports/sysutils/fusefs-ext4fuse
# make install clean
Когда fusefs-ext4fuse установился я попробовал снова монтировать диск
$ ext4fuse /dev/da0s1 /mnt/linux
fuse: failed to open fuse device: No such file or directory
и снова беда
Погуглив я нашел то что в ядре есть модуль fuse, подгружаем модуль fuse.ko
# kldload fuse.ko
Редактируем /boot/loader.conf чтобы загружать модуль при каждой загрузки
# ee /boot/loader.conf
fuse_load="YES"
После попробовал смонтировать диск:
$ ext4fuse /dev/da0s1 /mnt/linux
все прошло без ошибок и я решил посмотреть содержание каталога так
$ ls /mnt/linux
и увидел что все работает Ураааа!