losttup: не удается найти неиспользуемое устройство петли [закрыто]

10

Я пытаюсь создать устройство петли, и получаю ошибку, которую я не понимаю:

# losetup -f  /media/2TB/sdb2-fix-file
losetup: cannot find an unused loop device

У меня нет настройки петлевых устройств. Вывод из losetup -anull, и:

# ls -l /dev/loop*
crw-rw---- 1 root disk 10, 237 Oct  4 15:50 /dev/loop-control

Бег losetup -Dне помогает вообще.

Почему это происходит?


Ниже приведен полный straceвывод:

# strace -fs80 losetup -f  /media/2TB/sdb2-fix-file
execve("/usr/bin/losetup", ["losetup", "-f", "/media/2TB/sdb2-fix-file"], 0x7ffc6fe88c38 /* 164 vars */) = 0
brk(NULL)                               = 0x55a51e754000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=215090, ...}) = 0
mmap(NULL, 215090, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f35d682e000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib/libsmartcols.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000n\0\0\0\0\0\0@\0\0\0\0\0\0\0\210\341\2\0\0\0\0\0\0\0\0\0@\0008\0\10\0@\0\34\0\33\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=190600, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f35d682c000
mmap(NULL, 2290720, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f35d640f000
mprotect(0x7f35d643b000, 2097152, PROT_NONE) = 0
mmap(0x7f35d663b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2c000) = 0x7f35d663b000
mmap(0x7f35d663e000, 1056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f35d663e000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\20\2\0\0\0\0\0@\0\0\0\0\0\0\0\360s\37\0\0\0\0\0\0\0\0\0@\0008\0\n\0@\0G\0F\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2065840, ...}) = 0
mmap(NULL, 3893456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f35d6058000
mprotect(0x7f35d6206000, 2093056, PROT_NONE) = 0
mmap(0x7f35d6405000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ad000) = 0x7f35d6405000
mmap(0x7f35d640b000, 14544, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f35d640b000
close(3)                                = 0
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f35d6829000
arch_prctl(ARCH_SET_FS, 0x7f35d6829740) = 0
mprotect(0x7f35d6405000, 16384, PROT_READ) = 0
mprotect(0x7f35d663b000, 8192, PROT_READ) = 0
mprotect(0x55a51ccf5000, 4096, PROT_READ) = 0
mprotect(0x7f35d6863000, 4096, PROT_READ) = 0
munmap(0x7f35d682e000, 215090)          = 0
brk(NULL)                               = 0x55a51e754000
brk(0x55a51e775000)                     = 0x55a51e775000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1687072, ...}) = 0
mmap(NULL, 1687072, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f35d668d000
close(3)                                = 0
stat("/sys/block", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
uname({sysname="Linux", nodename="svelte", ...}) = 0
stat("/dev/loop-control", {st_mode=S_IFCHR|0660, st_rdev=makedev(10, 237), ...}) = 0
openat(AT_FDCWD, "/dev/loop-control", O_RDWR|O_CLOEXEC) = -1 ENODEV (No such device)
stat("/dev/loop", 0x7fffae014c60)       = -1 ENOENT (No such file or directory)
stat("/dev/loop0", 0x7fffae014c00)      = -1 ENOENT (No such file or directory)
stat("/dev/loop1", 0x7fffae014c00)      = -1 ENOENT (No such file or directory)
stat("/dev/loop2", 0x7fffae014c00)      = -1 ENOENT (No such file or directory)
stat("/dev/loop3", 0x7fffae014c00)      = -1 ENOENT (No such file or directory)
stat("/dev/loop4", 0x7fffae014c00)      = -1 ENOENT (No such file or directory)
stat("/dev/loop5", 0x7fffae014c00)      = -1 ENOENT (No such file or directory)
stat("/dev/loop6", 0x7fffae014c00)      = -1 ENOENT (No such file or directory)
stat("/dev/loop7", 0x7fffae014c00)      = -1 ENOENT (No such file or directory)
open("/dev/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=3400, ...}) = 0
getdents(3, /* 170 entries */, 32768)   = 4936
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2997, ...}) = 0
read(3, "# Locale name alias data base.\n# Copyright (C) 1996-2017 Free Software Foundatio"..., 4096) = 2997
read(3, "", 4096)                       = 0
close(3)                                = 0
open("/usr/share/locale/en_AU.utf8/LC_MESSAGES/util-linux.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_AU/LC_MESSAGES/util-linux.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/util-linux.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/util-linux.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "losetup: ", 9losetup: )                = 9
write(2, "cannot find an unused loop device", 33cannot find an unused loop device) = 33
write(2, "\n", 1
)                       = 1
close(1)                                = 0
close(2)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++
Том Хейл
источник
В случае, если это проблема XY: вы можете подключить файлы изображений и т. Д. Напрямую и mountпозаботиться о петлевом устройстве. Вам больше не нужно звонить losetup, хотя я полагаю, что он по-прежнему всплывает во многих уроках в Интернете ...
dirkt
Я пытаюсь создать наложение устройства для использования с dm-setup. Для других, интересующихся, вот в чем проблема XY .
Том Хейл,
Возможно , он нуждается в loopмодуль загружен .. # modprobe loop.
Ральф Реннквист
2
Я не согласен с закрытием этого. «не по теме, поскольку они вряд ли помогут будущим читателям» в данном случае неверно. У меня была та же проблема, и предоставленное решение помогло мне.
user31389

Ответы:

12

Модули ядра на диске были несовместимы с работающим ядром. Я обновил свое ядро ​​и еще не перезагрузился.

Бегmodprobe loop дал мне:

modprobe: FATAL: Module loop not found in directory /lib/modules/4.9.51-1-MANJARO.

После перезагрузки modprobe loopработал просто отлично.

Том Хейл
источник
Итак, проблема в том, что «модули на диске несовместимы с работающим ядром»?
17
@dirkt Спасибо, это были слова, которые я хотел :)
Том Хейл,
@dirkt Я размышлял над этим и удивляюсь, как бы я понял, что это действительно было причиной, учитывая симптомы, которые я испытывал. (Предыдущие обновления не вызывали проблем). Если у вас есть какие-либо указатели, я буду рад их услышать.
Том Хейл,
Я понял это из вашего описанного решения («после перезагрузки все заработало»). В общем, компиляция ядра изменит адреса и т. Д., Так что вновь скомпилированные модули будут несовместимы со старым ядром. Это то, что вы должны знать, и это легко понять, если вы понимаете, как работает сборка. Именно поэтому вы всегда перезагружаетесь после компиляции нового ядра. Без информации «Я только что скомпилировал новое ядро» мне было бы трудно угадать проблему. Что еще раз показывает, что очень важно дать всю информацию о том, что вы сделали, задавая вопрос.
Диркт