文档章节

Linux学习-光盘写入工具

u
 uetucci
发布于 2017/08/28 15:55
字数 2810
阅读 12
收藏 0
点赞 0
评论 0

文字模式的烧录行为要怎么处理呢?通常的作法是这样的:

  • 先将所需要备份的数据创建成为一个镜像文件(iso),利用 mkisofs 指令来处理;
  • 将该镜像文件烧录至光盘或 DVD 当中,利用 cdrecord 指令来处理。

mkisofs:创建镜像文件

  • 制作一般数据光盘镜像文件

想要 利用烧录机将你的数据烧录到 DVD 时, 也得要先将你的数据包成一个镜像文件,这样才能 够写入DVD片中。而将你的数据包成一个镜像文件的方式就通过 mkisofs 这个指令即可。 mkisofs 的使用方式如下:

[root@study ~]# mkisofs [-o 镜像文件] [-Jrv] [-V vol] [-m file] 待备份文件... \
> -graft-point isodir=systemdir ...
选项与参数:
-o :后面接你想要产生的那个镜像文件文件名。
-J :产生较相容于 windows 机器的文件名结构,可增加文件名长度到 64 个 unicode 字符
-r :通过 Rock Ridge 产生支持 Unix/Linux 的文件数据,可记录较多的信息(如 UID/GID等) ;
-v :显示创建 ISO文件的过程
-V vol :创建 Volume,有点像 Windows 在文件资源管理器内看到的 CD title 的东西
-m file :-m 为排除文件 (exclude) 的意思,后面的文件不备份到镜像文件中,也能使用 * 万用字符
-graft-point:graft有转嫁或移植的意思,相关数据在下面文章内说明。

光盘的格式一般称为 iso9660 ,这种格式一般仅支持旧版的 DOS 文件 名,亦即文件名只能以 8.3 (文件名8个字符,扩展名3个字符) 的方式存在。如果加上 -r 的选项之后,那么文件信息能够被记录的比较完整,可包括UID/GID与权限等等! 所以,记得 加这个 -r 的选项。

此外,一般默认的情况下,所有要被加到镜像文件中的文件都会被放置到镜像文件中的根目 录, 如此一来可能会造成烧录后的文件分类不易的情况。所以,你可以使用 -graft-point 这个 选项,当你使用这个选项之后, 可以利用如下的方法来定义位于镜像文件中的目录,例如:

  • 镜像文件中的目录所在=实际 Linux 文件系统的目录所在
  • /movies/=/srv/movies/ (在 Linux 的 /srv/movies 内的文件,加至镜像文件中的 /movies/ 目录)
  • /linux/etc=/etc (将 Linux 中的 /etc/ 内的所有数据备份到镜像文件中的 /linux/etc/ 目录 中)

我们通过简单的范例来看一下:

[root@study ~]# mkisofs -r -v -o /tmp/system.img /root /home /etc
I: -input-charset not specified, using utf-8 (detected in locale settings)
genisoimage 1.1.11 (Linux)
Scanning /root
.....(中间省略).....
Scanning /etc/scl/prefixes
Using SYSTE000.;1 for /system-release-cpe (system-release) # 被改名子了!
Using CENTO000.;1 for /centos-release-upstream (centos-release) # 被改名子了!
Using CRONT000.;1 for /crontab (crontab)
genisoimage: Error: '/etc/crontab' and '/root/crontab' have the same Rock Ridge name 'cro
Unable to sort directory # 文件名不可一样啊!
NOTE: multiple source directories have been specified and merged into the root
of the filesystem. Check your program arguments. genisoimage is not tar.
# 看到没?因为文件名一模一样,所以就不给你创建 ISO 档了啦!
# 请先删除 /root/crontab 这个文件,然后再重复执行一次 mkisofs 吧!

[root@study ~]# rm /root/crontab
[root@study ~]# mkisofs -r -v -o /tmp/system.img /root /home /etc
.....(前面省略).....
83.91% done, estimate finish Thu Jul  2 18:48:04 2015
92.29% done, estimate finish Thu Jul  2 18:48:04 2015
Total translation table size: 0
Total rockridge attributes Bytes: 600251
Total directory Bytes: 2150400
Path table size(Bytes): 12598
Done with: The File(s) Block(s) 58329
Writing:   Ending Padblock                 Start Block 59449
Done with: Ending Padblock Block(s) 150
Max brk space used 548000
59599 extents written (116 MB)

[root@study ~]# ll -h /tmp/system.img
-rw-r--r--. 1 root root 117M Jul  2 18:48 /tmp/system.img

[root@study ~]# mount -o loop /tmp/system.img /mnt
[root@study ~]# df -h /mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0      117M  117M     0 100% /mnt

