收藏 分销(赏)

Linux内核Makefile文件.docx

上传人:二*** 文档编号:4575317 上传时间:2024-09-30 格式:DOCX 页数:28 大小:60KB
下载 相关 举报
Linux内核Makefile文件.docx_第1页
第1页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、Linux 内核 Makefile 文件目录1概述22角色分工33内核编译文件43.1 目标定义43.2 内嵌对象-obj-y43.3 可力口载模块 -obj-m53.4 导出符号目标63.5 库文件-lib-y63.6 目录递归63.7 编译标记73.9 依赖关系83.10 特殊规那么$(obj)83.11 $(CC)支持功能94辅助程序114.1 简单辅助程序114.2 组合辅助程序114.3 定义共享库114.4 C+语言使用方法124.5 辅助程序编译控制选项124.6 何时建立辅助程序134.7 使用 hostprogs-$(CONFIG_FOO)145编译清除机制156体系Make

2、file文件171.1 变量设置171.2 增加预设置项191.3 目录表191.4 引导映像201.5 编译非内核目标211.6 编译引导映像命令211.7 定制编译命令231.8 预处理连接脚本23Kbuild 变量257 Makefile 语言26Credits268 TODO26Example:CFLAGS += $(cc-option-align)-functions=4在上面例子 中对于gcc = 3.00来 说-falign-functions=4, gcc vminor,均为两位数字。例如gcc 3.41将返回0341。当一个特定 $(CC)版本在某个方面有缺陷时cc-vers

3、ion是很有用的。例如-mregparm=3在一些gcc版本会 失败尽管gcc接受这个选项。Example:#arch/i386/MakefileGCC_VERSION := $(call cc-version) cflags-y += $(shell if $(GCC_VERSION) -ge 0300 ; then echo n-mregparm=3n; fi ;)在上面例子中-mregparm=3表示只使用在版本大于等于3.0的gcc中。4辅助程序内核编译系统支持在编译(compliation)阶段编译主机可执行程序。为了使用主机程序 需要两个步骤:第一个步骤使用hostprogs-y变

4、量告诉内核编译系统有主机程序可用。第二 步给主机程序添加潜在的依赖关系。有两种方法,在规那么中增加依赖关系或使用$(always) 变量。具体描述如下。4.1 简单辅助程序在一些情况下需要在主机上编译和运行主机程序。下面这行告诉kbuild在主机上建立 bin2hex 程序。Example:hostprogs-y := bin2hexKbuild假定使用Makefile相同目录下的单一 C代码文件bin2hex.c编译bin2hex。4.2 组合辅助程序主机程序也可以由多个object文件组成。定义组合辅助程序的语法同内核对象的定义 方法。$(-objs)包含了所有的用于链接最终可执行程序的对

5、象。Example:#scripts/lxdialog/Makefile hostprogs-y := Ixdialog Ixdialog-objs := checklist.o Ixdialog.o扩展名.o文件都编译自对应的.c文件。在上面的例子中checklist.c编译成checklist.o,Ixdialog.c编译为Ixdialog.Oo最后两个.0文件链接成可执行文件Ixdialogo注意:语法vexecutable-y不能用于定义主机程序。4.3 定义共享库扩展名为30的对象是共享库文件,并且是位置无关的object文件。内核编译系统提供 共享库使用支持,但使用方法有限制。在下

6、面例子中libkconfig.so库文件被链接到可执行文 件conf中oExample:#scripts/kconfig/Makefile hostprogs-y := conf conf-objs := conf.o libkconfig.so libkconfig-objs := expr.o type.o共享库文件需要对应的-objs定义,在上面例子中库libkconfig由两个对象组成:expr.o 和type.oo expr.o和type.o将被编译为位置无关代码并被链接如libkconfig.so。共享库不支持 C+语言。4.4 C+语言使用方法内核编译系统提供了对C+主机程序的支

7、持以用于内核配置,但不主张其它方面使用 这种方法。Example:#scripts/kconfig/Makefile hostprogs-y := qconf qconf-cxxobjs := qconf.o在上面例子中可执行文件由C+文件qconf.cc组成-通过$(qconf-cxxobjs)标识。如果qconf由.c和.cc文件混合组成,附加行表示这种情况。Example:#scripts/kconfig/Makefile hostprogs-y := qconf qconf-cxxobjs := qconf.o qconf-objs := check.o辅助程序编译控制选项当编译主机程

