losetup: ไม่พบอุปกรณ์ลูปที่ไม่ได้ใช้ [ปิด]


10

ฉันกำลังพยายามสร้างอุปกรณ์วนรอบและได้รับข้อผิดพลาดฉันไม่เข้าใจ:

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

ฉันไม่มีการตั้งค่าอุปกรณ์ลูป ผลลัพธ์จากการlosetup -aเป็นโมฆะและ:

# 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
Tom Hale

บางทีมันอาจจะต้องใช้loopโมดูลโหลด # modprobe loop..
Ralph Rönnquist

2
ฉันไม่เห็นด้วยกับการปิดนี้ "นอกหัวข้อเนื่องจากพวกเขาไม่น่าจะช่วยผู้อ่านในอนาคต" เป็นเท็จในกรณีนี้ ฉันมีปัญหาเดียวกันและวิธีการแก้ปัญหาให้ช่วยฉัน
user31389

คำตอบ:


12

โมดูลเคอร์เนลบนดิสก์ไม่สามารถทำงานร่วมกับเคอร์เนลที่ใช้งานอยู่ ฉันอัพเดตเคอร์เนลแล้วและยังไม่รีบูต

วิ่งmodprobe loopให้ฉัน:

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

หลังจากรีบูตmodprobe loopทำงานได้ดี


ดังนั้นปัญหาคือ "โมดูลบนดิสก์ที่เข้ากันไม่ได้กับการใช้เคอร์เนล"?
dirkt

@dirkt ขอบคุณเหล่านั้นเป็นคำพูดที่ผมอยาก :)
ทอมเฮล

@dirkt ฉันได้ไตร่ตรองเรื่องนี้แล้วและสงสัยว่าฉันจะทำงานอย่างไรว่านั่นเป็นต้นเหตุโดยแท้จริงจากอาการที่เกิดขึ้น (การอัพเกรดก่อนหน้านี้ทำให้ไม่มีปัญหา) หากคุณมีพอยน์เตอร์ฉันยินดีที่จะได้ยิน
Tom Hale

ฉันหาสิ่งนี้จากโซลูชันที่คุณอธิบายไว้ ("หลังจากรีบูตเครื่องแล้วก็ใช้งานได้") โดยทั่วไปการรวบรวมเคอร์เนลจะเปลี่ยนที่อยู่ ฯลฯ ดังนั้นจึงทำให้โมดูลที่รวบรวมใหม่เข้ากันไม่ได้กับเคอร์เนลเก่า นั่นเป็นสิ่งที่คุณต้องรู้และง่ายต่อการเข้าใจถ้าคุณเข้าใจวิธีการประกอบ ซึ่งเป็นสาเหตุให้คุณรีบูตเสมอหลังจากคอมไพล์เคอร์เนลใหม่ หากไม่มีข้อมูล "ฉันเพิ่งรวบรวมเคอร์เนลใหม่" มันคงจะยากสำหรับฉันที่จะคาดเดาปัญหา ซึ่งแสดงให้เห็นอีกครั้งเป็นสิ่งสำคัญมากที่จะต้องให้ข้อมูลทั้งหมดเกี่ยวกับสิ่งที่คุณทำเมื่อถามคำถาม
dirkt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.