我想将一个 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.tar
dd
并使用from读取/dev/rdsk/1s1
(我猜...0s0 是根磁盘)。您还可以尝试“fdisk /dev/rdsk/1s1”。- 附加到现有磁盘映像的末尾,并使用
dd
:D 读取。 (疯狂的...) - 可能需要使用 /dev/fd 或 /dev/rdsk 设备...
- 转换为
RAW
(VMDK
可由 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