2015-02-14 3 views
12

मैं बिना सीडीरोम के आकार के अपने विचार को अपडेट करने के लिए लिनक्स कैसे प्राप्त कर सकता हूं? दूसरे शब्दों में, मैं पहले इसे बाहर निकाले बिना ताजा जला सीडीरॉम कैसे माउंट कर सकता हूं?सीडीरॉम को बाहर निकाले बिना लिनक्स में सीडीरॉम आकार को कैसे अपडेट करें?

मैं एक सीडीरॉम पर अप्रत्याशित वृद्धिशील बैकअप कर रहा हूं। प्रत्येक दिन my script "wodim -multi" का उपयोग करके सीडीरॉम में संलग्न एक छवि उत्पन्न करने के लिए "wodim -msinfo" और "genisoimage -C" का उपयोग करता है। मेरी स्क्रिप्ट तब सीडीरॉम को माउंट करती है ताकि यह जांच सके कि नई फाइलें सही तरीके से जुड़ी हुई हैं। यदि लिनक्स के सीडीरोम के आकार का विचार माउंट से पहले अपडेट किया गया है तो स्क्रिप्ट केवल नई फाइलें पढ़ सकती है। आकार/sys/block/sr2/आकार और/proc/विभाजन में है। इससे पहले मेरी लिपि ने सीडीरॉम को फिर से चलाने के लिए लिनक्स प्राप्त करने के लिए "निकास" का उपयोग किया था। "eject -t" मेरे नए सीडीरॉम बर्नर पर काम नहीं करता है। मैं सीडीरॉम को बाहर निकाले बिना अपडेट/proc/विभाजन कैसे प्राप्त कर सकता हूं?

ऐसा प्रतीत होता है कि "wodim -msinfo" और "genisoimage -C" चरण को सीडीरॉम को सीडीरॉम को पिछली जला के बाद बाहर निकालने की भी आवश्यकता होती है अन्यथा मुझे संदेश मिलता है "genisoimage: अवैध तर्क। पुरानी त्रुटि छवि "।

किसी ने 2003 में इस प्रश्न से पूछा लेकिन उन्हें जो जवाब मिला वह मेरे लिए सीडीरॉम आकार अपडेट नहीं करता है। http://compgroups.net/comp.os.linux.questions/rescan-cdrom-frm-command-line/456190

#include <fcntl.h> 
#include <stdio.h> 
#include <linux/cdrom.h> 
int main(void) 
{ 
    int i = 0; 
    int fd = open("/dev/cdrom", O_RDWR); 
    if (fd == -1) 
    { 
      perror("Could not open cdrom"); 
      return 1; 
    } 
    if (ioctl(fd, CDROM_MEDIA_CHANGED)) perror("ioctl"); 
    if (ioctl(fd, CDROMRESET)) perror("ioctl CDROMRESET"); 
    if (ioctl(fd, CDROM_NEXT_WRITABLE, &i)) 
      perror("ioctl CDROM_NEXT_WRITABLE,"); 
    else 
      printf("CDROM_NEXT_WRITABLE %d\n", i); 
    if (ioctl(fd, CDROM_LAST_WRITTEN, &i)) 
      perror("ioctl CDROM_LAST_WRITTEN,"); 
    else 
      printf("CDROM_LAST_WRITTEN %d\n", i); 
    return 0; 
} 

यह वास्तव में क्या होता है जब मैं नई सीडीरॉम पैदा करते हैं। मुझे इसे बाहर निकालना है और फिर इसे माउंट करने के लिए इसे वापस धक्का देना है।

% genisoimage -r -V archive -input-charset ASCII -quiet /usr/lib/vlc > /tmp/libvlc.iso 
% grep -H sr2 /proc/partitions ; cat /sys/block/sr2/size 
/proc/partitions: 11  2   2 sr2 
4 
% wodim driveropts=burnfree -tao -data dev=/dev/sr2 /tmp/libvlc.iso 
wodim: Operation not permitted. Warning: Cannot raise RLIMIT_MEMLOCK limits. 
Device type : Removable CD-ROM 
Version  : 0 
Response Format: 2 
Capabilities : 
Vendor_info : 'TSSTcorp' 
Identification : 'CDDVDW SE-S084C ' 
Revision  : 'TU00' 
Device seems to be: Generic mmc2 DVD-R/DVD-RW. 
Using generic SCSI-3/mmc CD-R/CD-RW driver (mmc_cdr). 
Driver flags : MMC-3 SWABAUDIO BURNFREE 
Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R16 RAW/R96P RAW/R96R 
Speed set to 1764 KB/s 
Starting to write CD/DVD at speed 10.0 in real TAO mode for single session. 
Last chance to quit, starting real write in 0 seconds. Operation starts. 
Track 01: Total bytes read/written: 17078272/17078272 (8339 sectors). 
% grep -H sr2 /proc/partitions ; cat /sys/block/sr2/size 
/proc/partitions: 11  2   2 sr2 
4 
% sudo mount /dev/sr2 /mnt 
mount: /dev/sr2 is write-protected, mounting read-only 
mount: wrong fs type, bad option, bad superblock on /dev/sr2, 
     missing codepage or helper program, or other error 

     In some cases useful info is found in syslog - try 
     dmesg | tail or so. 
