linux释放cdrom空间,如何在Linux中更新CDROM大小而不弹出CDROM?

如何让

Linux更新其CDROM大小的想法而不弹出?换句话说,我怎么能先安装一个新烧光的CDROM,而不先弹出它?

我正在无障碍的增量备份到CDROM.每天my script使用“wodim -msinfo”和“genisoimage -C”来生成使用“wodim-multi”附加到CDROM的图像.然后我的脚本安装CDROM来检查新文件是否正确附加.如果Linux在安装之前更新了CDROM大小的思想,则该脚本只能读取新文件.大小在/ sys / block / sr2 / size和/ proc / partitions中.以前,我的脚本使用“弹出”,然后“弹出-t”让Linux重新读取CDROM. “弹出-t”在我的新CDROM刻录机上不起作用.如何在不弹出CDROM的情况下更新/ proc / partition更新?

看来,“wodim -msinfo”和“genisoimage -C”步骤也要求CDROM自从上次刻录到CDROM之后被弹出,否则我得到消息“genisoimage:无效的参数,在旧的图像上寻找错误”.

#include

#include

#include

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;

}

这正是当我创建新的CDROM时会发生什么.我必须弹出它,然后将其推回来安装.

% 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选项,但是它们都没有工作,也没有改变内核对CDROM大小的想法,或允许它挂载.

:; 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)得到的消息是

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值