Монтування диска з файловою системою 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: Немає такого файла або 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
і побачив, що все працює Ураааа!