8、序时仍然可以使用$(HOSTCFLAGS)设置编译选项传递给$(HOSTCC)。 这些选项将影响所有使用变量HOST.EXTRACFLAG的Makefile创立的主机程序。Example:#scripts/lxdialog/MakefileHOST_EXTRACFLAGS +二-I/usr/include/ncurses为单个文件设置选项使用下面方式:Example:#arch/ppc64/boot/MakefileHOSTCFLAGS_piggyback.o := -DKERNELBASE=$(KERNELBASE)也可以使用附加链接选项:Example:#scripts/kconfig/M

9、akefileHOSTLOADLIBES_qconf := -L$(QTDIR)/lib当链接qconf时将使用外部选项”-L$(QTDIR)/lib何时建立辅助程序只有当需要时内核编译系统才会编译主机程序。有两种方式:(1)在特殊规那么中作为隐式的前提需求Example:#drivers/pci/Makefile hostprogs-y := gen-devlist $(obj)/devlist.h: $(src)/pci.ids $(obj)/gen-devlist (cd $(obj); ./gen-devlist) $ $(always) $(extra-yD$(targets)中目标

10、文件都将被删除。代码目录数中的 ”*.oas/、*.ko”文件和一些由编译系统产生的附加文件也将被删除。附加文件可以使用$(clean-files)进行定义。Example:#drivers/pci/Makefileclean-files := devlist.h classlist.h当执行make clean”命令时,devlist.h classlist.h”两个文件将被删除。内核编译系统默认这 些文件与Makefile具有相同的相对路径,否那么需要设置以7开头的绝对路径。删除整个目录使用以下方式:Example:#scripts/package/Makefile clean-dirs

11、:= $(objtree)/debian/这样就将删除包括子目录在内的整个debian目录。如果不使用以7开头的绝对路径内核编译 系统见默认使用相对路径。通常内核编译系统根据”。bj-* := dir/”进入子目录,但是在体系Makefile中需要显式使用如下 方式:Example:#arch/i386/boot/Makefile subdir- := compressed/上面赋值语句指示编译系统执行make clean”命令时进入compressed/目录。在编译最终的引导映像文件的Makefile中有一个可选的目标对象名称是archcleanoExample:#arch/i386/Mak

12、efiIearchclean:$(Q)$(MAKE) $(clean)=arch/i386/boot当执行make clean”时编译器进入arch/i386/boot并象通常一样工作。arch/i386/boot中的 Makefile文件可以使用subdir-标识进入更下层的目录。注意1: arch/$(ARCH)/Makefile不能使用subdir-”,因为它被包含在顶层Makefile文件中, 在这个位置编译机制是不起作用的。注意2:所有列举在core-y libs-y drivers-y和net-y中的目录将被make clean”命令清除。6体系Makefile文件在开始进入各个目

13、录编译之前,顶层Makefile文件设置编译环境和做些准备工作。顶层 Makefile文件包含通用局部,arch/$(ARCH) /Makefile包含该体系架构所需的设置。因此 arch/$(ARCH)/Makefile会设置一些变量和少量的目标。当编译时将按照以下大概步骤执行:1)配置内核= 产生.config文件2)保存内核版本到include/linux/version.h文件中3)符号链接 include/asm to include/asm-$(ARCH)4)更新所有目标对象的其它前提文件- 附加前提文件定义在arch/$(ARCH)/Makefile文件中5)递归进入init-*

14、 core* drivers-* net-* libs-*中的所有子目录和编译所有的目标对象- 上面变量值都引用到arch/$(ARCH)/Makefile文件。6)链接所有的object文件生成vmlinux文件,vmlinux文件放在代码树根目录下。最开始链接的几个object文件列举在arch/$(ARCH)/Makefile文件的head-y变量中。7)最后体系Makefile文件定义编译后期处理规那么和建立最终的引导映像bootimageo包括创立引导记录- 准备initrd映像和相关处理.1变量设置LDFLAGS $(LD)一般选项选项使用于链接器的所有调用中。通常定义emulat

15、ion就可以了。Example:#arch/s390/M akefil eLDFLAGS :=-m elLs390注意:EXTRA_LDFLAGS和LDFLAGS_$可以进一步订制使用选项,请参考第7章。LDFLAGS.MODULE$(LD)链接模块的选项LDFLAGS_MODULE通常设置$(口)链接模块的.ko选项。默认为“-r”即可重定位输出 文件。LDFLAGS_vmlinux $(LD)链接 vmlinux 选项LDFLAGS.vmlinux是定义链接最终vmlinux时链接器的选项。LDFLAGS_vmlinux支 持使用 LDFLAGS_$oExample:#arch/i386/

