【oputils 源码】【问题反馈源码】【新精武堂源码】nbdlinux源码

1.如何组建一个无盘工作站,源码具体步骤
2.第〇章 从零开始开发UEFI引导的源码64位操作系统内核

nbdlinux源码

如何组建一个无盘工作站,具体步骤

       无盘工作站构架指南2(5-)

        5、源码运行Win?无盘工作站

       你想用机运行Win吗?你想不买终端卡组建无盘Win网络吗?好了,源码请跟我来吧。源码根据本人长期的源码oputils 源码组网实践经验,总结出一套完整的源码无盘Win方案,给大家分享!源码

        首先说说大致工作原理:

        主要先通过Win远程无盘引导Win工作站,源码再利用Win终端服务和终端连网软件从无盘win中登陆到终端服务器上。源码

        请看以下具体步骤:

        一、源码硬件配置:

        1.服务器:建议CPU PIII 以上、源码M内存,源码硬盘G以上(经济允许的话最好用SCSI)因为服务器是整个网络核心的核心,所以配置一定要好。源码

        2.工作站:低配置的源码,即可。笔者这里是奔腾,8M内存,无硬盘。

        二、安装步骤:

        1.首先把服务器装好Win Server,并配置好所有硬件。

        2.为window安装终端服务。

        打开控制面版---添加/删除程序---添加/删除Windows组件--选中Windows终端服务确定。安装时要放入Win光盘.

        3.在服务器上安装MetaFrame。Metaframe是citrix公司在Win下的终端服务器他比Win的终端服务更加强大,提供多种客户终端接入服务。

        4.安装好Metafrmae后,开始制作终端客户安装软盘.

        开始---程序---Metaframe tools---Ica client creator----Ica Client For win3x

        5.为Win添加远程启动服务。由于Win已经不在支持远程启动服务。因此,我们考虑将NT4的远程启动服务移植到Win中。可到凌心之 家(www.lingxin-home.com)或我的主页(networld.8u8.com)去下载远程服务安装工具。

        6.在Win下依次配一台Dos、问题反馈源码win无盘站.方法与nt下一模一样,别告诉我你不会配置.不会的,以下就不用看了。

        7.以无盘win启动工作站,把第4步制作的终端客户盘安装在无盘站上。

        8.配置客户端。双击citrix图标,建立一个新连接,这里注意:要填好主机名(服务器名称),协议选择Netbios,的其它全部用他的默认就可以了。

        9.建立连接完成后,双击刚才建立的连接,就出现梦寐以求的Win桌面了。你可以运行任何在服务器的软件了!

       6、安装Linux无盘工作站

       [文章导读]

       其实Linux 对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。

       [正文]

       当年Novell下的无盘DOS工作站很是流行,后来又流行过Win无盘工作站,只是由于问题多多,后来微软自己停止了对无盘Windows的支持。随着Linux的日益流行,使用Linux的人越来越多,其实Linux 对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。

        这个网络是一个小的局域网,有1台服务器和4台 Linux 无盘工作站,新精武堂源码彼此之间用双绞线通过HUB连接,服务器的IP地址定为..0. ,名字是server ,5台无盘工作站的地址由服务器动态分配,地址范围从 ..0.1 到..0.4 ,名字分别是c1,c2, c3,c4,服务器和无盘工作站使用的都是NE 兼容网卡,无盘工作站使用的网卡上都安 装了BOOTROM 启动芯片,服务器操作系统安装的是 RedHat Linux 6.0 ,安装时选用定制安装,并安装了全部软件。

        Linux的远程引导有两种方式,一是利用Bootp协议,有一个专门的项目EtherBoot 提供支持( ( or Mbit)

        Other ISA cards

        NE/NE support (NEW)

        都设置为有效

       Filesystems 该项目下面的Network File Systems子项目下面的

        NFS filesystem support

        Root file system on NFS (NEW)

        都设置为有效

       以上设置完成后,退出内核编译设置程序,会出现一个对话框:Do you wish to save your new kernel configuration?

        然后执行 make dep && make bzImage 进行内核编译,这个过程得花一点时间,特别是如果计算机的速度不快的话,花的时间会更长一些。编译内核如果没有错误,会得到内核映象文件/usr/src/linux/arch/i/boot/bzImage ,将启动软盘插入计算机,执行下面的命令 mount -t vfat /dev/fd0 /mnt/floopy cp /usr/src/linux/arch/i/boot/bzImage /mnt/floppy umount /dev/fd0

        好了,启动盘上的文件都准备齐全了,等会儿用它到Win环境下制作启动映象。

       服务器设置

       服务器端需要运行nfsd、dhcpd、mars_new等几个服务进程,这些软件在ReHat Linux 发行套件里都有,aaa 股票源码如果在安装 Linux 的时候选择全部安装,这些软件都会随着安装操作 系统而装好了,下面对这些软件进行设置,注意,下面的操作要以 root 身份进行。

       1、 NFS 守护进程nfsd

       首先要建立几个供无盘工作站使用的目录,并通过nfsd 导出,命令如下:

       mkdir /tftpboot

       然后编辑文件 /etc/hosts ,加入下面的内容

       ..0. server server.domain

       ..0.1 c1 c1.domain

       ..0.2 c2 c2.domain

       ..0.3 c3 c3.domain

       ..0.4 c4 c4.domain

       第一台工作站的工作目录设置方法如下:

       mkdir /tftpboot/..0.1

       cd /tftpboot/..0.1

       cp -a /bin .

       cp -a /dev .

       mknod dev/nd0 b 0

       chmod dev/nd0

       cp -a /etc .

       cp -a /home .

       cp -a /lib .

       rm -rf lib/modules

       cp -a /root .

       cp -a /sbin .

       cp -a /var .

       mkdir proc

       mkdir usr

       mkdir tmp

       chmod tmp

       touch fastboot

       chattr +i fastboot

       cd etc

       编辑文件 sysconfig/network-scripts/ifcfg-eth0

       保留其中的

       DEVICE=eth0

       ONBOOT=yes

       其余的行全部删除,然后增加一行

       BOOTPROTO=dhcp

       编辑文件 rc.d/rc.sysinit ,在文件最后加上两行

       mount -t nfs server:/usr /usr

       /usr/XR6/bin/xfs

       编辑文件 fstab

       保留其中的

       none /proc proc defaults 0 0

       其余的行全部删除,然后增加一行

       server:/tftpboot/..0.1 / nfs defaults 1 1

       其它工作站的工作目录设置方法就简单多了

       cd /tftpboot

       cp -a ..0.1 ..0.2

       cp -a ..0.1 ..0.3

       cp -a ..0.1 ..0.4

       编辑文件 /etc/exports ,加入以下内容

       /usr (ro,no_root_squash)

       /tftpboot/..0.1 (rw,no_root_squash)

       /tftpboot/..0.2 (rw,no_root_squash)

       /tftpboot/..0.3 (rw,no_root_squash)

       /tftpboot/..0.4 (rw,no_root_squash)

       2、动态主机配置协议服务器 dpchd

       检查一下文件/etc/dhcpd.leases是否存在,若不存在就用命令touch /etc/dhcpd.leases 创建一个,然后编辑文件 /etc/dhcpd.conf ,加入以下内容

       subnet ..0.0 netmask ...0 {

       range ..0.1 ..0.4;

       }

       3、NetWare 模拟器 marsw_nwe

       编辑文件 /etc/nwserv.conf,找到下面的行

       # 4 0x eth0 .3 1

       将该行开头的'#'去掉,再找到

       4 0x0 * .3 1

       在该行开头加上'#'

       制作启动映象

       进入Win,将Win(早期的版本,可以用服务器安装方式安装)安装光盘的admin\nettools\netsetup\rplimage.exe 复制到硬盘,将启动软盘插入软驱,然后在纯MSDOS方式下执行 rplimage a: 就会得到启动映象 net$dos.sys,再将启动映象 net$dos.sys 复制到启动盘上(如果启动盘空间不够,可以先删除启动盘上的一些文件以留出空间)。

        启动 Linux 服务器,以 root 用户登录,将启动软盘插入软驱,执行下面的命令 mount -t vfat /dev/fd0 /mnt/floppy cp /mnt/floppy/net\$dos.sys /var/mars_nwe\sys\login umount /dev/fd0 然后执行 setup ,移动光棒至 System services 选项回车,oa系统html源码出现 Services 设置画面,将dhcpd,nfs,mars-nwe 都设为有效,退出 setup 程序,执行以下的命令以启动上述服务进程:

       /etc/rc.d/rc3.d/*mars-nwe restart

       /etc/rc.d/rc3.d/*dhcpd restart

       /etc/rc.d/rc3.d/*nfs restart

        下一次再启动服务器时,上述服务进程会自动执行。

       至此,所有的设置工作全部完成了,联好网络随便打开一台无盘工作站,稍等一下,出现远程引导的信息,接着会启动 Win,接下来很快就会装载 Linux ,在一大堆 Linux 的启动信息之后如果看到 Linux 的登录提示,就说明远程启动成功了。

        Linux 无盘工作站虽然运转起来了,但还有一个问题,就是交换的问题,因为Linux 是一个支持虚拟存储的操作系统,当机器内存不够时,Linux 就会把内存中暂时不用的数 据换出到交换设备上,等需要时再换回来,刚才我们没有设置交换区,在无盘工作站上用 free 命令就会发现交换区为零,如果无盘工作站内存较大,运行一些不大的程序,没有交换区还是可以的,但若运行大型程序就会出问题,下面介绍在服务器上设置交换区即远 程交换的方法。

       对于2.1.版以前的内核,要实现远程交换可有点费事,得从网络上下载有关的补丁来修改内核代码,然后再编译内核映象。从2.1.版后的内核支持网络块设备,这样,实现远程交换就容易了。首先编译内核时要使 Network block device support 选项有效(刚才编译内核时就是这么作的),再从boot可供选用, etherboot对网卡型号有要求,支持的网卡种类不算很多,但对最常用的网卡如3c///b、NE//PCIne、Intel eepro等基本上都能支持;Netboot可以用ndis或pktdrv,这些文件一般在随卡附带的驱动盘上都有,但这仅限于网络启动,对网卡的要求首先是Linux能识别。

        以下步骤所述适用于etherboot;

        1. 展开etherboot,进入src-,编辑Config。有许多选项可以让你做多重启动、显示信息、询问口令之类的事情,这时你需要做的是用bootp代替dhcp,即在Config中定义-DNO_DHCP_SUPPORT设置。因为我们打算在服务器端用bootp,所以这是必须的,否则在启动时会因为未能寻找到dhcp server而启动不了。如果你准备在服务器端使用dhcp,那么这一步就不需要了。

        2. make。对每种网卡都会生成两个文件 .rom和 .lzrom,后者是压缩过的。

        3. 使用软盘启动验证所作的启动ROM没问题,假设你用的网卡是ne兼容的:

        cat ../src/floppyload.bin ne.lzrom > /dev/fd0

        如用软盘启动,系统能探测到你的网卡并发出bootp请求。如果一切OK,你就可以把ROM文件刻写到EPROM里了。

        4. cd ../netboot*;make;make install。make如果出错,解决办法是把系统中的bcc改名,然后将gcc连接成bcc,再重新make。最后在系统中会增加一个程序mknbi-linux,这是用来处理linux内核的,在服务器端设置部分会讲它的用法。

        客户端的工作完成了。

       二、服务器端:

        假设你的无盘工作站ip为.0.0.1; 机器名为dc1.subnet.net,另一台无盘工作站ip为.0.0.2,机器名为dc2.subnet.net, 服务器ip为.0.0.,名为server.subnet.net。

       1. 修改/etc/hosts,增加dc1.subnet.net,dc2.subnet.net

       2. 取得bootp-2.x.x,展开后注意把带的各种patch都打上。然后make; make install

       3. 建立/etc/bootptab,如下:

       global.prof:

       :sm=...0:

       :bf=/tftpboot/vmlinuz.nb:

       dc1:tc=global.prof:ha=cd7a:ip=.0.0.1:

       dc2:tc=global.prof:ha=e1:ip=.0.0.2:

       ha用无盘工作站网卡的MAC地址代替。

       4. 修改inetd.conf,去掉bootpd和tftpd的#号,如下:

       tftp dgram udp wait root /usr/sbin/tcpd tftpd –s /tftpboot

       bootps dgram udp wait root /usr/sbin/tcpd bootpd -i

       kill –HUP `cat /var/run/inetd.pif`

       5. 建立/tftpboot/.0.0.1,cd /tftpboot/.0.0.1,

       (cd /; tar cpf – lib sbin bin var etc dev)| tar xpf –

       mkdir usr; mkdir tmp; chmod tmp; mkdir home;mkdir root; makdir

       proc; mkdir mnt

       6. touch fastboot; chattr +i fastboot

       (fstab 中 / 和 /usr 的最后一项设成0,也许不需要这一步了,但我没试过)

       以下是一个shell script,可用于自动执行以上操作。

       #!/bin/sh

       if [ $# != 1 ]

       then

       echo Usage: $0 client-IP-addr

       exit 1

       fi

       cd /

       umask

       mkdir -p /tftpboot/$1

       # just make these ones

       for d in home mnt proc tmp usr

       do

       mkdir /tftpboot/$1/$d

       done

       chmod /tftpboot/$1/tmp

       touch /tftpboot/$1/fastboot

       chattr +i /tftpboot/$1/fastboot

       # copy these ones

       (cd /; tar cpf - bin lib sbin dev etc var) | (cd /tftpboot/$1; tar xpf -)

       7. 删除var下一切不需要的东西, 减小空间。删除lib/modules下一切不需要的模块。

       8. 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,

       etc/fstab,etc/conf.module

       fstab中指明root在服务器server上,like this

       server:/tftpboot/.0.0.1 / nfs default 0 0

       server:/usr /usr nfs default 0 0

       9. 配置etc/rc.d/rc3.d,关掉一切不需要的网络服务。

       . 删除etc/rc.d/rc6.d/Knetwork。

       . 修改etc/rc.d/rc.sysinit,寻找“mount –a –t nonfs,smbfs…"改成

       “mount.–a –t nosmbfs…"

       . mkdir /tftpboot/.0.0.2; cd /tftpboot/.0.0.2;

       . 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,

       etc/fstab,etc/conf.module

       . cd /etc; vi exports;

       /usr dc*.subnet.net(ro)

       /tftpboot/.0.0.1 dc1.subnet.net(rw,no_root_squash)

       /tftpboot/.0.0.2 dc2.subnet.net(rw,no_root_squash)

       exportfs –a

       . 编译一个新内核,必须包含以下特性:

       NFS filesystem 支持

       Root on NFS 支持

       Bootp 支持

       无盘工作站所用的网卡型号支持

       编译出新内核之后,用mknbi-linux处理,

       mknbi-linux bzImage vmlinuz.nb

       将vmlinuz.nb放在/tftpboot下即可。

       至此,服务器端的工作就完成了。

        注意事项:

        1. 如果你打算在服务器端用dhcp,需要自己配置,参看dhcp的文档。

        2. Rh6.1自带一个bootparamd,也应该能完成同样的工作,但在manual中语焉不详,不知该如何设置。

        3. 服务器端 / 和 /usr 最好单独分区。

        4. etherboot的文档上说对有些网卡比如PCI NE兼容网卡,可能需要调整Makefile中的vendor信息和ID信息,我还未试过。

        启动你的无盘工作站,如一切操作无误的话,工作站则应该能启动起来。启动过程中如果有一些地方不顺利,可以在启动之后对无盘工作站上按一般方法进行设置。

        希望以上的讲述能给读者有所帮助和启迪!

       8、Linux无盘工作站架设实例

        后面还有实例你自己看吧!

第〇章 从零开始开发UEFI引导的位操作系统内核

       章节概述

       本文提供了关于从零开始开发UEFI引导的位操作系统内核的教程,旨在帮助开发者了解内核开发的基本步骤,尤其是针对对Linux不太熟悉的读者。教程采用独特的编排方式,将所需知识分为多个部分进行讲解。

       前置知识

       对于不熟悉Linux的开发者,本教程将提供必要的基础知识,并在需要时通过链接引入更详细的教程。请在阅读前确保具备基本的计算机编程知识。

       开发环境

       为了顺利进行内核开发,您需要在Linux环境中搭建开发工具,而Windows用户则推荐使用Docker或WSL(Windows Subsystem for Linux),它们提供了便捷的Linux开发环境,无需复杂的虚拟机配置。

       在Linux中,您需要安装以下工具:VSCode(通过插件实现远程开发),以及QEMU(用于UEFI模拟)。

       对于Windows用户,您需要在本地安装QEMU,而不是在Docker或WSL中。

       如果您使用的是Deepin、麒麟等国产Linux发行版,请注意它们可能提供的不同体验。

       如果您在使用过程中遇到WSL或Docker不兼容性问题,可以尝试安装一个完整的Linux发行版虚拟机,例如Manjaro。

       准备工作

       为了开发UEFI引导的内核,您需要准备UEFI镜像和一个可以UEFI启动的虚拟磁盘文件。

       获取UEFI镜像,例如使用gnome-boxes自带的一系列UEFI镜像,通过find命令找到OVMF_CODE.fd路径,并将其复制到项目目录中。

       创建一个qcow2格式的虚拟磁盘文件,并使用nbd设备挂载,使其在Linux中可用。

       对磁盘进行分区,推荐使用fdisk命令,并确保所有分区都被正确识别。使用fat文件系统为每个分区。

       安装GRUB,并配置多启动文件系统(multiboot2)标准,以便在启动时显示内核引导选项。

       将构建好的内核文件放置在指定目录中,等待引导。

       完成所有准备工作后,您可以将虚拟磁盘镜像和UEFI镜像从WSL或Docker移动到宿主机,并使用QEMU启动,体验UEFI引导的虚拟机。

       通过执行特定命令,您可以创建一个UEFI引导的虚拟机,并在启动时看到GRUB引导界面。

       至此,您已完成从零开始开发UEFI引导的位操作系统内核的准备工作。

更多内容请点击【时尚】专栏

精彩资讯