收藏 分销(赏)

Linux内核Makefile文件.docx

上传人:二*** 文档编号:4575317 上传时间:2024-09-30 格式:DOCX 页数:28 大小:60KB 下载积分:5 金币
下载 相关 举报
Linux内核Makefile文件.docx_第1页
第1页 / 共28页
本文档共28页,全文阅读请下载到手机保存,查看更方便
资源描述
Linux 内核 Makefile 文件 目录 1概述22角色分工3 3内核编译文件4 3.1 目标定义4 3.2 内嵌对象-obj-y4 3.3 可力口载模块 -obj-m5 3.4 导出符号目标6 3.5 库文件-lib-y6 3.6 目录递归6 3.7 编译标记7 3.9 依赖关系8 3.10 特殊规那么$(obj)8 3.11 $(CC)支持功能94辅助程序11 4.1 简单辅助程序11 4.2 组合辅助程序11 4.3 定义共享库11 4.4 C++语言使用方法12 4.5 辅助程序编译控制选项12 4.6 何时建立辅助程序13 4.7 使用 hostprogs-$(CONFIG_FOO)145编译清除机制15 6体系Makefile文件17 1.1 变量设置17 1.2 增加预设置项19 1.3 目录表19 1.4 引导映像20 1.5 编译非内核目标21 1.6 编译引导映像命令21 1.7 定制编译命令23 1.8 预处理连接脚本23Kbuild 变量25 7 Makefile 语言26Credits26 8 TODO26Example: CFLAGS += $(cc-option-align)-functions=4 在上面例子 中对于gcc >= 3.00来 说-falign-functions=4, gcc < 3.00版本使用 -malign-functions=4。 cc-versioncc-version返回$(CC)编译器数字版本号。 版本格式是vmajor>vminor>,均为两位数字。例如gcc 3.41将返回0341。当一个特定 $(CC)版本在某个方面有缺陷时cc-version是很有用的。例如-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变量告诉内核编译系统有主机程序可用。第二 步给主机程序添加潜在的依赖关系。有两种方法,在规那么中增加依赖关系或使用$(always) 变量。具体描述如下。 4.1 简单辅助程序 在一些情况下需要在主机上编译和运行主机程序。下面这行告诉kbuild在主机上建立 bin2hex 程序。 Example: hostprogs-y := bin2hexKbuild假定使用Makefile相同目录下的单一 C代码文件bin2hex.c编译bin2hex。 4.2 组合辅助程序 主机程序也可以由多个object文件组成。定义组合辅助程序的语法同内核对象的定义 方法。$(<executeable>-objs)包含了所有的用于链接最终可执行程序的对象。 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文件。内核编译系统提供 共享库使用支持,但使用方法有限制。在下面例子中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++主机程序的支持以用于内核配置,但不主张其它方面使用 这种方法。 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辅助程序编译控制选项 当编译主机程序时仍然可以使用$(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/MakefileHOSTLOADLIBES_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) < $< 编译目标文件$(obj)/devlist.h需要先建立$(obj)/gen-devlist。注意在特殊规那么中使用主 机程序必须加前缀$(obj)。 (2)使用 $(always) 当没有合适的特殊规那么可以使用,并且在进入Makefile文件时就要建立主机程序,可 以使用变量$(always)。 Example: #scripts/lxdialog/Makefile hostprogs-y := Ixdialog always :二 $(hostprogs-y)这样就告诉内核编译系统即使没有任何规那么使用Ixdialog也要编译它。 4.5 使用 hostprogs-$(CONFIG_FOO)在Kbuild文件中典型模式如下: Example: #scripts/Makefilehostprogs-$(CONFIG_KALLSYMS) += kallsyms 对Kbuild来说V用于内嵌对象,m,用于模块。因此如果config符号是,nT,编译系统也将 创立该程序。换句话说内核编译系统等同看待hostprogs-m和hostprogs-y。但如果不涉及到 CONFIG符号仅建议使用hostprogs-yo 5编译清除机制"make clean”命令删除在编译内核生成的大局部文件,例如主机程序,列举在$(hostprogs-y)、 $(hostprogs-m)> $(always)> $(extra-y^D$(targets)中目标文件都将被删除。代码目录数中的 ”*.[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 := $(objtree)/debian/这样就将删除包括子目录在内的整个debian目录。如果不使用以7开头的绝对路径内核编译 系统见默认使用相对路径。 通常内核编译系统根据”。bj-* := dir/”进入子目录,但是在体系Makefile中需要显式使用如下 方式: Example: #arch/i386/boot/Makefile subdir- := compressed/上面赋值语句指示编译系统执行"make clean”命令时进入compressed/目录。 在编译最终的引导映像文件的Makefile中有一个可选的目标对象名称是archcleanoExample: #arch/i386/MakefiIearchclean: $(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文件在开始进入各个目录编译之前,顶层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-* core* drivers-* net-* libs-*中的所有子目录和编译所有的目标对象 - 上面变量值都引用到arch/$(ARCH)/Makefile文件。 6)链接所有的object文件生成vmlinux文件,vmlinux文件放在代码树根目录下。 最开始链接的几个object文件列举在arch/$(ARCH)/Makefile文件的head-y变量中。 7)最后体系Makefile文件定义编译后期处理规那么和建立最终的引导映像bootimageo包括创立引导记录 - 准备initrd映像和相关处理.1变量设置 LDFLAGS $(LD)一般选项选项使用于链接器的所有调用中。通常定义emulation就可以了。 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/MakefileLDFLAGS_vmlinux :二-e stext OBJCOPYFLAGS 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) 在上面例子中$(obj)/image是vmlinux的二进制版本文件。$(call if_changed,xxx)的使用 方法见后。 AFLAGS$(AS)汇编选项默认值见顶层Makefile文件。针对每个体系需要另外添加和修改它。 Example: #arch/sparc64/MakefileAFLAGS += -m64 -mcpu=ultrasparc CFLAGS$(CC)编译器选项默认值见顶层Makefile文件。针对每个体系需要另外添加和修改它。 通常CFLAGS变量值取决于内核配置。 Example: #arch/i386/M akefil ecflags-$(CONFIG_M386) += -march=i386 CFLAGS += $(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 对象的选项$(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)/offsets.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 Makefiles 1概述 Makefile包括五局部: Makefile .config arch/$(ARCH)/Makefile scripts/Makefile. * kbuild Makefiles 顶层Makefile文件 内核配置文件 机器体系Makefile文件 所有内核Makefiles共用规那么 其它Makefile文件 通过内核配置操作产生.config文件,顶层Makefile文件读取该文件的配置。顶层 Make行le文件负责产生两个主要的程序:vmlinux (内核image)和模块。顶层Makefile文件根 据内核配置,通过递归编译内核代码树子目录建立这两个文件。顶层Makefile文件文本一 个名为arch/$(ARCH)/Makefile的机器体系Makefile文件。机器体系Makefile文件为顶层 Makefile文件提供与机器相关的信息。 每一个子目录有一个Makefile文件,子目录Makefile文件根据上级目录Makefile文件 命令启动编译。这些Makefile使用.config文件配置数据构建各种文件列表,并使用这些文 件列表编译内嵌或模块目标文件。 scripts/Makefile.*包含了所有的定义和规那么,与Makefile文件一起编译出内核程序。 $(head-y)列举首先链接到vmlinux的对象文件。 $(libs-y)列举了能够找到lib.a文件的目录。 其余的变量列举了能够找到内嵌对象文件的目录。 $(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/oprofile/ 6.4 引导映像 体系Makefile文件定义了编译vmlinux文件的目标对象,将它们压缩和封装成引导代 码,并复制到合适的位置。这包括各种安装命令。如何定义实际的目标对象无法为所有的体 系结构提供标准化的方法。 附加处理过程常位于arch/$(ARCH)/下的boot/目录。 内核编译系统无法在boot/目录下提供一种便捷的方法创立目标系统文件。因此 arch/$(ARCH)/Makefile要调用make命令在boot/目录下建立目标系统文件。建议使用的方 法是在arch/$(ARCH)/Makefile中设置 调用,并 且使用 完整路 径引用 arch/$ (ARCH)/boot/MakefileoExample: #arch/i386/Makefileboot := arch/i386/boot bzlmage: vmlinux$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ 建议使用“$(Q)$(MAKE) $(build)=vdir>”方式在子目录中调用make命令。 没有定义体系目标系统文件的规那么,但执行”make help”命令要列出所有目标系统文件, 因此必须定义$(archhelp)变量。 Example: #arch/i386/Makefiledefine archhelp echobzlmage - Image (arch/$(ARCH)/boot/bzImage)1 endef 当执行不带参数的make命令时,将首先编译第一个目标对象。在顶层Makefile中第 一个目标对象是all:o一个体系结构需要定义一个默认的可引导映像。 “make help”命令的默认目标是以*开头的对象。 增加新的前提文件给all目标可以设置不同于vmlinux的默认目标对象。 Example: #arch/i386/Makefile all: bzlmage当执行不带参数的“make”命令时,bzlmage文件将被编译。 6.5 编译非内核目标extra-y extra-y定义了在当前目录下创立没有在obj-*定义的附加的目标文件。 在extra-y中列举目标是处于两个目的: 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/objcopy/gzip) 当这条规那么被使用时它将检查哪些文件需要更新,或命令行被改变。后面这种情况将 迫使重新编译编译选项被改变的执行文件。使用if_changed的目标对象必须列举在$(targets) 中,否那么命令行检查将失败,目标一直会编译。 赋值给$(targets)的对象没有$(obj)/前缀。 if_changed也可以和定制命令配合使用,见6.7nkbuild定制命令”。 注意:一个常见错误是忘记了 FORCE前导词。 链接目标。常使用LDFLAGS_$@作为Id的选项。 objcopy 复制二进制文件。常用于arch/$(ARCH)/Makefile中和使用OBJCOPYFLAGS作为选 项。 也可以用OBJCOPYFLAGS_$@设置附加选项。 gzip压缩目标文件。使用最大压缩算法压缩目标文件。 Example: #arch/i386/boot/MakefileLDFLAGS_bootsect := -Ttext 0x0 -s —oformat binary LDFLAGS_setup := -Ttext 0x0 -s —oformat binary -e begtexttargets += setup setup.o bootsect bootsect.o $(obj)/setup $(obj)/bootsect: %: %.o FORCE$(call if_changed,ld) 在上面例子中有两个可能的目标对象,分别需要不同的链接选项。使用LDFLAGS_$@ 语法为每个目标对象设置不同的链接选项。 $(targets)包含所有的目标对象,因此内核编译系统知道所有的目标对象并且将: 1)检查命令行的改变情况2)执行make clean命令时删除目标对象 ":%: %。"是简写方法,简写setup.o和bootsect.o文件。 注意:常犯错误是忘记"target.”语句,导致没有明显的原因目标文件被重新编译。 6.7 定制编译命令 当执行带KBUILD_VERBOSE=0参数的编译命令时命令的简短信息会被显示。要让定 制命令具有这种功能需要设置两个变量: quiet_cmd_<command> - »各被显示的内容 cmd_<command> -被执行的命令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 arch/i386/boot/bzlmage预处理连接脚本 当编译vmlinux映像时将使用arch/$(ARCH)/kernel/vmlinux.lds链接脚本。 相同目录下的文件是这个脚本的预处理的变体。内核编译系统知晓.Ids 文件并使用规那么*lds.S -> *ldso Example: #arch/i386/kernel/Makefile always :二 vmlinux.Ids #Makefileexport CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH) $(always)赋值语句告诉编译系统编译目标是vmlinux.Ids。$(CPPFLAGS_vmlinux.lds) 赋值语句告诉编译系统编译vmlinux.lds目标的编译选项。 编译*.Ids时将使用到下面这些变量: CPPFLAGS :定义在顶层 MakefileEXTRA_CPPFLAGS :可以设置在编译的Makefile文件中 CPPFLAGS_$(@F):目标编译选项。注意要使用文件全名。 7 Kbuild 变量顶层Makefile文件导出下面这些变量: VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION 这几个变量定义了当前内核版本号。很少体系体系Makefiles文件直接使用他们,常用 $(KERNELRELEASE)代替。 $(VERSION)> $(PATCHLEVEL^D$(SUBLEVEL)定义了三个基本局部版本号,例如“2”, “4”,和“0”。这三个变量一直使用数值表示。 $(EXTRAVERSION)定义了更细的补钉号,通常是短横跟一些非数值字符串,例如 H-pre4noKERNELRELEASE $(KERNELRELEASE)是一个单一字符如”2.4.0-pre4”,适合用于构造安装目录和显示版 本字符串。一些体系文件使用它用于以上目的。 ARCH 这个变量定义了目标系统体系结构,例如“i386”、“arm”、“spare”. 一些内核编译文件测 试$0乩引用于确定编译哪个文件。默认情况下顶层Makefile文件设置$。4同为主机相同 的系统体系。当交叉编译编译时,用户可以使用命令行改变$(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用户可以使用命令行修改这个值。 8 Makefile 语言内核Makefiles设计目标用于运行GNU Make程序。Makefiles仅使用GNU Make提到的特 性,但使用了较多的GNU扩展局部。 GNU Make程序支持基本的列表处理功能。内核Makefiles文件结合”iF语句使用了简单的列 表建立和维护功能。 GNU Make程序有两种赋值操作符:“:二”和"执行时立即计算右值并赋值给左值。 类似公式定义,当每次使用左值要被使用时计算右值并赋给它。 一些情况中使用■”合适,而一些情况中使用才是正确选择。 9 CreditsOriginal version made by Michael Elizabeth Chastain, <> Updates by Kai Germaschewski <kai@tpl .ruhr-uni-bochum.de>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)gcc CROSS PILE = $(shell if [ -f .hhl_cross_compile ]; then \ cat .hhl_cross_compile; \⑴附录资料:不需要的可以自行删除 CentOS网络设置这里介绍一下Linux下的网络设置文件,这是网络计算机服务器的前提条件。 1 .网络的基本设置我们在设置网络环境的时候,提前要弄清楚以下的相关信息。 IP IP地址Netmak子网掩码 Gateway默认网关HostName主机名称 DomainName 域名DNS DNS 的 IP 2 .网络设置文件无论是通过网络配置命令(下文将提到)来配置网络,还是通过图形化的配置界面,最终的 配置信息都将写入到某某的文件中,也就是说一旦我们知道了这些信息都写到了什么文件中 或哪儿个文件中,我们就可以通过直接的修改某某文件来直接进行配置,下面就说明一下网 络设置将要涉及到的几个主要的文件。不光是CentOS,其他的UNIX系的OS都可以通过 这个方法来配置网络,不过系统的不同定义也不同,比方说有些系统会说到通过直接修改文 件的方法配置网络信息会导致网络环境的不稳定,提倡使用图形界面或配置命令的形式来配 置网络,这里要特别的注意。 (1) 文件 /etc/sysconfig/network这个/etc/syscon行g/network文件是定义hostname和是否利用网络的不接触网络设备的对系统 全体定义的文件。 设定形式:设定值=值/etc/sysconfig/network 的设定工程如下: NETWORKING 是否利用网络GATEWAY默认网关 IPGATEWAYDEV默认网关的接口名HOSTNAME主机名 DOMAIN域名 (2) 文件 /etc/sysconfig/network-scripts/ifcfg-ethO/etc/sysconfig/network-scripts在这个目录下面,存放的是网络接口(网卡)的制御脚本文件 (控制文件),ifcfg-ethO是默认的第一个网络接口,如果机器中有多个网络接口,那么名字 就将依此类推ifcfg-ethl,ifcfg-eth2,ifcfg- eth3……(这里面的文件是相当重要的,涉及到网络 能否正常工作) 设定形式:设定值二值设定工程工程如下: DEVICE接口名(设备,网卡)BOOTPROTO IP 的配置方法(static:固定 IP, dhcpHCP, none:手动) HWADDR MAC 土也址ONBOOT系统启动的时候网络接口是否有效(ycs/no) TYPE网络类型(通常是Ethemet)NETMASK网络掩码 IPADDR IP 土也址IPV6INITIPV6 是否有效(yes/no) GATEWAY默认网关IP地址这里有一个例子: CODE: [root@linux 〜]# cat -n /etc/sysconfig/network-scripts/ifcfg-ethO 1 DEVICE=ethO 2 BOOTPROTO二static 3 BROADCAST = 4 HWADDR=00:0C:2x:6x:0x:xx 5 6 7 8 ONBOOT=yes 9 TYPE二Ethernet (3)文件 /etc/resolv.conf这个文件是用来配置主机将用的DNS服务器信息。在这个文件中如果不设置DNS服务器的 IP 地址,那么在通信的时候,将无法指定像 lurl二 centospub |7url|7url]]这样的域名。(DNS 是 Domain Name System的简称,中文名称域名解析服务器,主要是IP和域名转换功能)/etc/resolv.conf的设 定工程: domain 一定义本地域名search 一定义域名和搜索列表 nameserver一定义被参照的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,通过上图可以看至U,HostA 的 hostname centos 1,HostB 的 hostname 是centos2那我们怎么能不但通过IP确立连接,通过这个IP对应的HostName进行连接访 问呢?解决的方法就是这个/etc/hosts这个文件,通过把LAN内的各主机的IP地址和 HostName的一一对应写入这个文件的时候,就可以解决问题。 要在HostA上用ssh访问HostB的时候,在命令行下做这样的操作: [-]CODE: [root@centosl 〜[email=root@ 1,,s[/email] password: Last login: Mon Dec 25 15:04:58 2006 from centos 1 [root@ccntos2 ~]#访问成功后,我们看到hostname的地方变化了。 那么我们用hostname试试看: [-]CODE: [root@centosl 〜]# ssh centos2ssh:centos2: Name or service not known —提示错误,不知道主机 [root@centosl 〜]#那么我们编辑/etc/hosts文件,将HostB的IP和hostname的对应关系写入这个文件,如果主 机有域名,可以将域名写在IP地址之后hostname之前,并且用空格隔开,形式如第三行 127.0.0.1 的设置。 [-]CODE: [root@centosl 〜]# cat -n /etc/hosts 1 # Do not remove the following line, or vario
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

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

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服