linux seek LinuX下载
大家好,如果您还对linux seek不太了解,没有关系,今天就由本站为大家分享linux seek的知识,包括LinuX下载的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
linux 下制作可启动 img/iso 文件的方法
制作镜像文件有三种方法,cp, cat, dd和其它专用工具。cp,cat和 dd都可以从设备复制文件来创建镜像。而 dd命令更为强大,可以通过指定块大小,块多少来直接创建镜像。
IMG文件:
因为cp, cat只能从设备来制作镜像,但又没有专用工具来做 IMG文件,故这里用 dd命令来制作 IMG文件。
1,制作
dd if=/dev/zero of=fdimage.img count=2880
or
dd if=/dev/zero of=fdimage.img bs=1024 count=1440
2,格式化
mkfs.msdos fdimage.img
3,修改
可以用下面的命令 mount后,可直接修改
mount-o loop*.img/mnt
4,可启动
因为制作可启动镜像一定会用到虚拟机,推荐用 Virtualbox,先到网上下个 DOS启动盘来引导。用 DOS的 sys命令传递系统。推荐使用 FreeDOS,属自由软件。也可用 dd命令来传递引导引导信息,并复制启动启动时所需文件来做启动盘。以 FreeDOS为例,传递启动信息用以下命令,其中下载的启动盘为 balder10.img文件
dd if=balder10.img of=fdimage.img bs=512 count=1 conv=notrunc
多系统用 grub4dos,
1),用 grub.exe引导多系统
2),安装 grub到MBR,用 grldr来引导多系统。当然也可用同上面一样的办法用 dd直接写入引导信息。
bootlace.com--floppy--chs 0x00
注:才发现用 dd命令只能从逻辑扇区开始 copy,先前我想可否用 dd来将 grldr.mbr写入 u盘,我用自己的 U盘试了,结果不能打开了。因为我的 U盘为 fat16格式,逻辑扇区开始是OBR,接着是FAT表,结果把 FAT1表给盖了,那时还没有想到还有 FAT2呢,就格了,现在想起来郁闷啊,好多东西都没有了。
为什么软盘可以呢,因为它就没有前面的63个扇区,直接从逻辑0扇区开始的。
ISO文件:
因为文件系统的关系,就不能用 dd来直接做 ISO镜像了(当然,它还是可以从设备制作 ISO镜像)。 ISO文件的制作有专用工具,
1,制作
mkisofs-r-o cdimage.iso/home/XXX/cddir
2,格式化
用mkiso制作的 iso已有文件系统 iso9660
3,可启动
无论是引导单系统还是引导多系统都还是用 mkisofs这个工具,只是加载到光盘的 boot loader不一样而已。当然也可以将 DOS的引导器(也就是它的引导扇区)或 windows的引导器( XP系统的是 ntldr)放入让光盘引导。下面只讨论 grub4dos的使用
1),用 grub.exe引导多系统
用 DOS加载 grub.exe引导多系统
2),将 grub安装到光盘 MBR
在制作时可用下面的命令直接生成可启动镜像,其中 grldr, menu.lst要放在 cddir目录下,也就是在 cd根目录。
mkisofs-R-b grldr-no-emul-boot-boot-load-seg 0x1000-o cdimage.iso cddir
mkisofs-R-b grldr-no-emul-boot-boot-load-size 4-o cdimage.iso cddir
PS,下面给出 dd命令和 mkisofs参数说明
dd(convert and copy files)
dd是 Linux/UNIX下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd的主要选项:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m
if=file
输入文件名,缺省为标准输入。
of=file
输出文件名,缺省为标准输出。
ibs=bytes
一次读入 bytes个字节(即一个块大小为 bytes个字节)。
obs=bytes
一次写 bytes个字节(即一个块大小为 bytes个字节)。
bs=bytes
同时设置读写块的大小为 bytes,可代替 ibs和 obs。
cbs=bytes
一次转换 bytes个字节,即转换缓冲区大小。
skip=blocks
从输入文件开头跳过 blocks个块后再开始复制。
seek=blocks
从输出文件开头跳过 blocks个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
count=blocks
仅拷贝 blocks个块,块大小等于 ibs指定的字节数。
conv=conversion[,conversion...]
用指定的参数转换文件。
转换参数:
ascii转换 EBCDIC为 ASCII。
ebcdic转换 ASCII为 EBCDIC。
ibm转换 ASCII为 alternate EBCDIC.
block把每一行转换为长度为 cbs的记录,不足部分用空格填充。
unblock
使每一行的长度都为 cbs,不足部分用空格填充。
lcase把大写字符转换为小写字符。
ucase把小写字符转换为大写字符。
swab交换输入的每对字节。 Unlike the
Unix dd, this works when an odd number of
bytes are read. If the input file contains
an odd number of bytes, the last byte is
simply copied(since there is nothing to
swap it with).
noerror
出错时不停止。
notrunc
不截短输出文件。
sync把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
由于 dd命令允许二进制方式读写,所以特别适合在原始物理设备上进行输入/输出。例如可以用下面的命令为软盘建立镜像文件:
dd if=/dev/fd0 of=disk.img bs=1440k
有趣的是,这个镜像文件能被 HD-Copy,Winimage等工具软件读出。再如把第一个硬盘的前 512个字节存为一个文件:
dd if=/dev/hda of=disk.mbr bs=512 count=1
mkisofs(make iso file system)
功能说明:建立ISO 9660映像文件。
语法:mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A应用程序ID][-abstract摘要文件][-b开机映像文件][-biblio ][-c开机文件名称][-C盘区编号,磁区编号][-copyright版权信息文件][-hide目录或文件名][-hide-joliet文件或目录名][-log-file记录文件][-m目录或文件名][-M开机映像文件][-o映像文件][-p数据处理人][-P光盘发行人][-sysid系统ID ][-V光盘ID][-volset卷册集ID][-volset-size光盘总数][-volset-seqno卷册序号][-x目录][目录或文件]
补充说明:mkisofs可将指定的目录与文件做成ISO 9660格式的映像文件,以供刻录光盘。
参数:
-a或--all mkisofs通常不处理备份文件。使用此参数可以把备份文件加到映像文件中。
-A应用程序ID或-appid应用程序ID指定光盘的应用程序ID。
-abstract摘要文件指定摘要文件的文件名。
-b开机映像文件或-eltorito-boot开机映像文件指定在制作可开机光盘时所需的开机映像文件。
-biblio指定ISBN文件的文件名,ISBN文件位于光盘根目录下,记录光盘的ISBN。
-c开机文件名称制作可开机光盘时,mkisofs会将开机映像文件中的全-eltorito-catalog开机文件名称全部内容作成一个文件。
-C盘区编号,盘区编号将许多节区合成一个映像文件时,必须使用此参数。
-copyright版权信息文件指定版权信息文件的文件名。
-d或-omit-period省略文件后的句号。
-D或-disable-deep-relocation ISO 9660最多只能处理8层的目录,超过8层的部分,RRIP会自动将它们设置成ISO 9660兼容的格式。使用-D参数可关闭此功能。
-f或-follow-links忽略符号连接。
-h显示帮助。
-hide目录或文件名使指定的目录或文件在ISO 9660或Rock RidgeExtensions的系统中隐藏。
-hide-joliet目录或文件名使指定的目录或文件在Joliet系统中隐藏。
-J或-joliet使用Joliet格式的目录与文件名称。
-l或-full-iso9660-filenames使用ISO 9660 32字符长度的文件名。
-L或-allow-leading-dots允许文件名的第一个字符为句号。
-log-file记录文件在执行过程中若有错误信息,预设会显示在屏幕上。
-m目录或文件名或-exclude目录或文件名指定的目录或文件名将不会房入映像文件中。
-M映像文件或-prev-session映像文件与指定的映像文件合并。
-N或-omit-version-number省略ISO 9660文件中的版本信息。
-o映像文件或-output映像文件指定映像文件的名称。
-p数据处理人或-preparer数据处理人记录光盘的数据处理人。
-print-size显示预估的文件系统大小。
-quiet执行时不显示任何信息。
-r或-rational-rock使用Rock Ridge Extensions,并开放全部文件的读取权限。
-R或-rock使用Rock Ridge Extensions。
-sysid系统ID指定光盘的系统ID。
-T或-translation-table建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上。
-v或-verbose执行时显示详细的信息。
-V光盘ID
linux硬盘检测健康状态
定期检查硬盘的健康状态是每个系统管理员必须要做的事情。说到硬盘的健康状态,这里就得先说一下S.M.A.R.T.了。
SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了普及
每一块硬盘(包括IDE、SCSI)在运行的时候,都会将自身的若干参数记录下来
这些参数包括型号、容量、温度、密度、扇区、寻道时间、传输、误码率等
硬盘运行了几千小时后,很多内在的物理参数都会发生变化
某一参数超过报警阈值,则说明硬盘接近损坏
此时硬盘依然在工作,如果用户不理睬这个报警继续使用
那么硬盘将变得非常不可靠,随时可能故障
SMART是和主板BIOS上相应功能配合的
要使用SMART,必须先进入到主板BIOS设置里边启动相关设置
一般从Pentium2级别起的主板,都支持SMART
BIOS启动以后,就是操作系统级别的事情了
很遗憾,Windows没有内置SMART相关工具(需要安装第三方工具软件)
好在Linux上很早就有了SMART支持了
如果把Linux装在VMware等虚拟机上,在系统启动时候可以看到有个服务启动报错:smartd
这个服务器就是smart的daemon进程(因为vmware虚拟机的硬盘不支持SMART,所以报错)
可以使用下面的命令来确认硬盘是否打开了SMART支持
复制代码
代码如下:
smartctl-i/dev/sda
正常情况下应该会得到下面这样的信息
复制代码
代码如下:
[root@localhost~]# smartctl-i/dev/sda
smartctl version 5.38 [i686-redhat-linux-gnu] Copyright(C) 2002-8 Bruce Allen
Home page is a href="
复制代码
代码如下:
=== START OF INFORMATION SECTION===
Model Family: Seagate Barracuda 7200.10 family
Device Model: ST3160815AS
Serial Number: 5RA6A1K9
Firmware Version: 4.AAB
User Capacity: 160,041,885,696 bytes
Device is: In smartctl database [for details use:-P show]
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Sat Jul 7 17:18:02 2012 CST
SMART support is: Available– device has SMART capability.
在这里,如果看到SMART support is: Disabled,则表示SMART未启用
如果我们需要执行如下命令,启动SMART:
复制代码
代码如下:
smartctl–smart=on–offlineauto=on–saveauto=on/dev/sda
查看硬盘当前的健康状态使用如下命令
复制代码
代码如下:
[root@localhost~]# smartctl-H/dev/sda
smartctl version 5.38 [i686-redhat-linux-gnu] Copyright(C) 2002-8 Bruce Allen
Home page is a href="
复制代码
代码如下:
=== START OF READ SMART DATA SECTION===
SMART overall-health self-assessment test result: PASSED
请注意result后边的结果:PASSED,这表示硬盘健康状态良好
如果这里显示Failure,那么最好立刻给服务器更换硬盘。
执行如下命令可以看到详细的参数:
复制代码
代码如下:
[root@localhost~]# smartctl-A/dev/sda
smartctl version 5.38 [i686-redhat-linux-gnu] Copyright(C) 2002-8 Bruce Allen
Home page is a href="
复制代码
代码如下:
=== START OF READ SMART DATA SECTION===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 100 253 006 Pre-fail Always– 0
3 Spin_Up_Time 0×0003 097 097 000 Pre-fail Always– 0
4 Start_Stop_Count 0×0032 100 100 020 Old_age Always– 818
5 Reallocated_Sector_Ct 0×0033 100 100 036 Pre-fail Always– 0
7 Seek_Error_Rate 0x000f 085 060 030 Pre-fail Always– 369003829
9 Power_On_Hours 0×0032 084 084 000 Old_age Always– 14527
10 Spin_Retry_Count 0×0013 100 100 097 Pre-fail Always– 0
12 Power_Cycle_Count 0×0032 100 100 020 Old_age Always– 817
187 Reported_Uncorrect 0×0032 100 100 000 Old_age Always– 0
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always– 0
190 Airflow_Temperature_Cel 0×0022 052 046 045 Old_age Always– 48(Lifetime Min/Max 47/52)
194 Temperature_Celsius 0×0022 048 054 000 Old_age Always– 48(0 11 0 0)
195 Hardware_ECC_Recovered 0x001a 074 062 000 Old_age Always– 188295533
197 Current_Pending_Sector 0×0012 100 100 000 Old_age Always– 0
198 Offline_Uncorrectable 0×0010 100 100 000 Old_age Offline– 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always– 0
200 Multi_Zone_Error_Rate 0×0000 100 253 000 Old_age Offline– 0
202 TA_Increase_Count 0×0032 100 253 000 Old_age Always– 0
上边列出的参数表中可供进行技术分析和参考,使用下边的命令可以输出完整结果:
复制代码
代码如下:
smartctl-a/dev/sda
lseek函数如何根据whence参数移动Linux文件的读写位置
Linux C中控制文件读写位置的函数lseek详解
在Linux C编程中,我们经常需要用到几个与文件操作密切相关的函数,如dup、open和fseek。首先,我们需要包含两个表头文件:<sys/types.h>和<unistd.h>。
关键的函数是 off_t lseek(int fildes, off_t offset, int whence);。这个函数用于控制已打开文件的读写位置。每当文件被打开时,读写位置通常位于文件的开始,除非使用O_APPEND模式打开,此时位置指向文件尾。read()和write()操作会相应地更新位置,而lseek()允许我们灵活地调整这个位置。
参数说明:
参数fildes:已打开文件的描述符,用于指定要操作的文件。
参数offset:偏移量,以字节为单位,表示要移动的位移。它可正可负,根据whence参数进行调整。
参数whence:一个枚举值,包括SEEK_SET(0)、SEEK_CUR(1)和SEEK_END(2)。它指示偏移量基于文件的哪个位置计算:文件头、当前位置或文件尾。
特别的使用场景包括:
lseek(int fildes, 0, SEEK_SET):将读写位置移动到文件开头。
lseek(int fildes, 0, SEEK_END):将读写位置移动到文件尾。
lseek(int fildes, 0, SEEK_CUR):获取当前的文件位置。
调用成功时,lseek()返回当前的读写位置,即距离文件开头的字节数。如果发生错误,返回-1,errno变量将记录错误代码。特别值得注意的是,Linux系统不允许lseek()对tty设备操作,尝试这样操作会返回ESPIPE错误。