Хотя rename
- очень мощный инструмент, я обычно предпочитаю простоту утилиты mmv
(множественное перемещение) :
mmv '????????_*' '#1#2#3#4-#5#6-#7#8_#9'
?
в шаблоне поиска стоит для одного символа *
для произвольно длинной последовательности символов. В шаблоне замены каждый #
обозначает соответствующий ?
или *
в шаблоне поиска. В дополнение к ?
и *
, mmv
поддерживает диапазоны символов в скобках (например, [a-f]
).
( mmv
проверит любые конфликты при переименовании перед началом работы, поэтому вы не рискуете потерять файлы при перезаписи.)
Похоже, при монтировании используются только ext3 и ext2, но не ext4. В вашем ядре есть ext4, верно? (Он указан в / proc / filesystems
.) Может быть, у вас есть / dev / sda2
, указанный в / etc / fstab
как ext3 ?
Вы форматировали его в ext4 после создания раздела?
mkfs.ext4 /dev/sda2
Затем попробуйте выполнить монтирование или монтирование с помощью ext4, явно указав тип файловой системыmount -t ext4 /dev/sda2 /mnt/sda2
Сообщение об ошибке исходит из этой строки в<Linux kernel source code>/fs/ext4/super.c
:
if (ext4_has_unknown_ext4_ro_compat_features(sb)) {
ext4_msg(sb, KERN_ERR, "couldn't mount RDWR because of "
"unsupported optional features (%x)",
(le32_to_cpu(EXT4_SB(sb)->s_es->s_feature_ro_compat) &
~EXT4_FEATURE_RO_COMPAT_SUPP));
Заполнитель для числа в сообщении об ошибке — %x
, поэтому число 400 в фактическом сообщении об ошибке — это шестнадцатеричное число 0x400. И это одно, если признаки идентифицируются константами EXT4_FEATURE_RO_COMPAT_
.
Определения этих констант можно найти в <Linux kernel source code>/fs/ext4/ext4.h
:
#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM 0x0400
Функция dir_nlink
, упомянутая sourcejedi, имеет адрес 0x20, а не 0x400:
#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020
Таким образом, MR3020 не смог смонтировать файловую систему в режиме чтения/записи, поскольку его операционная система не может обрабатывать контрольные суммы метаданных ext4. Поэтому вам нужно отключить эту функцию, используя систему Linux, которую вы использовали для создания USB-накопителя. Переместите USB-накопитель обратно в эту систему (, не монтируйте файловую систему ext4 )и запустите:
tune2fs -O^metadata_csum /dev/sdX2
(замените X любым фактическим идентификатором USB-накопителя в вашей системе Linux.)
После успешного выполнения этой команды функция metadata_csum
будет отключена в файловой системе ext4 USB-накопителя, и теперь MR3020 сможет ее использовать.
У меня тоже есть эта проблема на TL -MR3020 v3, и я решил ее, создав раздел ext3 вместо ext4, и успешно смонтировал диск.
Это шаги, которые я предпринял (, следуя инструкциям на веб-сайте OpenWRT, просто заменив ext4 на ext3):
root@OpenWrt:~# mkfs.ext3 /dev/sda1
mke2fs 1.44.5 (15-Dec-2018)
/dev/sda1 contains a ext4 file system
created on Sun Sep 27 06:13:56 2020
Proceed anyway? (y,N) y
Creating filesystem with 511744 4k blocks and 128000 inodes
Filesystem UUID: 2bbb533d-925f-43fb-946a-4190fe612186
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
root@OpenWrt:~# block detect | uci import fstab
root@OpenWrt:~# uci set fstab.@mount[0].enabled='1' && uci set fstab.@global[0].anon_mount='1' && uci commit fstab
root@OpenWrt:~# /etc/init.d/fstab boot
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 2.5M 2.5M 0 100% /rom
tmpfs 29.3M 1.1M 28.2M 4% /tmp
/dev/mtdblock4 3.8M 1.2M 2.5M 33% /overlay
overlayfs:/overlay 3.8M 1.2M 2.5M 33% /
tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda1 1.9G 3.0M 1.8G 0% /mnt/sda1
root@OpenWrt:~#
Я знаю, что это старый вопрос, но, возможно, он кому-то поможет