dd使用或一次将文件写入一张软盘split:

dd使用或一次将文件写入一张软盘split:

我想将一个 70MB 的大文件传输到运行古老的 unix(at&t 2.1 ) 的虚拟机,没有 cdrom 驱动程序,没有 ufs 磁盘(当我尝试挂载 systemV ufs 时 linux 给我错误,使用 ufs 43bsd 可以),没有软盘(不存在 70MB 软盘..)所以我选择 minicom+kermit 在 at&t 方面我给

kermit -g file.tar

在linux端我打开minicom

ctrl+a+s

选择 kermit,选择 file.tar,哇...什么也没有发生。在 at&t 串行屏幕上我看到

/usr/local/bin/kermit -g file.tar                                                           
Return to your local Kermit and give a SERVER command.                                                                  

KERMIT READY TO GET...                                                                                                  
3 EToo many retries_N"U1@            

有什么解决办法吗?

答案1

我用过盖姆+QEmu监控器使用 dd 装载软盘并读取原始数据。

dd使用或一次将文件写入一张软盘split

注意:您可能需要分成 1474560 个卷(/dev/rdsk/f03ht 看起来就是这样)。

compress您也可以选择尝试使用。

# Archive the files you wish to send using `tar` (supported on SYSV). 
$ ls -la test.tar
----------+ 1 cmihai None 5901312 Dec  2 20:55 test.tar

# Split into 1.44MB volumes
$ split -b 1478656 test.tar test_floppy_

$ ls -la test_floppy*
-rw-r--r--+ 1 cmihai None 1478656 Dec  2 21:10 test_floppy_aa
-rw-r--r--+ 1 cmihai None 1478656 Dec  2 21:10 test_floppy_ab
-rw-r--r--+ 1 cmihai None 1478656 Dec  2 21:10 test_floppy_ac
-rw-r--r--+ 1 cmihai None 1465344 Dec  2 21:10 test_floppy_ad

将软盘装入qemu.

Ctrl+ Alt+ 2inqemu以使用 qemu 监视器。

change floppy0 test_floppy_aa
info block

Ctrl按+ Alt+返回终端1

注意:我们可能应该读取原始设备 /dev/rdsk/f03ht 而不是块设备...来测试。

dd if=/dev/dsk/f03ht of=test_floppy_aa
dd if=/dev/dsk/f03ht of=test_floppy_ab
...

打开包装

cat a b c | tar -tvt test_floppy_* # test..
cat a b c | tar -xvt test_floppy_*

其他想法

  • qemu-system-i386 -hda sysv.img -hdb test.tardd并使用from读取/dev/rdsk/1s1(我猜...0s0 是根磁盘)。您还可以尝试“fdisk /dev/rdsk/1s1”。
  • 附加到现有磁盘映像的末尾,并使用dd:D 读取。 (疯狂的...)
  • 可能需要使用 /dev/fd 或 /dev/rdsk 设备...
  • 转换为RAWVMDK可由 VMware 和 VirtualBox 使用):qemu-img convert -O vmdk sysv.img sysv.vmdk.现在我们可以尝试看看是否支持 VMware 或 VirtualBox 网卡驱动程序...
  • kermit//一旦我找到了tip就会尝试cu软盘其中包含它们以及/dev/我需要使用的...

笔记:

  • tar可以直接从/dev/dsk/f03ht读取。前任:tar -tvf /dev/dsk/f03ht。也许应该尝试创建多卷软盘并忘记 dd 部分... WIP :-)。

答案2

最后我成功了,首先我认为 kermit 程序是“嵌入”在 Minicom 中的,因为它没有给出有关路径的错误(除非你给出命令“run kermit”)。

快速指南:

客户端:Slackware 15 服务器:没有网络的 Unix System V SVR4,因为 qemu 不支持 WD8003 板,在 libvirt 上

在客户端安装 ckermit

sudo sbopkg -B -i ckermit

在服务器上激活 getty

vi /etc/inittab

1r:12345:respawn:/etc/getty tty00 19200

do 初始化 q

init q

在 CLIENT 上,我们需要哪个序列正在使用旧的良好 SVR4

virsh ttyconsole Unixvm
/dev/pts/7

在 CLIENT 上我们与 minicom 连接

minicom -D /dev/pts/7

登录到 Unix SERVER 后,我们在 minicom 上配置 minicom 路径(ctrl+o,配置路径等..)

在 SERVER 上我们有 kermit 程序(在网上搜索 Unix 的二进制文件)

./KERMIT
C-Kermit, 4F(077) 1 Apr 89, AT&T System III/System V
Type ? for help
C-Kermit>server

C-Kermit server starting.  Return to your local machine by typing
its escape sequence for closing the connection, and issue further
commands from there.  To shut down the C-Kermit server, issue the
FINISH or BYE command and then reconnect.

在客户端 minicom 上按 ctrl+a 然后按 s,选择 minicom,选择要传输的文件路径

在此输入图像描述

慢..但是工作!

提醒一下,在 SVR4 上默认文件限制为 2048 kbytes,因此超过 2mb 的文件传输将会失败,解决方案是在启动 kermit 之前使用 ulimit(适用于 ksh,不适用于 bash)

ulimit -f yourvalue

相关内容