FreeBSD Mounting drive with ext4 file system

Монтирование диска с файловой системой 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

 

и увидел что все работает Ураааа!