1.Linux内核源码分析:Linux内核版本号和源码目录结构
2.å¦ä½å nettools交åç¼è¯å¥½ï¼ä½¿å®ç¨äºS3C2440
3.archlinux怎么离线安装rpm包管理器?源码
4.如何组建一个无盘工作站,具体步骤
Linux内核源码分析:Linux内核版本号和源码目录结构
Linux内核版本和源码目录结构对于理解其内部设计至关重要。源码内核分为稳定版和开发版,源码版本号由主版本、源码次版本和修订版本组成,源码次版本号用于区分两者。源码kettle调度源码内核代码分散在庞大的源码源码中,组织在个C文件和若干个特定目录下。源码
Linux源码的源码根目录下,首先是源码arch目录,负责屏蔽不同体系结构间的源码差异,如虚拟地址翻译函数switch_mm。源码block目录存放通用的源码块设备驱动程序,如硬盘和U盘的源码读写操作。驱动程序通常在drivers目录,源码但块设备驱动被独立出来,因为它们的读写逻辑通用。certs目录用于存储认证和签名相关的代码,保障系统安全。
内核模块是Linux 2.2版本后引入的概念,以.so文件形式独立,根据需要动态加载,带来灵活性但也增加了安全风险。crypto目录包含加密和压缩算法,保障数据安全。Documentation目录提供内核模块的文档和规范,drivers目录存放硬件驱动,fs目录处理文件系统,init目录负责内核初始化,ipc目录负责进程间通信,kernel目录包含核心功能代码,lib目录是内核的库函数集,mm目录负责内存管理,net目录处理网络协议,samples目录包含示例代码,scripts目录是手机版商店源码编译和调试工具,security目录负责安全机制,sound目录负责音频处理,tools目录包含开发工具,usr目录是用户打包,virt目录关注虚拟化,LICENSE目录则记录了许可证信息。
除了目录,源码中还有COPYING(版权声明)、CREDIT(贡献者名单)、Kbuild(构建配置)、MAINTAINERS(维护者信息)、Makefile(编译指令)和README(基本信息)等文件,它们分别提供了内核使用、贡献者认可、构建指导和基本介绍。这些组织结构使得Linux内核源码易于理解和维护。
å¦ä½å nettools交åç¼è¯å¥½ï¼ä½¿å®ç¨äºS3C
é¦å éè¦å ¶æºä»£ç ï¼ç¶åä¸è½½ç¸åºç交åç¼è¯å·¥å ·é¾ï¼å®è£ å®æååè¿è¡ç¼è¯ãä¸è¬éè¦ä¿®æ¹ä¸é ç½®åç¼è¯ï¼å¾å¤é项éè¦å°è¯è¿è¡ãå¨è¿è¿ç¨ä¸å¯è½éè¦å ¶å®åºï¼è¿éè¦éä¸ä¸è½½ç¼è¯ã
archlinux怎么离线安装rpm包管理器?
离线安装 Arch Linux 时,遇到 RPM 包管理器问题,可以采取不同的策略解决。直接使用 nettools 通过源码编译安装,避免借助 rpm 曲线救国,更简便。
RPM 是基于一套独立的安装逻辑,通过执行 rpm 命令,会同时向本机的 rpm 数据库写入安装信息。因此,在安装 RPM 文件时,会读取本地 rpm 数据库检查依赖,确保系统满足安装需求。若依赖缺失,rpm 命令会提示补全依赖。
然而,Arch Linux 默认并不遵循 RPM 的安装逻辑,没有本地 rpm 数据库。即便通过源码编译安装 rpm 并成功运行 rpm -ivh XXX.rpm 命令,qq框架插件源码也会遇到问题。因为 rpm 命令会检查并要求安装与之相关联的 rpm 包,如 glibc-XXX.rpm。尽管系统中可能存在基础的 glibc 文件,但这些文件可能并非 rpm 版本,导致 rpm 无法识别。
这将引发一个死循环:需要处理 rpm 部分依赖问题,重新安装 Arch Linux 已有文件,过程复杂且耗时。因此,建议在安装 Arch Linux 时,确保网络连接良好,以便从官方仓库或第三方仓库安装所需 rpm 包,避免遇到这类问题。
如何组建一个无盘工作站,具体步骤
无盘工作站构架指南2(5-)
5、运行Win?无盘工作站
你想用机运行Win吗?你想不买终端卡组建无盘Win网络吗?好了,请跟我来吧。根据本人长期的组网实践经验,总结出一套完整的无盘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 发行套件里都有,如果在安装 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 选项回车,出现 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/K?network。
. 修改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无盘工作站架设实例
后面还有实例你自己看吧!