你可能不知道,但是在你的英特尔系统里,除了你的主操作系统之外,还有一个操作系统在运行,这就是 MINIX。 早在今年 5月,EFF 就发布了一篇文章,介绍了自 2008 年以来,这十年间英特尔发布的所有处理器都运行了一个修改版的 MINIX 3,它被称之为“管理引擎(ME)”。 MINIX 运行在你的 CPU 的 “Ring -3”(负数 3) 层上,虽然是你的 CPU,但是你无权访问它。 这个事情有两个有趣或者说疯狂的地方: 首先,由于英特尔 CPU 的流行,所以,世界上最流行的操作系统恐怕不是 Windows,也不是 Linux,而是这个 MINIX——我们都是 MINIX 用户! 其次,由于你根本没权限访问到“Ring -3”,而这个 MINIX 却能够完全访问你的整个系统——这就是一个巨大的安全风险,运行权限极大,但是从不更新。
, NULL, minix_write_inode, minix_put_inode, minix_put_super, minix_write_super, minix_statfs (sb->u.minix_sb.s_mount_state & MINIX_VALID_FS)) printk ("MINIX-fs warning: remounting unchecked \n"); else if ((sb->u.minix_sb.s_mount_state & MINIX_ERROR_FS)) printk ("MINIX-fs warning: = (struct minix_super_block *) bh->b_data; // s是vfs的通用结构体,minix_sb是存储超级块信息的结构,s_ms是保存minix类型超级块的结构 s->u.minix_sb.s_imap[i] = NULL; for (i=0;i < MINIX_Z_MAP_SLOTS;i++) s->u.minix_sb.s_zmap[i
/* * linux/fs/minix/symlink.c * * Copyright (C) 1991, 1992 Linus Torvalds * * minix symlink segment.h> #include <linux/errno.h> #include <linux/sched.h> #include <linux/fs.h> #include <linux/minix_fs.h > #include <linux/stat.h> static int minix_readlink(struct inode *, char *, int); static int minix_follow_link */ NULL /* permission */ }; // 打开软链对应的文件 static int minix_follow_link(struct inode * dir, struct (bh = minix_bread(inode, 0, 0))) { iput(inode); iput(dir); return -EIO; } iput(inode)
-1; if (j < sb->u.minix_sb.s_firstdatazone || j >= sb->u.minix_sb.s_nzones) return 0; / (struct super_block *sb) { return (sb->u.minix_sb.s_nzones - count_used(sb->u.minix_sb.s_zmap,sb->u.minix_sb.s_zmap_blocks ,sb->u.minix_sb.s_nzones)) << sb->u.minix_sb.s_log_zone_size; } // 释放inode节点,并删除硬盘的inode节点 void (struct super_block *sb) { return sb->u.minix_sb.s_ninodes - count_used(sb->u.minix_sb.s_imap,sb->u.minix_sb.s_imap_blocks ,sb->u.minix_sb.s_ninodes); }
minix_sb_info * info) { struct minix_dir_entry * de; // 目录项 de = (struct minix_dir_entry *) (bh dir->i_sb) return NULL; // minix超级块 info = &dir->i_sb->u.minix_sb; // 文件名长度是否超过了限制 if (namelen *res_dir = (struct minix_dir_entry *) (bh->b_data + offset); // 匹配则返回 if (minix_match(namelen * de; struct minix_sb_info * info; if (! 0777; inode->i_op = &minix_symlink_inode_operations; name_block = minix_bread(inode,0,1); if (!
” 今天想跟大家介绍一款曾经影响了无数开发者的操作系统:Minix。 1987 的今天,Minix 诞生了。 Minix 介绍 Minix 是 Mini Unix 的缩写,一个迷你版类 Unix 操作系统 (约 300MB)。 Minix 和 Linux Linux 是 Linus Torvalds 受到 Minix 的影响而作成的(Linus 不喜欢他的 386 计算机上的 MS-DOS 操作系统,而安装了 Minix,并以它为样本开发了原始的 在设计上,Linux 则和 Minix 相差很大,在 Linux 系统还没有自己的原生文件系统之前,曾采用 Minix 的文件系统。 Minix 的作者和支持者认为使用宏内核是技术上的退步,而 Linux 的支持者认为 Minix 本身没有实用性。
Minix介绍 这一款曾经影响了无数开发者的操作系统:Minix诞生于1987年,应该比我们在座的大部分读者年龄还要大,Minix全称Mini Unix,是一款迷你版类 Unix 操作系统 (约 300MB 他说,英特尔的工程团队在几年前接触了他,询问了 MINIX 3 大量的技术问题,要求他对 MINIX 3 进行大量改变,减少内存占用,选择性的关闭不需要的功能。 他只是希望英特尔在部署了 MINIX 3 之后能通知他一下,这只是礼貌问题。 总结:免责声明,雨我无瓜。 Minix是Linux干爹? 在设计上,Linux 则和 Minix 相差很大,在 Linux 系统还没有自己的原生文件系统之前,曾采用 Minix 的文件系统。 Minix 的作者和支持者认为使用宏内核是技术上的退步,而 Linux 的支持者认为 Minix 本身没有实用性。
三、MINIX 文件系统实现 现在,我们以 MINIX 文件系统来详细介绍文件系统的设计原理。由于 MINIX 文件系统非常简单,所以适合用于教学使用。 1. MINIX 文件与目录 在 MINIX 文件系统中,以 minix2_inode 对象来描述一个文件。 在 MINIX 文件系统中,目录也是使用 minix2_inode 对象来描述的。那么怎么区分文件和目录呢? MINIX 文件系统格式化 现在,我们基本了解 MINIX 文件系统对文件与目录的存储方式了,接下来我们将会介绍 MINIX 文件系统怎么管理硬盘中的文件和目录,也就是我们常说的 格式化。 读取文件过程 了解了 MINIX 文件系统的结构组织,现在我们介绍一下 MINIX 文件系统读取文件的过程。
1987 的今天,Minix 诞生了 Minix 介绍 Minix 是 Mini Unix 的缩写,一个迷你版类 Unix 操作系统(约 300MB)。 Minix 一开始向使用者收取极低的授权费,直到 2004 年,塔能鲍姆重新架构与设计了整个系统,更进一步的将程序模块化,推出 MINIX 3。重新以 BSD 许可协议发布,成为开放源代码软件。 Minix 和 Linux Linux 是Linus Torvalds受到 Minix 的影响而作成的(Linus 不喜欢他的 386 计算机上的 MS-DOS 操作系统,而安装了 Minix,并以它为样本开发了原始的 在设计上,Linux 则和 Minix 相差很大,在 Linux 系统还没有自己的原生文件系统之前,曾采用 Minix 的文件系统。 Minix 的作者和支持者认为使用宏内核是技术上的退步,而 Linux 的支持者认为 Minix 本身没有实用性。
Tanenbaum开发了Minix操作系统,是Unix的缩小版,用于学生学习操作系统原理,很多技术大牛希望改进Minix,但遭到了AST教授的丑拒,他认为Minix就是为了教学,让学生一学期学完,并不想被加入杂乱的东西 Linus逐渐认识到了Minix的诸多限制,产生了自己编写一个新的操作系统的想法。 1991年4月13日,Linus在comp.os.minix上发布信息说自己成功将bash移植到了Minix上,而且已经爱不释手,离不开这个shell软件了。 1991年8月25日,Linus在comp.os.minix上发布了“What would you like to see in minix?” 1991年10月5日,Linus在comp.os.minix上发布消息,正式向外宣布Linux内核诞生(Free minix-like kernel sources for 386-AT)。
LINUX与Minix是最相似的,由于它很小而且不是非常复杂,因此易于理解(嗯…)。LINUX是基于Minix编写的,因此有相当多的相同点,任何Minix黑客在使用LINUX的时候都感觉非常熟悉。 不过,没有在项目中使用Minix代码,因此Minix版权没有限制到这个新系统。它也是完全免费的,而且它的版权非常宽松。因此不像使用Minix,它不需要几兆字节大小的区别。 LINUX与Minix使用相同类型的节点,所以使用Minix的mknod命令创建下面的设备:节点号与在Minix中相同。 不过,没有在项目中使用Minix代码,因此Minix版权没有限制到这个新系统。它也是完全免费的,而且它的版权非常宽松。因此不像使用Minix,它不需要几兆字节大小的区别。 LINUX与Minix使用相同类型的节点,所以使用Minix的mknod命令创建下面的设备:节点号与在Minix中相同。
LINUX与Minix是最相似的,由于它很小而且不是非常复杂,因此易于理解(嗯…)。LINUX是基于Minix编写的,因此有相当多的相同点,任何Minix黑客在使用LINUX的时候都感觉非常熟悉。 不过,没有在项目中使用Minix代码,因此Minix版权没有限制到这个新系统。它也是完全免费的,而且它的版权非常宽松。因此不像使用Minix,它不需要几兆字节大小的区别。 LINUX会发展成为一个自给自足的系统,现在需要Minix-386才能正常运行。你需要Minix让初始化启动文件系统,和编译OS二进制。 LINUX与Minix使用相同类型的节点,所以使用Minix的mknod命令创建下面的设备:节点号与在Minix中相同。 /dev/tty /dev/tty[0-2] /dev/hd[0-9] 4. 尽管LINUX与Minix非常相似,但Minix程序通常并不会比为其他nuix设计的程序更容易移植。因此,我不建议从一个特定程序的Minix版本开始,而应该尝试从头开始移植‘’virgin‘’程序。
用于教学的Minix在Unix收回版权的背景下,出于学院教学的需要,荷兰阿姆斯特丹的Vrije大学计算机科学系的Andrew S. Tanenbaum教授开发了一个“类Unix”系统:Minix。 受到启发的LinuxMinix最有名的学生用户是Linus Torvalds,他在芬兰的赫尔辛基大学用Minix操作平台建立了一个新的操作系统的内核,他把它叫做Linux。 Linux是 Linus Torvalds受到Minix的影响而开发的(Linus Torvalds不喜欢他的386电脑上的MS-DOS操作系统,安装了Minix,并以它为样本开发了原始的Linux内核
) MINIX是一个轻量小型并采用微内核(Micro-Kernel)架构的类Unix操作系统,是安德鲁·斯图尔特·塔能鲍姆为在计算机科学用作教学而设计的。 他对MINIX只允许在教育上使用很不满(在当时MINIX不允许被用作任何商业使用),于是他便开始写他自己的操作系统,这就是后来的Linux内核。 林纳斯·托瓦兹这人也是很厉害的呢! 林纳斯·托瓦兹开始在MINIX上开发Linux内核,为MINIX写的软件也可以在Linux内核上使用。 后来使用GNU软件代替MINIX的软件,因为使用从GNU系统来的源代码可以自由使用,这对Linux的发展有益。使用GNU GPL协议的源代码可以被其他项目所使用,只要这些项目使用同样的协议发布。 (0.02版)发布,同时这位芬兰赫尔辛基的大学生在comp.os.minix上发布一则消息 Hello everybody out there using minix- I'm doing a (free
LINUX与Minix是最相似的,由于它很小而且不是非常复杂,因此易于理解(嗯…)。LINUX是基于Minix编写的,因此有相当多的相同点,任何Minix黑客在使用LINUX的时候都感觉非常熟悉。 不过,没有在项目中使用Minix代码,因此Minix版权没有限制到这个新系统。它也是完全免费的,而且它的版权非常宽松。因此不像使用Minix,它不需要几兆字节大小的区别。 LINUX会发展成为一个自给自足的系统,现在需要Minix-386才能正常运行。你需要Minix让初始化启动文件系统,和编译OS二进制。 LINUX与Minix使用相同类型的节点,所以使用Minix的mknod命令创建下面的设备:节点号与在Minix中相同。 /dev/tty /dev/tty[0-2] /dev/hd[0-9] 4. 尽管LINUX与Minix非常相似,但Minix程序通常并不会比为其他nuix设计的程序更容易移植。因此,我不建议从一个特定程序的Minix版本开始,而应该尝试从头开始移植‘’virgin‘’程序。
由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的美国人AndrewS.Tanenbaum编写了一个操作系统,名为MINIX,为了向学生讲述操作系统内部工作原理。 MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。 全世界学计算机的学生都通过钻研MINIX源代码来了解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个,在吸收了MINIX精华的基础上,Linus于 1989年,Andrew S.Tanenbaum将Minix系统运行于x86的PC平台。 1990年,芬兰赫尔辛基大学学生Linux Torvalds首次接触Minix系统。 1991年,Linux Torvalds开始在Minix上编写各种驱动程序等操作系统内核组件。
Tanenbaum教授当初为了教学方便,写了个操作系统叫做MINIX,一种类似UNIX的操作系统(顾名思义MINI UNIX)。 MINIX对于大众来说知名度有点不高,不过一说它是Linus当初开发Linux的灵感源泉,它就相当了不起了(看官,请您配合发出一声情不自禁的“哦“,要自然哦)。 Intel请Tanenbaum教授对MINIX做进一步的精简、以便商用的事情在教授的公开信里说得挺清楚了,有兴趣的看看公开信的全文,这里不再赘述了。 Intel把MINIX用在了什么地方呢? 其中一颗北桥芯片上内嵌了一个CPU,连同在这个CPU上运行的软件(MINIX就是运行其上的操作系统),一起构成了ME(Management Engine)。 黑客们在对Intel ME中的软件进行逆向分析的时候,发现了一些特有的字符串,而这些字符串被人熟识就是因为其存在于MINIX的源代码中,这才把MINIX的作者Tanenbaum教授置于风口浪尖,不得不写了一封公开信撇清自己
Minix,Andrew S. Tanenbaum编写的学习工具,已经在大学中作为教学工具使用了很多年了。BSD-386系统是附带源码的,但是有版权限制,而且要花很多钱。 Linux与Minix是最相似的,由于它很小而且不是非常复杂,因此易于理解。LINUX是基于Minix编写的,因此有相当多的相同点,任何Minix黑客在使用LINUX的时候都感觉非常熟悉。 不过,没有在项目中使用Minix代码,因此Minix版权没有限制到这个新系统。它也是完全免费的,而且它的版权非常宽松。因此不像使用Minix,它不需要几兆字节大小的区别。 ?
他以小型UNIX(mini-UNIX)之意,将它称为MINIX。MINIX最初发布于1987年,开放全部源代码给大学教学和研究工作。2000年重新改为BSD授权,成为自由和开放源码软件。 在当时Minix被用于广泛应用于教学后,在芬兰的一位大学生林纳斯·托瓦兹,根据Minix开发出了Linux操作系统的内核 ,所以Linux是根据Minix开发的,而Minix间接源于 Unix。 林纳斯·托瓦兹把Linux操作系统的内核发布到comp.os.minix,提供给别人下载。
此前老谭也曾开源一个类Unix的OS,名曰MINIX(表示Mini Unix)。而MINIX则基于微内核。 在论战之前这一老一小,其实也并非没有交集,老谭曾出版过讲解Unix以及操作系统的书籍,并随书附赠了MINIX的源码。小林在发明Linux之前,确有通过这本书和MINIX的代码进行学习操作系统的知识。 比如MINIX其实只有三个系统调用(的封装函数): 发送:_send() 接收:_receive() 发收一体:_sendrec() (基于老版本MINIX,最新的MINIX不清楚是否扩展了) 这当然不是说 MINIX就不支持open()、read()、write()和fork()了。 只不过是在MINIX系统上它们都是本质都是通过_send()、_receive()、_sendrec() 实现的。