问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

操作系统课程设计《设计内核同步原语》

发布网友 发布时间:2022-04-22 06:44

我来回答

1个回答

热心网友 时间:2022-06-16 18:32

  这里介绍linux内核修改

  内核配置过程比较烦琐,但是配置的适当与否与日后linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置。
  
  配置内核可以根据需要与爱好使用下面命令中的一个:
  #make config(基于文本的最为传统的配置界面,不推荐使用)
  #make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
  #make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
  #make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
  这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,那么就推荐你使用这个命令
  如果你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了
  选择相应的配置时,有三种选择,它们分别代表的含义如下:
  Y--将该功能编译进内核
  N--不将该功能编译进内核
  M--将该功能编译成可以在需要时动态插入到内核中的模块
  如果使用的是make xconfig,使用鼠标就可以选择对应的选项。如果使用的是 make menuconfig,则需要使用空格键进行选取。你会发现在每一个选项前都有个括号, 但有的是中括号有的是尖括号,还有一种圆括号。用空格键选择时可以发现,中括号里要么是空,要么是"*",而尖括号里可以是空,"*"和"M"。这表示前者对应的项要么不要,要么编译到内核里;后者则多一样选择,可以编译成模块。而圆括号的内容是要你在所提供的几个选项中选择一项。
  在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该如何选取这些选项。实际上在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。
  至于选项,因为比较复杂,只是简单做一介绍,编译时应视具体情况,参考帮助的内容再加以选择。
  1. Code maturity level options
  代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。
  2. Loadable mole support
  对模块的支持。这里面有三项:
  Enable loadable mole support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
  Set version inFORMation on all mole symbols:可以不选它。
  Kernel mole loader:让内核在启动时有自己装入必需模块的能力,建议选上。
  3. Processor type and features
  CPU类型。内容蛮多的,不一一介绍了,有关的几个如下:
  Processor family:根据你自己的情况选择CPU类型。
  High Memory Support:大容量内存的支持。可以支持到4G、64G,一般可以不选。
  Math emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已不用了。
  MTTR support:MTTR支持。可不选。
  Symmetric multi-processing support:对称多处理支持。除非你富到有多个CPU,否则就不用选了。
  4. General setup
  这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项:
  Networking support:网络支持。必须,没有网卡也建议你选上。
  PCI support:PCI支持。如果使用了PCI的卡,当然必选。
  PCI access mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。
  Support for hot-pluggabel devices:热插拔设备支持。支持的不是太好,可不选。
  PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必选了。
  System V IPC
  BSD Process Accounting
  Sysctl support:以上三项是有关进程处理/IPC调用的,主要就是System V和BSD两种风格。如果你不是使用BSD,就按照缺省吧。
  Power Management support:电源管理支持。
  Advanced Power Management BIOS support:高级电源管理BIOS支持。
  5. Memory Technology Device(MTD)
  MTD设备支持。可不选。
  6. Parallel port support
  并口支持。如果不打算使用串口,就别选了。
  7. Plug and Play configuration
  即插即用支持。虽然linux对即插即用目前支持的不如Windows好,但是还是选上吧,这样你可以拔下鼠标之类的体验一下Linux下即插即用的感觉。
  8. Block devices
  块设备支持。这个就得针对自己的情况来选了,简单说明一下吧:
  Normal PC floppy disk support:普通PC软盘支持。这个应该必选。
  XT hard disk support:
  Compaq SMART2 support:
  Mulex DAC960/DAC1100 PCI RAID Controller support:RAID镜像用的。
  Loopback device support:
  Network block device support:网络块设备支持。如果想访问网上邻居的东西,就选上。
  Logical volume manager(LVM)support:逻辑卷管理支持。
  Multiple devices driver support:多设备驱动支持。
  RAM disk support:RAM盘支持。
  9. Networking options
  网络选项。这里配置的是网络协议。内容太多了,不一一介绍了,自己看吧,如果你对网络协议有所了解的话,应该可以看懂的。如果懒得看,使用缺省选项(肯定要选中TCP/IP networking哦)就可以了。让我们看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的协议好多哦,IPv6也支持了,Qos and/or fair queueing(服务质量公平调度)也支持了,还有kHTTPd,不过这些都还在实验阶段。
  10. Telephony Support
  电话支持。linux下可以支持电话卡,这样你就可以在IP上使用普通的电话提供语音服务了。记住,电话卡可和modem没有任何关系哦。
  11. ATA/IDE/MFM/RLL support
  这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺省的选项吧,如果你使用了比较特殊的设备,比如PCMCIA等,就到里面自己找相应的选项吧。
  12. SCSI support
  SCSI设备的支持。我没有SCSI的设备,所以根本就不用选,如果你用了SCSI的硬盘/光驱/磁带等设备,自己找好了。
  13. Fusion MPT device support
  需要Fusion MPT兼容PCI适配器,不用选。
  14. I2O device support
  需要I2O接口适配器支持,在智能Input/Output(I2O)体系接口中使用。
  15. Network device support
  网络设备支持。上面选好协议了,现在该选设备了,可想而知,内容肯定多得很。还好还好,里面大概分类了,有ARCnet设备、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support几大类。我用的是10/100M的以太网,看来只需要选则这个了。还是10/100M的以太网设备熟悉,内容虽然多,一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,为了免得麻烦,编译到内核里面好了,不选M了,选Y。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己到厂商那里去要驱动了。
  16. Amateur Radio support
  配置业余无线广播。
  17. IrDA(infrared)support
  红外线支持。
  18. ISDN subsystem
  如果你使用ISDN上网,这个就必不可少了。
  19. Old CD-ROM drivers(not SCSI、not IDE)
  做的可真周到,原来那些非SCSI/IDE口的光驱谁还在用啊,自己选吧,用IDE的CD-ROM不用选。
  20. Character devices
  字符设备。这个内容又太多了,先使用缺省设置,需要的话自己就修改。把大类介绍一下吧:
  I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For linux,该项必选。
  Mice:鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根据需要选择。
  Joysticks:手柄。即使在linux下把手柄驱动起来意义也不是太大,游戏太少了。
  Watchdog Cards:虽然称为Cards,这个可以用纯软件来实现,当然也有硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。
  Video For linux:支持有关的音频/视频卡。
  Ftape, the floppy tape device driver:
  PCMCIA character device support:
  21. File systems
  文件系统。内容又太多了,老法子,在缺省选项的基础上进行修改。介绍以下几项:
  Quota support:Quota可以*每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。
  DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。
  ISO 9660 CD-ROM file system support:光盘使用的就是ISO 9660的文件格式。
  NTFS file system support:ntfs是NT使用的文件格式。
  /proc file system support:/proc文件系统是linux提供给用户和系统进行交互的通道,建议选上,否则有些功能没法正确执行。
  还有另外三个大类都归到这儿了:Network File Systems(网络文件系统)、Partition Types(分区类型)、Native Language Support(本地语言支持)。值得一提的是Network File Systems里面的两种:NFS和SMB分别是linux和Windows相互以网络邻居的形式访问对方所使用的文件系统,根据需要加以选择。
  22. Console drivers
  控制台驱动。一般使用VGA text console就可以了,标准的80*25的文本控制台。
  23. Sound
  声卡驱动。如果你能在列表中找到声卡驱动那自然最好,否则就试试OSS了。
  24. USB supprot
  USB支持。很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在linux都可以得到支持,根据需要自行选择。
  25. Kernel hacking
  配置了这个,即使在系统崩溃时,你也可以进行一定的工作了。普通用户是用不着这个功能的。
  配置完后,存盘退出,当然你也可以把现在的配置文件保存起来,这样下次再配置的时候就省力气了。
  接下来是编译,输入以下命令。
  #make dep
  #make clean
  #make bzImage或make zImage
  #make moles
  #make moles_install
  #depmod -a
  第一个命令make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误;make zImage和make bzImage则实现完全编译内核,二者生成的内核都是使用gzip压缩的,只要使用一个就够了,它们的区别在于使用make bzImage可以生成大一点的内核。建议大家使用make bzImage命令。
  后面三个命令只有在你进行配置的过程中,在回答Enable loadable mole support (CONFIG_MODULES)时选了"Yes"才是必要的,make moles和make moles_install分别生成相应的模块和把模块拷贝到需要的目录中。
  严格说来,depmod -a命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。
  更新
  经过以上的步骤,我们终于得到了新版本的内核。为了能够使用新版本的内核,我们还需要做一些改动:
  #cp /usr/src/linux/System.map /boot/System.map-2.4.18
  #cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18
  以上这两个文件是我们刚才编译时新生成的。下面修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件:
  #cd /boot;rm -f System.map vmlinuz
  #ln -s vmlinuz-2.4.18 vmlinuz
  #ln -s System.map-2.4.18 System.map
  七、修改启动管理器
  如果用LILO,修改/etc/lilo.conf,添加以下项:
  image=/boot/vmlinuz-2.4.18
  label=linux240
  read-only
  root=/dev/hda2
  其中root=/dev/hda2一行要根据需要自行加以修改。
  运行:
  #/sbin/lilo -v
  确认对/etc/lilo.conf的编辑无误,现在重新启动系统:
  #shutdown -r now
  如果是用Grub启动管理器,则添加如下几项即可。
  title Red Hat linux (2.4.18)
  root (hd0,0)
  kernel /vmlinuz-2.4.18 ro root=/dev/hda2
  Grub不需再次调用命令,自动生效。
  重启以后就可以用新内核了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如果银行拒贷有哪些办法 小天鹅滚筒洗衣机水位多少合适 阴阳师百闻牌攻略大全 百闻牌式神卡组阵容大全 阴阳师百闻牌三大妖狐阵容推荐 妖狐流派怎么搭配?-新手攻略-安族网... 阴阳师百闻牌妖狐快攻阵容 怎么搭配攻略推荐 阴阳师百闻牌妖狐技能攻略 妖狐属性及卡组搭配推荐-新手攻略-安族网... 阴阳师百闻牌妖狐最强卡组 阵容怎么搭配攻略 阴阳师百闻牌妖狐卡组推荐 怎么搭配攻略分享 带鹏字的公司名字大全 鹏字开头公司起名 叶罗丽娃娃玩具店在哪 linux编程SHELL编程实验报告 操作系统课程设计 设计目的:熟悉Linux编程环境,... 嵌入式Linux课程设计源代码 操作系统课程设计——为LINUX 设计一个简单的二级文... 操作系统课程设计(linux) Linux课程设计实施方案 linux的课程设计,急!!!!!!! 《Linux》课程设计 帮忙做下linux课程设计, linux system课程设计的摘要怎么写 屏幕出现竖条纹如何解决 免费的语音交友平台有没有? 速爱交友软件用语音聊天收费吗 舞法天女小善单唱歌词 舞法天女中,朵蜜和法苏两个天女唱的是什么歌? 舞法天女的歌曲拉提唱的是什么歌。 朵蜜、法苏、拉提、芮闪哪个名字好听 朵蜜天女、拉提天女法苏天女那个最力害? 那个舞法天女朵法拉朵蜜拉提法苏他们在天舞台唱的... 舞法天女的变身咒语 求系统软件实践课程设计 Linux环境下C语言程序设计 linux守护进程课程设计。要求每过10秒,在长整型数... 操作系统课程设计的内容简介 在Linux环境下模拟实现简单命令解释器 操作系统课程设计,生产者-消费者问题的模拟实现,... 请问一下电信家庭宽带套餐用什么套餐好? 成都电信千兆宽带的套餐有哪些? 现在办理电信宽带套餐用什么套餐好? 安装电信宽带有哪些套餐的? 成都电信宽带套餐选择 成都电信50m宽带一家人用的套餐,有什么?套餐内容... 孕妇总是梦见死人怎么回事 成都电信宽带哪种套餐最划算?近期有什么优惠活动吗? 成都适合一家人用的电信套餐,有什么套餐? 2016年成都电信宽带有哪些套餐?价格是多少? 成都家庭用宽带装哪种比较好?不卡不断 联通,电信... 成都电信宽带套餐介绍 四川电信宽带有哪些套餐 成都电信宽带最便宜的套餐或资费是什么啊? 四川成都电信的宽带最优惠的套餐有哪些呢?我主要...