% grep -H sr2 /proc/partitions ; cat /sys/block/sr2/size 
/proc/partitions: 11  2   2 sr2 
4 
% sudo mount /dev/sr2 /mnt 
mount: /dev/sr2 is write-protected, mounting read-only 
mount: wrong fs type, bad option, bad superblock on /dev/sr2, 
     missing codepage or helper program, or other error 

     In some cases useful info is found in syslog - try 
     dmesg | tail or so. 
% sudo eject /dev/sr2 
% #push CDRW back in 
% grep -H sr2 /proc/partitions ; cat /sys/block/sr2/size 
/proc/partitions: 11  2  16682 sr2 
33364 
% sudo mount /dev/sr2 /mnt 
mount: /dev/sr2 is write-protected, mounting read-only 

मैं विभिन्न hdparm विकल्पों की कोशिश की है, लेकिन उनमें से कोई भी काम, न ही वे सीडीरॉम के आकार की गिरी का विचार बदल सकते हैं या इसे स्थापित किया जा करने की अनुमति है।

:; sudo hdparm -z /dev/sr2 

/dev/sr2: 
re-reading partition table 
BLKRRPART failed: Invalid argument 
:; sudo hdparm -F /dev/sr2 

/dev/sr2: 
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
:; sudo hdparm -Y /dev/sr2 

/dev/sr2: 
issuing sleep command 
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
:; sudo hdparm -w /dev/sr2 

/dev/sr2: 
resetting drive 
HDIO_DRIVE_RESET failed: Invalid argument 
:; grep -H sr2 /proc/partitions ; cat /sys/block/sr2/size 
/proc/partitions: 11  2   2 sr2 
4 
:; sudo mount /dev/sr2 /mnt 
mount: /dev/sr2 is write-protected, mounting read-only 
mount: wrong fs type, bad option, bad superblock on /dev/sr2, 
     missing codepage or helper program, or other error 

     In some cases useful info is found in syslog - try 
     dmesg | tail or so. 

फाइल सिस्टम के प्रकार को निर्दिष्ट करने में मदद नहीं करता है।

:; grep -H sr2 /proc/partitions ; cat /sys/block/sr2/size 
/proc/partitions: 11  2   2 sr2 
4 
:; sudo mount -t iso9660 /dev/sr2 /mnt 
[sudo] password for root: 
(pam_mount.c:365): pam_mount 2.14: entering auth stage 
mount: /dev/sr2 is write-protected, mounting read-only 
mount: wrong fs type, bad option, bad superblock on /dev/sr2, 
     missing codepage or helper program, or other error 

     In some cases useful info is found in syslog - try 
     dmesg | tail or so. 
(pam_mount.c:133): clean system authtok=0x7f0a33b97450 (1073741824) 
:; grep -H sr2 /proc/partitions ; cat /sys/block/sr2/size 
/proc/partitions: 11  2   2 sr2 
4 

संदेश है कि मैं dmesg से मिलता है (1) हो सकता है कि blockdev (8) आदेश का उपयोग

[1209552.092616] isofs_fill_super: bread failed, dev=sr2, iso_blknum=16, block=16 
+0

तुम बस सीडीरॉम को पुन: माउंट की जरूरत है: माउंट 'sudo -ओ रिमाउंट/dev/cdrom0' – hek2mgl

+0

मुझे यकीन है कि नहीं आप से क्या मतलब सीडीआरओएम remounting।मैंने अभी सीडीरॉम जला दिया है, इसलिए इसे अभी तक नहीं रखा गया है। इसे माउंट करने की कोशिश कर रहा है (इसे बाहर निकालने और पुन: सम्मिलित करने से पहले) विफल रहता है। –

+0

"hdparm" से कई रीसेट हैं जो आप कोशिश कर सकते हैं ... "-z" एक ड्राइवर रीसेट है। -एफ "विकल्प ड्राइव के विचार को रीसेट कर सकता है कि इसकी डिस्क क्या है।" -Y "ड्राइव को नींद में डाल सकता है ताकि लिनक्स को इसे धीरे-धीरे रीसेट करना पड़े।" -w "तर्क एक कठिन रीसेट है। उनमें से अधिकतर हैं हार्ड डिस्क के लिए डिज़ाइन किया गया है, लेकिन कभी-कभी वे वैसे भी काम करते हैं। – user3710044

उत्तर

1

मैं एक BD ड्राइव के साथ एक ही समस्या आ रही है। मेरे लिए क्या काम किया गया है डिवाइस को अनबाइंड करना (सशक्त) करना और इसे फिर से दोबारा बनाना। यहाँ किसी न किसी चरणों

  • के माध्यम से "lsscsi -v" डिवाइस नीचे

    [11:0:0:0] cd/dvd TSSTcorp BDDVDW SE-506AB TS01 /dev/sr1 
    dir: /sys/bus/scsi/devices/11:0:0:0 [/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host11/target11:0:0/11:0:0:0] 
    
  • शक्ति USB-उपकरण ढूंढने/

    sudo bash -c "echo 2-1.2 | tee /sys/bus/usb/drivers/usb/unbind" 
    
  • बिजली उपकरण डिस्कनेक्ट के लिए तैयार/फिर से कनेक्ट करें

    sudo bash -c "echo 2-1.2 | tee /sys/bus/usb/drivers/usb/bind" 
    

Unbind/बाँध एक शानदार तरीका कई USB उपकरणों पुनर्स्थापित करने के लिए है ...

संबंधित मुद्दे