लॉसेटअप: अप्रयुक्त लूप डिवाइस नहीं पा सकता [बंद]


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अब और कॉल करने की आवश्यकता नहीं है , हालांकि मुझे लगता है कि यह अभी भी वेब पर कई ट्यूटोरियल में तैरता है ...
d Octt

मैं उपयोग के लिए एक ओवरले डिवाइस बनाने की कोशिश कर रहा हूं 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बस ठीक काम किया।


तो समस्या यह थी "डिस्क पर मॉड्यूल कर्नेल चलाने के साथ असंगत"?
dirkt

@dirkt धन्यवाद, वे शब्द जो मुझे चाहिए थे :)
टॉम हेल

@dirkt मैं इस पर विचार कर रहा हूं, और आश्चर्य है कि मैंने कैसे काम किया होगा जो वास्तव में कारण था, जो मुझे अनुभव हो रहा था। (पिछले उन्नयन के कारण कोई समस्या नहीं हुई)। यदि आपके पास कोई संकेत है, तो मुझे उन्हें सुनने में खुशी होगी।
टॉम हेल

मैंने इसे आपके वर्णित समाधान ("रिबूट करने के बाद, यह काम किया") से लिया। सामान्य तौर पर, कर्नेल को संकलित करने से पते आदि बदल जाएंगे, जिससे नए संकलित मॉड्यूल पुराने कर्नेल के साथ असंगत हो जाते हैं। यह कुछ ऐसा है जिसे आपको जानना है, और यह समझना आसान है कि क्या आप समझते हैं कि असेंबली कैसे काम करती है। यह भी कि आप एक नया कर्नेल संकलित करने के बाद हमेशा रिबूट क्यों करते हैं। जानकारी के बिना "मैंने अभी एक नया कर्नेल संकलित किया है" समस्या का अनुमान लगाना मेरे लिए कठिन होता। जो फिर से दिखाता है कि प्रश्न पूछते समय आपने जो किया उसके बारे में पूरी जानकारी देना बहुत महत्वपूर्ण है ।
दिनांक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.