[root@study ~]# ls /mnt
abrt            festival          mail.rc                   rsyncd.conf
adjtime         filesystems       makedumpfile.conf.sample  rsyslog.conf
alex            firewalld         man_db.conf               rsyslog.d
# 看吧!一堆数据都放置在一起!包括有的没有的目录与文件等等!

[root@study ~]# umount /mnt
# 测试完毕要记得卸载!

由上面的范例我们可以看到,三个目录 (/root, /home, /etc) 的数据通通放置到了镜像文件 的最顶层目录中! 真是不方便~尤其由于 /root/etc 的存在,导致那个 /etc 的数据似乎没有被 包含进来的样子!真不合理~ 此时我们可以使用 -graft-point 来处理 !


[root@study ~]# mkisofs -r -V 'linux_file' -o /tmp/system.img \
>  -m /root/etc -graft-point /root=/root /home=/home /etc=/etc
[root@study ~]# ll -h /tmp/system.img
-rw-r--r--. 1 root root 92M Jul  2 19:00 /tmp/system.img
# 上面的指令会创建一个大文件,其中 -graft-point 后面接的就是我们要备份的数据。
# 必须要注意的是那个等号的两边,等号左边是在镜像文件内的目录,右侧则是实际的数据。

[root@study ~]# mount -o loop /tmp/system.img /mnt
[root@study ~]# ll /mnt
dr-xr-xr-x. 131 root root 34816 Jun 26 22:14 etc
dr-xr-xr-x.   5 root root  2048 Jun 17 00:20 home
dr-xr-xr-x.   8 root root  4096 Jul  2 18:48 root 
# 瞧!数据是分门别类的在各个目录中喔这样了解乎?最后将数据卸载一下:

[root@study ~]# umount /mnt

如果你是有自己要制作的数 据内容,其实最简单的方法,就是将所有的数据预先处理到某一个目录中, 再烧录该目录即 可!例如上述的 /etc, /root, /home 先全部复制到 /srv/cdrom 当中,然后跑到 /srv/cdrom 当 中, 再使用类似“ mkisofs -r -v -o /tmp/system.img . ”的方式来处理即可!

  • 制作/修改可开机光盘图像挡
# 1. 先观察一下这片光盘里面有啥东西?是否是我们需要的光盘系统!
[root@study ~]# isoinfo -d -i /home/CentOS-7-x86_64-Minimal-1503-01.iso
CD-ROM is in ISO 9660 format
System id: LINUX
Volume id: CentOS 7 x86_64
Volume set id:
Publisher id:
Data preparer id:
Application id: GENISOIMAGE ISO 9660/HFS FILESYSTEM CREATOR (C) 1993 E.YOUNGDALE (C) ...
Copyright File id:
.....(中間省略).....
    Eltorito defaultboot header:
        Bootid 88 (bootable)
        Boot media 0 (No Emulation Boot)
        Load segment 0
        Sys type 0
        Nsect 4

# 2. 开始挂载这片光盘到 /mnt ,并且将所有数据完整复制到 /srv/newcd 目录去喔
[root@study ~]# mount /home/CentOS-7-x86_64-Minimal-1503-01.iso /mnt
[root@study ~]# mkdir /srv/newcd
[root@study ~]# rsync -a /mnt/ /srv/newcd
[root@study ~]# ll /srv/newcd/
-rw-r--r--. 1 root root    16 Apr  1 07:11 CentOS_BuildTag
drwxr-xr-x. 3 root root    33 Mar 28 06:34 EFI
-rw-r--r--. 1 root root   215 Mar 28 06:36 EULA
-rw-r--r--. 1 root root 18009 Mar 28 06:36 GPL
drwxr-xr-x. 3 root root    54 Mar 28 06:34 images
drwxr-xr-x. 2 root root  4096 Mar 28 06:34 isolinux
drwxr-xr-x. 2 root root    41 Mar 28 06:34 LiveOS
drwxr-xr-x. 2 root root 20480 Apr  1 07:11 Packages
drwxr-xr-x. 2 root root  4096 Apr  1 07:11 repodata
-rw-r--r--. 1 root root  1690 Mar 28 06:36 RPM-GPG-KEY-CentOS-7
-rw-r--r--. 1 root root  1690 Mar 28 06:36 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root  2883 Apr  1 07:15 TRANS.TBL
# rsync 可以完整的复制所有的权限属性等数据,也能够进行镜像处理!相当好用的指令喔!
# 这里先了解一下即可。现在 newcd/ 目录内已经是完整的镜像文件内容!