16、MakefileLDFLAGS_vmlinux :二-e stextOBJCOPYFLAGS objcopy 选项当使用$(call if_changed,objcopy)转化a .。文件时,OBJCOPYFLAGS中的选项将被使 用。$(call if_changed,objcopy)经常被用作为vmlinux产生原始的二进制文件。Example:#arch/s390/MakefileOBJCOPYFLAGS := -O binary#arch/s390/boot/Makefile $(obj)/image: vmlinux FORCE $(call if_changed,objcopy)在

17、上面例子中$(obj)/image是vmlinux的二进制版本文件。$(call if_changed,xxx)的使用 方法见后。AFLAGS$(AS)汇编选项默认值见顶层Makefile文件。针对每个体系需要另外添加和修改它。Example:#arch/sparc64/MakefileAFLAGS += -m64 -mcpu=ultrasparcCFLAGS$(CC)编译器选项默认值见顶层Makefile文件。针对每个体系需要另外添加和修改它。通常CFLAGS变量值取决于内核配置。Example:#arch/i386/M akefil ecflags-$(CONFIG_M386) += -m

18、arch=i386CFLAGS += $(cflags-y)许多体系Makefiles文件动态启动市场目标机器上的C编译器检测支持的选项:#arch/i386/Makefile cflags-$(CONFIG_MPENTIUMIT) += $(call cc-option,-march=pentium2,-march=i686).# Disable unit-at-a-time mode .CFLAGS += $(call cc-option,-fno-unit-at-a-time)第一个例子当config选项是V时将被选中。CFLAGS_KERNEL$(CC)编译 built-in 对象的选

19、项$(CFLAGS_KERNEL)包含外部C编译器选项编译本地内核代码。CFLAGS_MODULE $(CC)编译模块选项$(CFLAGS_MODULE)包含外部C编译器选项编译可加载内核代码。6.2 增加预设置项pr叩are:这个规那么用于列举开始进入子目录编译前需要的前提文件。通常是些包含汇 编常量的头文件。prepare:这个规那么用于列举开始进入子目录编译前需要的前提文件。通常是些包含汇 编常量的头文件。Example:#arch/s390/Makefileprepare: include/asm-$(ARCH)/offsets.h在这个例子中include/asm-$(ARCH)/o

20、ffsets.h将在进入子目录前编译。详见XXX-TODO 文件描述了 kbuild如何产生offset头文件。6.3 目录表体系Makefile文件和顶层Makefile文件共同定义了如何建立vmlinux文件的变量。注 意没有体系相关的模块对象定义局部:所有的模块对象都是体系无关的。head-y, init-y, core-y, libs-y, drivers-y, net-y1概述Makefile包括五局部:Makefile .config arch/$(ARCH)/Makefile scripts/Makefile. * kbuild Makefiles1概述Makefile包括五局部

21、:Makefile .config arch/$(ARCH)/Makefile scripts/Makefile. * kbuild Makefiles顶层Makefile文件内核配置文件机器体系Makefile文件所有内核Makefiles共用规那么 其它Makefile文件通过内核配置操作产生.config文件,顶层Makefile文件读取该文件的配置。顶层 Make行le文件负责产生两个主要的程序:vmlinux (内核image)和模块。顶层Makefile文件根 据内核配置,通过递归编译内核代码树子目录建立这两个文件。顶层Makefile文件文本一 个名为arch/$(ARCH)/M

22、akefile的机器体系Makefile文件。机器体系Makefile文件为顶层 Makefile文件提供与机器相关的信息。每一个子目录有一个Makefile文件,子目录Makefile文件根据上级目录Makefile文件 命令启动编译。这些Makefile使用.config文件配置数据构建各种文件列表,并使用这些文 件列表编译内嵌或模块目标文件。scripts/Makefile.*包含了所有的定义和规那么,与Makefile文件一起编译出内核程序。$(head-y)列举首先链接到vmlinux的对象文件。$(libs-y)列举了能够找到lib.a文件的目录。其余的变量列举了能够找到内嵌对象文

