如何从USB移除iso 9660?


22

我设法将iso 9660映像写入USB驱动器,这使我所有的计算机都认为该设备实际上是CD。我尝试了各种方法来删除该分区,但是似乎没有任何效果。我试过了fdisk,说

$ fdisk -l / dev / sdb
无法打开/ dev / sdb
当我尝试在此设备上使用它时会崩溃。

我什至尝试过

$ dd if = / dev / zero of = / dev / sdb
但它只是挂起而没有输出(无论是在屏幕上还是在磁盘上)。但是,当我插入USB时,它确实会挂载,并且我可以查看(但不能编辑)其中的文件。

编辑:现在的结果是

$ dd if = / dev / zero of = / dev / sdb
dd:打开`/ dev / sdb':只读文件系统

我也尝试过在Windows上对其进行重新格式化,但是格式化过程已经结束,然后显示“无法格式化驱动器”。

如何删除该分区并使整个USB驱动器恢复正常?

编辑1:尝试简单mkfs不起作用:

$ sudo mkfs -t vfat / dev / sdb
mkfs.vfat 3.0.0(2008年9月28日)
mkfs.vfat:不会尝试在全盘设备“ / dev / sdb”上创建文件系统(如果需要,请使用-I)
我无法继续mkfs/dev/sdb1因为没有这样的分区,如下所示:
$ ls / dev | grep sdb
数据库

编辑2:这是我将设备插入电源时dmesg发布的信息:

$ dmesg
。
。(剪断)
。
USB 2-1:找到新的USB设备,idVendor = 058f,idProduct = 6387
USB 2-1:新的USB设备字符串:Mfr = 1,Product = 2,SerialNumber = 3
USB 2-1:产品:大容量存储
USB 2-1:制造商:通用
USB 2-1:序列号:G0905000000000010885
USB存储:设备位于4
USB存储器:扫描前等待设备稳定
USB存储:设备扫描完成
scsi 6:0:0:0:直接访问闪存驱动器AU_USB20 8.07 PQ:0 ANSI:2
sd 6:0:0:0:[sdb] 4069376 512字节硬件扇区(2084 MB)
sd 6:0:0:0:[sdb]写保护已关闭
sd 6:0:0:0:[sdb]模式感测:03 00 00 00
sd 6:0:0:0:[sdb]假设驱动器缓存:直写
sd 6:0:0:0:[sdb] 4069376 512字节硬件扇区(2084 MB)
sd 6:0:0:0:[sdb]写保护已关闭
sd 6:0:0:0:[sdb]模式感测:03 00 00 00
sd 6:0:0:0:[sdb]假设驱动器缓存:直写
 sdb:未知分区表
sd 6:0:0:0:[sdb]附加的SCSI可移动磁盘
sd 6:0:0:0:附加的scsi通用sg2类型0
ISO 9660扩展:Microsoft Joliet 3级
ISO 9660扩展:RRIP_1991A
SELinux:已初始化(dev sdb,类型为iso9660),使用genfs_contexts
CE:hpet将min_delta_ns增加到15000 ns
这表明,该设备被格式化为ISO 9660,它 /dev/sdb

编辑3:这是dmesg在运行cfdisk新分区表并将其写入磁盘后在底部找到的消息:

SELinux:已初始化(dev sdb,类型为iso9660),使用genfs_contexts
sd 17:0:0:0:[sdb]设备未准备好:检测键:未就绪[当前] 
sd 17:0:0:0:[sdb]设备未准备好:<> ASC = 0xff ASCQ = 0xffASC = 0xff <> ASCQ = 0xff
end_request:I / O错误,开发人员sdb,扇区0
设备sdb上的缓冲区I / O错误,逻辑块0
由于sdb上的I / O错误而导致页面写丢失


您确定它总是在/ dev / sdb加载吗?如果在安装设备后查看/ var / log / messages的末尾,您将看到有关其自动挂载的日志消息。
马斯

3
您确定它当前未与cdfs或等效文件一起安装吗?
RBerteig

1
@ Slink84:我想我刚刚去了sudo dd if=some.iso of=/dev/sdb-我不记得做了任何其他可以做的事
a_m0d

1
该图像是eeebuntu-3.0.0标准图像-不知道是谁制造的设备,但我认为它是东芝
a_m0d

1
从VID / PID对中,它由“ Alcor Micro Corp.”制造,并且是“ Transcend JetFlash Flash Drive”。我使用linux-usb.org/usb.ids中的列表来查找这些内容。
RBerteig

Answers:


8

好的,事实证明,在这种情况下(可能是当我将iso-9660文件系统写入驱动器时)触发了驱动器上某种形式的内部写保护。有没有外部的写保护/保持开关,但仍这是在输出dmesg我跑的时候

dd if=/dev/zero of=/dev/sdb

作为根:

sd 9:0:0:0:[sdb]添加。感:写保护
end_request:I / O错误,开发人员数据库,扇区4028744
sd 9:0:0:0:[sdb]结果:hostbyte = DID_OK driverbyte = DRIVER_SENSE,SUGGEST_OK
sd 9:0:0:0:[sdb] Sense Key:数据保护[当前] 
信息fld = 0x0

注意其中有关保护的评论!但是,当我插入设备时,

scsi 10:0:0:0:直接访问闪存驱动器AU_USB20 8.07 PQ:0 ANSI:2
sd 10:0:0:0:[sdb] 4069376 512字节硬件扇区(2084 MB)
sd 10:0:0:0:[sdb]写保护已关闭
sd 10:0:0:0:[sdb]模式检测:03 00 00 00
sd 10:0:0:0:[sdb]假设驱动器缓存:直写
sd 10:0:0:0:[sdb] 4069376 512字节硬件扇区(2084 MB)
sd 10:0:0:0:[sdb]写保护已关闭
sd 10:0:0:0:[sdb]模式检测:03 00 00 00
sd 10:0:0:0:[sdb]假设驱动器缓存:直写

请注意,此消息表明该设备不受写保护!因此,不幸的是,磁盘看起来已经拥有了它(即kaput)。


过去,我听说过闪存设备,如果您曾经与它们一起使用非FAT文件系统,它们就会变成砖块(因为它们使用FAT来知道哪些块未使用并且可以丢弃)。我已经很久没有听说过了,通过快速的Google搜索也找不到任何相关信息。
CesarB

到目前为止,我发现有人提到FAT依赖项:linux.derkeiler.com/Mailing-Lists/Debian/2008-08/msg00761.html
CesarB,2009年

遗憾听到它的死......嘿,我应该庆幸我没能重现你的问题:虽然我已经试过了一个古老的“一次性”的驱动器上,它仍然是伤心地失去它是道路。
Kirill Strizhak

是的,尤其是因为它才一个星期左右!哦...
a_m0d

1
找到了我要找的东西:lkml.org/lkml/2009/3/16/363(“一些SDD制造商(我不知道是哪个制造商)实际上正在检查分区表并做不同的事情。我知道这是因为他们如果写入无效的分区表,则永久性地
阻塞

6

我是这个Linux系统管理员的新手,因此,当我遇到完全相同的问题时,我戳了一下并毫不发狂地劝说我的方法,但设法删除了iso9660 fs并收回了拇指驱动器。

sudo fdisk -l  /dev/sdb1

回来

Disk /dev/sdb1: 16.0 GB, 16037969920 bytes
64 heads, 32 sectors/track, 15295 cylinders, total 31324160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I>/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x57155aa7

     Device Boot      Start         End      Blocks   Id  System
/dev/sdb1p1            2048    31324159    15661056    5  Extended

所以我尝试了

sudo fdisk /dev/sdb1

Command (m for help): m
Command action
  . . .

其次是

Command (m for help): d Extended
Selected partition 1

Command (m for help): v
Remaining 31324159 unallocated 512-byte sectors

然后,当再次提示选择fdisk来创建一个空的dos分区表时(我认为以后可以用我想要的任何东西覆盖它)

Command (m for help): v
Remaining 31324159 unallocated 512-byte sectors

Command (m for help): o
Building a new DOS disklabel with disk identifier 0xea06616f.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

我以返回的消息表示我至少“破坏”了iso9660 fs,因此继续尝试mkfs

sudo mkfs /dev/sdb1

mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
979200 inodes, 3915520 blocks
.195776 blocks (5.00%) reserved for the super user
First data block=0
.Maximum filesystem blocks=4009754624
120 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

所有这些使我离开了拇指驱动器上的“ lost + found”目录。

sudo mount /dev/sdb1 /media/
ls /media/
lost+found

最后,我访问了Ubuntu网站(http://www.ubuntu.com/download/ubuntu/download,第2部分),并使用该工具条创建了Ubuntu的可引导映像以进行试用,然后让我使用。用这种方法在棍子上制作的Ubuntu映像的妙处在于,可以轻松删除它们,并回收该棍子以用于其他用途。

我提到这最后一步,是因为事后回想,我不知道我是否首先这样做就可以做到。如前所述,我是Linux的新手,并且正在使用最方便的媒体尝试在现场CD上发行不同的发行版(例如Fedora,Ubuntu等),并且我肯定会破坏很多东西。


我很乐意尝试您的步骤,看看是否可以解决问题,但是我似乎再也不会坚持了,所以很遗憾,我不知道它们是否会有所帮助。但是,这可能仍然对其他有相同问题的人有所帮助。
2011年

5
mkdosfs -I /dev/sdb

将在驱动器上创建一个vfat文件系统。如果要在整个驱动器而不是分区上创建文件系统,则必须传递-I。如果要先对驱动器进行分区,请使用fdisk。当然,fdisk现在无法读取驱动器,因为它没有任何分区。但我敢肯定它将能够对其进行写入。


不起作用-仅打印版本号并退出。同样,fdisk是“无法写入/ dev / sdb”
a_m0d

我只是尝试了该命令,它确实写入了指定的设备。它还仅打印版本号。您可以使用用dd创建的常规文件对此进行测试。您可以看到它对od所做的更改。我的猜测是这是硬件问题。
金(Kim)

1
当上述解决方案全部失败后,这对我便删除了Centos可启动映像。
2015年

2

看一下dmesg代码片段,似乎是自动安装了驱动器(请检查mount)。在执行任何操作之前,应手动将其卸下。

然后将带有分区表(dd if=/dev/zero of=... bs=512 count=1)的块清零,然后运行分区工具重新创建一个空的分区表。之后,拔出并重新插上(不需要,但是...),然后在其上创建/格式化所需的分区。在创建分区后(也许您将不得不再次拔出并重新插入),您应该拥有/dev/sdb1或类似的东西,这是您应该在其中创建文件系统的地方。

请注意,所有步骤均应以root用户身份执行(使用sudo或等效操作)。注意不要输入错误的设备名称,否则可能会擦掉硬盘!


1
我已经做到了,但是即使整个磁盘似乎都充满了零,它仍然会以某种方式挂载并读取磁盘!
–'a_m0d

1

我仍然觉得我们假设某些事情会变成事实。由于设备可读,因此此行至少可以让您自己查看数据,而不必依赖于其他程序的解释。

dd if = / dev / sdb count = 1 | xxd -g1 -u

另外,也许我们可以通过将开发节点强制到另一个端口上,从而将开发节点的问题与设备上的问题分开。将其插入另一个USB插孔,或者先插入另一个驱动器,以占用sdb。


嗯...使用此命令告诉我该设备充满了零,这可能是因为我最终设法dd if=/dev/zero of=/dev/sdb在其上运行。但是,在插入设备后,fedora仍会将其安装为ISO9660 fs!
–'a_m0d

Linux仍然使用/ etc / fstab吗?这些“关联”曾经被存储在那里。
gbarry

不,它的使用(我认为)udev,或者自动安装驱动器的任何东西。
2009年

1

当前您的USB驱动器没有分区表,iso9660文件系统直接位于整个磁盘上(就像cdrom一样)

sd 6:0:0:0: [sdb] Assuming drive cache: write through
 sdb: unknown partition table

我认为你需要先做一个分区

sudo cfdisk /dev/sdb

(确保之前未安装)在fdisk应用程序中创建一个新分区。

完成后,将文件系统放在新分区上

sudo mkfs -t vfat /dev/sdb1

试过了 cfdisk不会产生任何错误消息,但是快速浏览dmesg表明实际上存在一条错误消息。(请参阅上面有问题的Edit 3)
2009年

1

我和你有完全一样的问题。但是,我能够从一个令人惊讶的地方找到解决方案。一台装有Windows 98SE的旧笔记本电脑,这是我拥有的最后一个Windows系统。无论如何,只要将其放入,当您尝试访问驱动器时,Windows就会询问您是否要对其进行格式化。单击“是”,您将获得功能齐全的fat16格式化驱动器。我不知道它是否适用于Windows的较新版本。祝你好运。


一直到Windows 8 :)
Sebastian Godelet


1

昨晚我做了

dd if=fedora.iso of=sdx  

四小时后,我安装了无法启动,无法更改的iso9660砖。按照David的思路,我将Ubuntu称为“启动磁盘创建器”(在破折号中键入“启动磁盘创建器”),而只是选择了“擦除”。做到了。

然后将USB驱动器报告为FAT32,一切正常。


有时像这样使用锤子是合适的。我想知道驱动器的前几个部分是什么。
vgoff 2012年

0

卸下驱动器,看看是否仍然可以读取它。我想知道/ dev / usb(或您从何处读取的)是否已成为普通文件目录。


进行了尝试-将其重新插入时,它可以很好地安装,并且我可以阅读所有内容。根据mount,这是一个iso9660文件系统。但是,gparted仅显示驱动器上2GB的未分配空间。 dd抱怨/ dev / sdb是一个只读文件系统
2009年

0

您是否尝试使用-t选项重新安装它?

umount / dev / sdb
sudo mount -t vfat / dev / sdb / mnt / point

如果那行不通,我将在以后回家时尝试重现它。似乎是一个有趣的问题。修补:]将很有趣


呵呵,不起作用,因为先mount检查文件类型
a_m0d 2009年

是的,被怀疑的多:]好吧,不再有“脱胎换骨”的想法。
Kirill Strizhak,2009年

0

最佳和正确的方法是:

# wipefs --all /dev/sdX

根据wipefs手册:

wetfs可以擦除指定设备上的文件系统,raid或分区表签名(魔术字符串),从而使libblkid看不见签名。

wetfs不会擦除文件系统本身或设备中的任何其他数据。当不带任何选项使用时,wipefs会列出所有可见的文件系统及其基本签名的偏移量。

当擦除分区表签名以将更改通知内核时,wipefs调用BLKRRPART ioctl。

这具有许多优点,例如通知内核有关更改(这样,以后进行格式化时就不会出现任何错误),不擦除数据或文件系统等。


-1

U3具有删除其U3分区的实用程序。它还会删除由创建iso 9660的实用程序创建的分区/设备。仅在u3 usb棒上已经确认了这一点,但是现在可以对其进行格式化,并完全将整个空间作为闪存驱动器恢复。您可以试一试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.