मैं बिना सीडीरोम के आकार के अपने विचार को अपडेट करने के लिए लिनक्स कैसे प्राप्त कर सकता हूं? दूसरे शब्दों में, मैं पहले इसे बाहर निकाले बिना ताजा जला सीडीरॉम कैसे माउंट कर सकता हूं?सीडीरॉम को बाहर निकाले बिना लिनक्स में सीडीरॉम आकार को कैसे अपडेट करें?
मैं एक सीडीरॉम पर अप्रत्याशित वृद्धिशील बैकअप कर रहा हूं। प्रत्येक दिन 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
तुम बस सीडीरॉम को पुन: माउंट की जरूरत है: माउंट 'sudo -ओ रिमाउंट/dev/cdrom0' – hek2mgl
मुझे यकीन है कि नहीं आप से क्या मतलब सीडीआरओएम remounting।मैंने अभी सीडीरॉम जला दिया है, इसलिए इसे अभी तक नहीं रखा गया है। इसे माउंट करने की कोशिश कर रहा है (इसे बाहर निकालने और पुन: सम्मिलित करने से पहले) विफल रहता है। –
"hdparm" से कई रीसेट हैं जो आप कोशिश कर सकते हैं ... "-z" एक ड्राइवर रीसेट है। -एफ "विकल्प ड्राइव के विचार को रीसेट कर सकता है कि इसकी डिस्क क्या है।" -Y "ड्राइव को नींद में डाल सकता है ताकि लिनक्स को इसे धीरे-धीरे रीसेट करना पड़े।" -w "तर्क एक कठिन रीसेट है। उनमें से अधिकतर हैं हार्ड डिस्क के लिए डिज़ाइन किया गया है, लेकिन कभी-कभी वे वैसे भी काम करते हैं। – user3710044