23、件的目录。$(init-y)列举的对象位于$(11匕(1-丫)对象之后。然后是如下位置秩序:$(core-y), $(libs-y), $(drivers-y)和 $(net-y)o顶层Makefile定义了所有同用目录,arch/$(ARCH)/Makefile文件只需增加体系相关的 目录。Example:#arch/sparc64/Makefilecore-y +二 arch/sparc64/kernel/libs-y += arch/sparc64/prom/ arch/sparc64/Iib/drivers-$(CONFIG_OPROFILE) += arch/sparc64/opro

24、file/6.4 引导映像体系Makefile文件定义了编译vmlinux文件的目标对象,将它们压缩和封装成引导代 码,并复制到合适的位置。这包括各种安装命令。如何定义实际的目标对象无法为所有的体 系结构提供标准化的方法。附加处理过程常位于arch/$(ARCH)/下的boot/目录。内核编译系统无法在boot/目录下提供一种便捷的方法创立目标系统文件。因此 arch/$(ARCH)/Makefile要调用make命令在boot/目录下建立目标系统文件。建议使用的方 法是在arch/$(ARCH)/Makefile中设置 调用,并 且使用 完整路 径引用 arch/$ (ARCH)/boot/

25、MakefileoExample:#arch/i386/Makefileboot := arch/i386/bootbzlmage: vmlinux$(Q)$(MAKE) $(build)=$(boot) $(boot)/$建议使用“$(Q)$(MAKE) $(build)=vdir”方式在子目录中调用make命令。没有定义体系目标系统文件的规那么,但执行”make help”命令要列出所有目标系统文件, 因此必须定义$(archhelp)变量。Example:#arch/i386/Makefiledefine archhelpechobzlmage - Image (arch/$(ARCH)

26、/boot/bzImage)1 endef当执行不带参数的make命令时,将首先编译第一个目标对象。在顶层Makefile中第 一个目标对象是all:o一个体系结构需要定义一个默认的可引导映像。“make help”命令的默认目标是以*开头的对象。增加新的前提文件给all目标可以设置不同于vmlinux的默认目标对象。Example:#arch/i386/Makefile all: bzlmage当执行不带参数的“make”命令时,bzlmage文件将被编译。6.5 编译非内核目标extra-yextra-y定义了在当前目录下创立没有在obj-*定义的附加的目标文件。在extra-y中列举目标

27、是处于两个目的:1)是内核编译系统在命令行中检查变动情况-当使用$(call if_changed,xxx)时2)内核编译系统知道执行make clean”命令时删除哪些文件Example:#arch/i386/kemel/Makefileextra-y := head.o init_task.o上面例子extra-y中的对象文件将被编译但不会练接到built-in.o中。6.6 编译引导映像命令Kbuild提供了 一些编译引导映像有用的宏。iCchangedif_changed是后面命令使用的基础。用法:target: source(s)FORCE $(call iCchanged,ld/o

28、bjcopy/gzip)当这条规那么被使用时它将检查哪些文件需要更新,或命令行被改变。后面这种情况将 迫使重新编译编译选项被改变的执行文件。使用if_changed的目标对象必须列举在$(targets) 中,否那么命令行检查将失败,目标一直会编译。赋值给$(targets)的对象没有$(obj)/前缀。if_changed也可以和定制命令配合使用,见6.7nkbuild定制命令”。注意:一个常见错误是忘记了 FORCE前导词。链接目标。常使用LDFLAGS_$作为Id的选项。objcopy复制二进制文件。常用于arch/$(ARCH)/Makefile中和使用OBJCOPYFLAGS作为选

29、项。也可以用OBJCOPYFLAGS_$设置附加选项。gzip压缩目标文件。使用最大压缩算法压缩目标文件。Example:#arch/i386/boot/MakefileLDFLAGS_bootsect := -Ttext 0x0 -s oformat binaryLDFLAGS_setup := -Ttext 0x0 -s oformat binary -e begtexttargets += setup setup.o bootsect bootsect.o$(obj)/setup $(obj)/bootsect: %: %.o FORCE$(call if_changed,ld)在上面例

30、子中有两个可能的目标对象,分别需要不同的链接选项。使用LDFLAGS_$ 语法为每个目标对象设置不同的链接选项。$(targets)包含所有的目标对象,因此内核编译系统知道所有的目标对象并且将:1)检查命令行的改变情况2)执行make clean命令时删除目标对象:%: %。是简写方法,简写setup.o和bootsect.o文件。注意:常犯错误是忘记target.”语句,导致没有明显的原因目标文件被重新编译。6.7 定制编译命令当执行带KBUILD_VERBOSE=0参数的编译命令时命令的简短信息会被显示。要让定 制命令具有这种功能需要设置两个变量:quiet_cmd_ - 各被显示的内容