# 3. 假设已经处理完毕你在 /srv/newcd 里面所要进行的各项修改行为,准备创建 ISO 档!
[root@study ~]# ll /srv/newcd/isolinux/
-r--r--r--. 1 root root 2048 Apr 1 07:15 boot.cat # 开机的型号数据等等
-rw-r--r--. 1 root root       84 Mar 28 06:34 boot.msg
-rw-r--r--. 1 root root      281 Mar 28 06:34 grub.conf
-rw-r--r--. 1 root root 35745476 Mar 28 06:31 initrd.img
-rw-r--r--. 1 root root 24576 Mar 28 06:38 isolinux.bin # 相当于开机管理程序
-rw-r--r--. 1 root root     3032 Mar 28 06:34 isolinux.cfg
-rw-r--r--. 1 root root   176500 Sep 11  2014 memtest
-rw-r--r--. 1 root root      186 Jul  2  2014 splash.png
-r--r--r--. 1 root root     2438 Apr  1 07:15 TRANS.TBL
-rw-r--r--. 1 root root 33997348 Mar 28 06:33 upgrade.img
-rw-r--r--. 1 root root   153104 Mar  6 13:46 vesamenu.c32
-rwxr-xr-x. 1 root root 5029136 Mar 6 19:45 vmlinuz # Linux 核心文件

[root@study ~]# cd /srv/newcd
[root@study newcd]# mkisofs -o /custom.iso -b isolinux/isolinux.bin -c isolinux/boot.cat \
> -no-emul-boot -V 'CentOS 7 x86_64' -boot-load-size 4 -boot-info-table -R -J -v -T .

cdrecord : 光盘烧录工具

wodim 这个指令常见的选项有下面 数个:

[root@study ~]# wodim --devices dev=/dev/sr0... <==查询烧录机的 BUS 位置
[root@study ~]# wodim -v dev=/dev/sr0 blank=[fast|all] <==抹除重复读写片
[root@study ~]# wodim -v dev=/dev/sr0 -format >==格式化DVD+RW
[root@study ~]# wodim -v dev=/dev/sr0 [可用选项功能] file.iso
选项与参数:
--devices :用在扫瞄磁盘总线并找出可用的烧录机,后续的设备为 ATA 接口
-v :在 cdrecord 运行的过程中,显示过程而已。
dev=/dev/sr0 :可以找出此光驱的 bus 位址,非常重要!
blank=[fast&#124;all]:blank 为抹除可重复写入的CD/DVD-RW,使用fast较快,all较完整
-format :对光盘片进行格式化,但是仅针对 DVD+RW 这种格式的 DVD 而已;
[可用选项功能] 主要是写入 CD/DVD 时可使用的选项,常见的选项包括有:
-data :指定后面的文件以数据格式写入,不是以 CD 音轨(-audio)方式写入!
speed=X :指定烧录速度,例如CD可用 speed=40 为40倍数,DVD则可用 speed=4 之类
-eject :指定烧录完毕后自动退出光盘
fs=Ym :指定多少缓冲内存,可用在将镜像文件先暂存至缓冲内存。默认为 4m,
一般建议可增加到 8m ,不过,还是得视你的烧录机而定。
针对 DVD 的选项功能:
driveropts=burnfree :打开 Buffer Underrun Free 模式的写入功能
-sao :支持 DVD-RW 的格式
  • 侦测你的烧录机所在位置:

查询烧录机的方式为:

[root@study ~]# ll /dev/sr0
brw-rw----+ 1 root cdrom 11, 0 Jun 26 22:14 /dev/sr0 # 一般 Linux 光碟機檔名!

[root@study ~]# wodim --devices dev=/dev/sr0
-------------------------------------------------------------------------
 0  dev='/dev/sr0'      rwrw-- : 'QEMU' 'QEMU DVD-ROM'
-------------------------------------------------------------------------

[root@demo ~]# wodim --devices dev=/dev/sr0
wodim: Overview of accessible drives (1 found) :
-------------------------------------------------------------------------
 0  dev='/dev/sr0'      rwrw-- : 'ASUS' 'DRW-24D1ST'
-------------------------------------------------------------------------
# 你可以发现到其实做了两个测试!上面的那部主机系统是虚拟机,当然光驱也是仿真的,没法用。
# 因此在这里与下面的 wodim 用法,只能使用另一部 Demo 机器测试给大家看了!
  • 进行 CD/DVD 的烧录动作:
# 0. 先抹除光盘的原始内容 : (非可重复读写则可以略过此步骤)
[root@demo ~]# wodim -v dev=/dev/sr0 blank=fast
# 中间会跑出一堆讯息告诉你抹除的进度,而且会有 10 秒钟的时间等待你的取消!

# 1. 开始烧录:
[root@demo ~]# wodim -v dev=/dev/sr0 speed=4 -dummy -eject /tmp/system.img
....(前面省略)....
Waiting for reader process to fill input buffer ... input buffer ready.
Starting new track at sector: 0
Track 01: 86 of 86 MB written (fifo 100%) [buf 97%] 4.0x. # 这里有流程时间!
Track 01: Total Bytes read/written: 90937344/90937344 (44403 sectors).
Writing time: 38.337s   # 写入的总时间
Average write speed 1.7x. # 换算下来的写入时间
Min drive buffer fill was 97%
Fixating...
Fixating time:  120.943s
wodim: fifo had 1433 puts and 1433 gets.
wodim: fifo was 0 times empty and 777 times full, min fill was 89%.
# 因为有加上 -eject 这个选项的缘故,因此烧录完成后,DVD 会被退出光驱喔!记得推回去!

# 2. 烧录完毕后,测试挂载一下,检验内容:
 [root@demo ~]# mount /dev/sr0/mnt
 [root@demo ~]# df -h /mnt
 Filesystem            Size  Used Avail Use% Mounted on
 Filesystem      Size  Used Avail Use% Mounted on
 /dev/sr0         87M   87M     0 100% /mnt

[root@demo ~]# ll /mnt
dr-xr-xr-x. 135 root root 36864 Jun 30 04:00 etc
dr-xr-xr-x.  19 root root  8192 Jul  2 13:16 root

[root@demo ~]# umount /mnt <==不要忘了卸载

© 著作权归作者所有

共有 人打赏支持
u
粉丝 0
博文 53
码字总数 103136
作品 0
深圳
程序员
学着学着Linux系统写篇心得

本学期对于linux系统的学习,和自己买的一本《linux就该这么学》这本书,让我对linux有了一定的了解。我知道了linux只是个内核。现在的linux操作系统,都是用这么一个内核,加上其它的应用程...

linuxprobe16 ⋅ 06/03 ⋅ 0

使用系统启动盘装系统,实践经历,以及一点小小的感悟

写在前面 这是一篇于2017.9.26写的有道云笔记,现结合后续的实践整理成博客。 自从接触SLAM后,就离不开Linux操作系统了,而且装系统已经是现代人的必备技能之一,所以在此记录一下自己的经历...

learning_tortosie ⋅ 04/11 ⋅ 0

CentOS自动化安装: anaconda

anaconda REHL/CentOS系列的系统安装程序名为anaconda(就是那个装系统时,让你下一步下一步的的程序),我们可以通过修改此程序的配置文件实现自动化安装.应用于大批量的机器需要安装系统时. a...

JyingHZ ⋅ 04/15 ⋅ 0

麒麟版Linux怎么在笔记本上安装

1、将刻好的光盘放入光驱,重启电脑,开机F9选择光盘引导。引导后会进入HP Recovery界面,直接选择Restore System From Media,回车 2、进入安装界面后,会首先提示这个工具会删除整个硬盘上所...

六库科技 ⋅ 05/01 ⋅ 0

修复ubuntu引导程序

如果你因安装双系统(Windows+Ubuntu)破坏了引导程序而无法进入系统,别着急,以下方法可以帮你轻松恢复引导程序。 第一步:通过光盘进入系统。 第三步:打开终端,输入命令sudo -i,进入系统...

曾赛 ⋅ 2009/09/11 ⋅ 0

Kali Linux 秘籍 第三章 高级测试环境

第三章 高级测试环境 作者:Willie L. Pritchett, David De Smet 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 既然我们已经了解了 Kali Linux 所包含的工具,现在我们要调查一些真实世界的场景。...

apachecn_飞龙 ⋅ 2016/10/04 ⋅ 0

Clonezilla Live 2.5.5-38 发布,分区及磁盘克隆工具

Clonezilla Live 2.5.5-38 发布了,Clonezilla 是一个分区和磁盘的克隆工具,类似于 Symantec Ghost。该工具性能不错,克隆5G的系统到40个客户端,只需要短短的10分钟。该工具还包含一个自动...

周其 ⋅ 04/15 ⋅ 0

运维工程师必会的109个Linux命令(2)

点击链接加入QQ群 522720170(免费公开课、视频应有尽有):https://jq.qq.com/?wv=1027&k=5C08ATe 2 磁盘管理 2.1 dd 2.1.1 功能说明 读取,转换并输出数据。 2.1.2 语法 dd [bs=][cbs=][c...

小强测试帮 ⋅ 05/18 ⋅ 0

Linux虚拟机上搭建ftp服务器

Linux虚拟机上搭建ftp服务器 实验介绍:本文主要介绍在虚拟机的Linux系统上搭建ftp服务器,并且最终可以在另外一台win7虚拟机中能够正常上传和下载文件,并建立访问用户的黑白名单,以及虚拟...

xiaoyaokeyx ⋅ 05/13 ⋅ 0

要不要听听小白学习Linux经验小谈

Linux系统近几年发展的很快,特别是随着安卓手机的普及,大数据、物联网、人工智能等科学技术的发展,Linux系统从几年前只有白帽、黑帽等系统高手才了解的情况下变成如今几乎全民皆知的地步,...

问题终结者 ⋅ 05/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部