所以我正在做一个项目,需要我在MINIX中创建一个RAM磁盘。问题如下:
您的任务是实现您自己的RAM磁盘,该磁盘可用作 用于存储需要快速访问的数据的位置。它应该有 每个人的读写权限,大小必须为 10MB。
我正在努力为 MINIX 寻找有关此主题的信息,因此我一直在尝试完成许多其他适用于 Linux 发行版的教程。
使用本教程,我在 MINIX 中完成了以下操作:
mknod /dev/ram0 c 0 1
chmod 777 /dev/ram0
然后mkfs -b 10240 -i 2000 -B 1024 /dev/ram0
产生错误:
mkfs:/dev/ram0:对于设备来说太大的块数。
即使我-b
参数 1 也会发生这种情况。当我键入mkfs /dev/ram0
时,出现以下错误:
在MKFS:此设备无法容纳文件系统。
教程中,我可以看到作者在 grub.conf 中将虚拟硬盘的大小增加到 16GB,但该文件不在/etc 中。
任何帮助将不胜感激,因为我正在努力通过这样的任务找到有关 MINIX 的信息。
我想通了:
在第 43 行
/usr/src/include/minix/dmap.h
添加#define FAST_DEV 6
.现在我们有一个符号来代表我们新设备的未成年人。这只会帮助我们避免幻数。
m_ioctl()
在
/usr/src/drivers/memory/memory.c
被硬编码以接收消息并创建 RAM 设备。要使其通用更改RAM_DEV
(查看函数,它作为某个函数的参数(更改为m_ptr->DEVICE
。 RAM_DEV
是 RAM 设备的次要设备编号,m_ptr->DEVICE
是要创建请求的次要设备编号(一段时间后会有意义(。此外,在此文件的第 28 行,您需要递增 NR_DEVS
的值,以允许程序能够创建我们现在要指定的新设备。然后在m_transfer()
函数中的第 143 行周围有一个开关,m_device
用于情况RAM_DEV
、KMEM_DEV
和BOOT_DEV
,在 BOOT_DEV
下面添加case FAST_DEV
。这将允许操作系统以与RAM_DEV
相同的方式将文件传输到我们的新设备/从我们的新设备传输文件。
在
/usr/src/servers/fs/main.c
您将看到main()
调用fs_init()
而又调用load_ram()
。load_ram()
是构造和发送消息(在m_ioctl()
中接收(的位置。要为我们的新设备创建消息,请在功能的开头添加以下内容:
m_out.m_type = DEV_IOCTL;
m_out.PROC_NR = FS_PROC_NR;
m_out.DEVICE = FAST_DEV; /* minor of fast device, this is why we had to make m_ioctl() generic */
m_out.REQUEST = MIOCRAMSIZE;
m_out.POSITION = 10485760 /* size of 10MB in bytes */
s = sendrec(MEM_PROCNR, &m_out); /* this sends the message */
现在重新编译:
cd /usr/src
make world
make install
and make all the directories that you worked in (just to be safe)
then shutdown
创建快速设备:
mknod /dev/fast b 1 6
编辑:
对load_ram((的澄清:
PRIVATE void load_ram(void)
{
register struct buf *bp, *bp1;
...
...
int s;
/* add the code here */
m_out.m_type = DEV_IOCTL;
etc
}
开关语句的说明:
case RAM_DEV:
case KMEM_DEV:
case BOOT_DEV:
case FAST_DEV: /* add this line */