31、cmd_ -被执行的命令Example: # quiet_cmd_image = BUILD $ cmd_image = $(obj)/tools/build $(BUILDFLAGS) $(obj)/vmlinux.bin $targets 十= bzlmage $(obj)/bzlmage: $(obj)/vmlinux.bin $(obj)/tools/build FORCE $(call ifLchanged,image) echo Kernel: $ is ready*执行make KBUILD_VERBOSE=0命令编译$(obj)/bzlmage 目标时将显示:BUILD arc

32、h/i386/boot/bzlmage预处理连接脚本当编译vmlinux映像时将使用arch/$(ARCH)/kernel/vmlinux.lds链接脚本。相同目录下的文件是这个脚本的预处理的变体。内核编译系统知晓.Ids 文件并使用规那么*lds.S - *ldsoExample:#arch/i386/kernel/Makefile always :二 vmlinux.Ids #Makefileexport CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)$(always)赋值语句告诉编译系统编译目标是vmlinux.Ids。$(CPPFLAGS_vmlinux

33、.lds) 赋值语句告诉编译系统编译vmlinux.lds目标的编译选项。编译*.Ids时将使用到下面这些变量:CPPFLAGS :定义在顶层 MakefileEXTRA_CPPFLAGS :可以设置在编译的Makefile文件中CPPFLAGS_$(F):目标编译选项。注意要使用文件全名。7 Kbuild 变量顶层Makefile文件导出下面这些变量:VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION这几个变量定义了当前内核版本号。很少体系体系Makefiles文件直接使用他们,常用 $(KERNELRELEASE)代替。$(VERSION) $(PATC

34、HLEVELD$(SUBLEVEL)定义了三个基本局部版本号,例如“2”, “4”,和“0”。这三个变量一直使用数值表示。$(EXTRAVERSION)定义了更细的补钉号,通常是短横跟一些非数值字符串,例如 H-pre4noKERNELRELEASE$(KERNELRELEASE)是一个单一字符如”2.4.0-pre4”,适合用于构造安装目录和显示版 本字符串。一些体系文件使用它用于以上目的。ARCH这个变量定义了目标系统体系结构,例如“i386”、“arm”、“spare”. 一些内核编译文件测 试$0乩引用于确定编译哪个文件。默认情况下顶层Makefile文件设置$。4同为主机相同 的系统

35、体系。当交叉编译编译时,用户可以使用命令行改变$(ARCH)值:make ARCH=m68k.INSTALL_PATH这个变量定义了体系Makefiles文件安装内核映项和System.map文件的路径。INSTALL MOD PATH, MODLIB$(INSTALL_MOD_PATH)定义了模块安装变量$(MODLIB)的前缀。这个变量通常不在 Makefile文件中定义,如果需要可以由用户添加。$(MODLIB)定义了模块安装目录。顶层 Makefile 定义 $(MODLIB)为 $(INSTALL_MOD_PATH)/lib/modules/ $(KERNELRELEASE)O用户可

36、以使用命令行修改这个值。8 Makefile 语言内核Makefiles设计目标用于运行GNU Make程序。Makefiles仅使用GNU Make提到的特 性,但使用了较多的GNU扩展局部。GNU Make程序支持基本的列表处理功能。内核Makefiles文件结合”iF语句使用了简单的列 表建立和维护功能。GNU Make程序有两种赋值操作符:“:二”和执行时立即计算右值并赋值给左值。类似公式定义,当每次使用左值要被使用时计算右值并赋给它。一些情况中使用”合适,而一些情况中使用才是正确选择。9 CreditsOriginal version made by Michael Elizabet

37、h Chastain, Updates by Kai Germaschewski Updates by Sam Ravnborg 10 TODO-Describe how kbuild support shipped files with _shipped.-Generating offset header files.-Add more variables to section 7?CROSS PILE ?= xscale_be-CC = $(CROSS_COMPILE)gccCROSS PILE = $(shell if -f .hhl_cross_compile ; then cat .

38、hhl_cross_compile; 附录资料:不需要的可以自行删除CentOS网络设置这里介绍一下Linux下的网络设置文件,这是网络计算机服务器的前提条件。1 .网络的基本设置我们在设置网络环境的时候,提前要弄清楚以下的相关信息。IP IP地址Netmak子网掩码Gateway默认网关HostName主机名称DomainName 域名DNS DNS 的 IP2 .网络设置文件无论是通过网络配置命令(下文将提到)来配置网络,还是通过图形化的配置界面,最终的 配置信息都将写入到某某的文件中,也就是说一旦我们知道了这些信息都写到了什么文件中 或哪儿个文件中,我们就可以通过直接的修改某某文件来直接

39、进行配置,下面就说明一下网 络设置将要涉及到的几个主要的文件。不光是CentOS,其他的UNIX系的OS都可以通过 这个方法来配置网络,不过系统的不同定义也不同,比方说有些系统会说到通过直接修改文 件的方法配置网络信息会导致网络环境的不稳定,提倡使用图形界面或配置命令的形式来配 置网络,这里要特别的注意。(1) 文件 /etc/sysconfig/network这个/etc/syscon行g/network文件是定义hostname和是否利用网络的不接触网络设备的对系统 全体定义的文件。设定形式:设定值=值/etc/sysconfig/network 的设定工程如下:NETWORKING 是否

40、利用网络GATEWAY默认网关IPGATEWAYDEV默认网关的接口名HOSTNAME主机名DOMAIN域名(2) 文件 /etc/sysconfig/network-scripts/ifcfg-ethO/etc/sysconfig/network-scripts在这个目录下面,存放的是网络接口(网卡)的制御脚本文件 (控制文件),ifcfg-ethO是默认的第一个网络接口,如果机器中有多个网络接口,那么名字 就将依此类推ifcfg-ethl,ifcfg-eth2,ifcfg- eth3(这里面的文件是相当重要的,涉及到网络 能否正常工作)设定形式:设定值二值设定工程工程如下:DEVICE接口

41、名(设备,网卡)BOOTPROTO IP 的配置方法(static:固定 IP, dhcpHCP, none:手动)HWADDR MAC 土也址ONBOOT系统启动的时候网络接口是否有效(ycs/no)TYPE网络类型(通常是Ethemet)NETMASK网络掩码IPADDR IP 土也址IPV6INITIPV6 是否有效(yes/no)GATEWAY默认网关IP地址这里有一个例子:CODE:rootlinux # cat -n /etc/sysconfig/network-scripts/ifcfg-ethO1 DEVICE=ethO2 BOOTPROTO二static3 BROADCAST

42、 = 4 HWADDR=00:0C:2x:6x:0x:xx5678 ONBOOT=yes9 TYPE二Ethernet(3)文件 /etc/resolv.conf这个文件是用来配置主机将用的DNS服务器信息。在这个文件中如果不设置DNS服务器的 IP 地址,那么在通信的时候,将无法指定像 lurl二 centospub |7url|7url这样的域名。(DNS 是 Domain NameSystem的简称,中文名称域名解析服务器,主要是IP和域名转换功能)/etc/resolv.conf的设 定工程:domain 一定义本地域名search 一定义域名和搜索列表nameserver一定义被参照

43、的DNS服务器的IP地址(最多可指定3个)一般来说最重要的是第三个nameserver工程,没有这项定义,用域名将无法访问网站,并 且yum等服务将无法利用(4)文件 /etc/hosts/etc/hosts这个文件是记载LAN内接续的各主机的对应HostName和IP用的。在LAN内, 我们各个主机间访问通信的时候,用的是内网的IP地址进行访问(例:192.168.L22, 192.168.1.23),从而确立连接进行通信。除了通过访问IP来确立通信访问之外,我们还可 以通过HostName进行访问,我们在安装机器的时候都会给机器起一个名字,这个名字就是 这台机器的 HostName,通过上

44、图可以看至U,HostA 的 hostname centos 1,HostB 的 hostname 是centos2那我们怎么能不但通过IP确立连接,通过这个IP对应的HostName进行连接访 问呢?解决的方法就是这个/etc/hosts这个文件,通过把LAN内的各主机的IP地址和 HostName的一一对应写入这个文件的时候,就可以解决问题。要在HostA上用ssh访问HostB的时候,在命令行下做这样的操作:-CODE:rootcentosl email=root 1,s/email password:Last login: Mon Dec 25 15:04:58 2006 from c

45、entos 1 rootccntos2 #访问成功后,我们看到hostname的地方变化了。那么我们用hostname试试看:-CODE:rootcentosl # ssh centos2ssh:centos2: Name or service not known 提示错误,不知道主机rootcentosl #那么我们编辑/etc/hosts文件,将HostB的IP和hostname的对应关系写入这个文件,如果主 机有域名,可以将域名写在IP地址之后hostname之前,并且用空格隔开,形式如第三行 127.0.0.1 的设置。-CODE:rootcentosl # cat -n /etc/hosts1 # Do not remove the following line, or vario

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服