无忧启动论坛

标题: grub4dos 046a 如何设置变量为软盘(fd0)的大小? [打印本页]

作者: liuhuan22    时间: 2016-11-3 23:36
标题: grub4dos 046a 如何设置变量为软盘(fd0)的大小?
geometry (fd0)命令可以得到软盘的总扇区数和扇区大小,请问 如何存为变量?

作者: liuhuan22    时间: 2016-11-3 23:39
有知道的大神吗?
作者: chenall    时间: 2016-11-4 08:45
印像中cat命令可以获取某个分区或磁盘的总扇区数的,扇区大小都是512
作者: 不知    时间: 2016-11-4 11:41
本帖最后由 不知 于 2016-11-4 11:43 编辑

用了一种特别麻烦的方式,实现了字符串的提取。主要是cat --locate=String 命令不知怎么计算的(也有可能是我用的版本有问题),有时直接数的和命令运行结果不一样,有时又一样,重复多次才能得到正确的结果。

得到字符串后,用calc命令得到对应的数,如
得到size: calc %size%
得到count : calc %count%*%size%

应该有直接的方法,只是cat的问题没法直接复制。

getifo内容:

!BAT
set device=%1
if ""=="%device%" goto help

geometry %device%  > (md)0x80000+1
cat --locate=drive --replace=@@@@@@@@@@ (md)0x80000+1
cat --locate=: --replace=@@@@@@@@ (md)0x80000+1
cat --locate=, --replace=@@@@@@@@@@@@@@@@@@@ (md)0x80000+1

cat --locate== (md)0x80000+1 | set skip=
dd if=(md)0x80000+1 of=(md)0x80000+1 bs=1 skip=%skip%



cat --locate== (md)0x80000+1 | set skip=
dd if=(md)0x80000+1 of=(md)0x80000+1 bs=1 skip=%skip%



cat --locate== (md)0x80000+1 | set skip=
dd if=(md)0x80000+1 of=(md)0x80000+1 bs=1 skip=%skip%



cat --locate== (md)0x80000+1 | set skip=
dd if=(md)0x80000+1 of=(md)0x80000+1 bs=1 skip=%skip%
dd if=(md)0x80000+1 of=(md)0x80000+1 bs=1 skip=1



cat --locate=/ (md)0x80000+1 | set skip=
dd if=(md)0x80000+1 of=(md)0x80001+1 bs=1 skip=%skip%
dd if=(md)0x80001+1 of=(md)0x80001+1 bs=1 skip=1


cat (md)0x80000+1
cat (md)0x80001+1

cat (md)0x80000+1 | set count=
cat (md)0x80001+1 | set size=

echo Sector Count=%count%
echo Sector Size=%size%
















goto eof


:help
echo getifo device
echo such as getifo (fd0)


:eof

1.jpg (74.43 KB, 下载次数: 61)

1.jpg

getifo.7z

401 Bytes, 下载次数: 0, 下载积分: 无忧币 -2


作者: liuhuan22    时间: 2016-11-4 12:19
chenall 发表于 2016-11-4 08:45
印像中cat命令可以获取某个分区或磁盘的总扇区数的,扇区大小都是512

cat  --length=0  (fd0)-1


这个命令不行的
作者: liuhuan22    时间: 2016-11-4 12:19
chenall 发表于 2016-11-4 08:45
印像中cat命令可以获取某个分区或磁盘的总扇区数的,扇区大小都是512

cat  --length=0  (fd0)-1


这个命令不行的
作者: 不知    时间: 2016-11-4 13:35
liuhuan22 发表于 2016-11-4 12:19
cat  --length=0  (fd0)-1



我也是在查cat的帮助,有一个定位字符串的功能,但是有时和预期的(自己数)不一样
作者: chenall    时间: 2016-11-4 13:47
印像中是有的,
可以试试以下命令看看区别,具体的好久我也忘了^_^
root (fd0)
cat --length=0 ()+1
cat --length=0 ()-1

另外如果(fd0)不大的话可以用rd设备
map (fd0) (rd)
这样就可以通过rd-base和rd-size得到想要的结果。
关于rdbase和rdsize自己看一下readme,有具体的介绍。

作者: liuhuan22    时间: 2016-11-4 15:02
chenall 发表于 2016-11-4 13:47
印像中是有的,
可以试试以下命令看看区别,具体的好久我也忘了^_^
root (fd0)

谢谢,不过我不敢这么写代码,稳定性不好说
作者: 不知    时间: 2016-11-4 15:20
本帖最后由 不知 于 2016-11-4 15:25 编辑



确实,这只是试验而已,若有内存盘就不好说了。位置最好去查一下G4D说明,最主要是G4D没有好用的字符串处理命令。
作者: 不点    时间: 2016-11-4 18:03
说说我的看法,说错了莫怪。

软盘这玩意,那可是不敢随便乱碰的,你碰它,就可能死机。记不记得?我们的 find 命令还得添上 --ignore-floppies 才敢用。为什么呢?不敢碰软盘啊!在那些 buggy 的电脑上,你一碰软盘,就死机了。就是说,不敢以任何方式去访问软盘、查看软盘;一碰它,就遭殃!

以上说的是 ROM BIOS 提供的软盘是不敢乱碰的。如果是 grub4dos 创建的虚拟软盘,那是可以碰的,不会有问题。然而,你的虚拟软盘在你创建它的时候,就知道它的大小了,你那时候早早记住它的大小不就 OK 了吗?根本不需要什么复杂的命令啊。



作者: liuhuan22    时间: 2016-11-5 10:44
不点 发表于 2016-11-4 18:03
说说我的看法,说错了莫怪。

软盘这玩意,那可是不敢随便乱碰的,你碰它,就可能死机。记不记得?我们的 ...

f6img 创建的软盘,不知道多大。。。。。。
作者: 不点    时间: 2016-11-5 13:34
liuhuan22 发表于 2016-11-5 10:44
f6img 创建的软盘,不知道多大。。。。。。

在 windows 上,鼠标指向这个 img 文件,点击右键,弹出菜单,再点击“属性”,即可看到它的大小了。
作者: liuhuan22    时间: 2016-11-5 18:17
不点 发表于 2016-11-5 13:34
在 windows 上,鼠标指向这个 img 文件,点击右键,弹出菜单,再点击“属性”,即可看到它的大小了。

忘记进系统的方法了,谢谢大师提醒
作者: liuhuan22    时间: 2016-11-6 15:23
C:\>r:\dd  if=\\.\A:   of=z:\a.img
rawwrite dd for windows version 0.6beta3.
Written by John Newbigin <jn@it.swin.edu.au>
This program is covered by terms of the GPL Version 2.

2880+0 records in
2880+0 records out

C:\>r:\dd.exe  if=\\.\b:   of=z:\b.img
rawwrite dd for windows version 0.6beta3.
Written by John Newbigin <jn@it.swin.edu.au>
This program is covered by terms of the GPL Version 2.

2880+0 records in
2880+0 records out

C:\>sc qc firadisk
[SC] QueryServiceConfig 成功

SERVICE_NAME: firadisk
        TYPE               : 1  KERNEL_DRIVER
        START_TYPE         : 0   BOOT_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : \SystemRoot\system32\DRIVERS\firadisk.sys
        LOAD_ORDER_GROUP   : Boot Bus Extender
        TAG                : 8
        DISPLAY_NAME       : FiraDisk Driver
        DEPENDENCIES       :
        SERVICE_START_NAME :

C:\>

作者: liuhuan22    时间: 2016-11-8 16:56
map --mem /t.img (0)        
map --hook
       
read 0x8320
得到0x168000就是1440kb大小




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3