关于linux系统启动的一些问答

关于linux系统启动的一些问答

1.简述linux的启动流程

Centos6

1.POST:通电自检

2.BIOS:BOIS自检,加载硬盘

3.读取MBR,进行MBR引导

4.bootloader:grub引导菜单

5.加载内核 Kernel(ramdisk)

6.启动init进程,依据inittab文件设定运行级别 (inittab用于定义默认运行级别)

7.init进程,执行rc.sysinit文件

8.分别执行/etc/init/rcS.conf、/etc/init/rc.conf、/etc/init/start-ttys.confl来调用命令执行/etc/rc#.d/文件里面定义的是各种服务的启动脚本,可以ls查看,S开头代表开机启动的服务,K开头的是关机要执行的任务。#代表数字,一个数字代表一个运行级别,共7个运行级别,

9.执行/etc/rc.d/rc.local

10.执行/bin/login程序,等待用户登录

 

Centos7

1.POST:通电自检

2.BIOS:BOIS自检,加载硬盘

3.读取MBR,进行MBR引导

4.bootloader:grub引导菜单

5.加载内核和inintamfs模块

6.内核开始初始化,使用systemd来代替centos6以前的init程序

7.执行initrd.target

包括挂载/etc/fstab文件中的系统,此时挂载后,就可以切换到根目录了

8.从initramfs根文件系统切换到磁盘根目录centos7表面是有“运行级别”这个概念,实际上是为了兼容以前的系统,每个所谓的“运行级别”都有对应的软连接指向,默认的启动级别时/etc/systemd/system/default.target,根据它的指向可以找到系统要进入哪个模式

模式:0 ==> runlevel0.target, poweroff.target

​ 1 ==> runlevel1.target, rescue.target

​ 2 ==> runlevel2.target, multi-user.target

​ 3 ==> runlevel3.target, multi-user.target

​ 4 ==> runlevel4.target, multi-user.target

​ 5 ==> runlevel5.target, graphical.target

​ 6 ==> runlevel6.target, reboot.target

9.systemd执行sysinit.target

10.systemd启动multi-user.target下的本机与服务器服务

11.systemd执行multi-user.target下的/etc/rc.d/rc.local

12.Systemd执行multi-user.target下的getty.target及登录服务

getty.target是启动终端的systemd对象。如果到此步骤,系统没有被指定启动图形桌面,到此就可以结束了,如果要启动图形界面,需要在此基础上启动桌面程序

13.systemd执行graphical需要的服务

 
启动流程:https://blog.csdn.net/weixin_39924535/article/details/82925441
 

 

2.grub中的bootloader损坏如何修复,步骤是什么
  • 方法一:直接安装grub

(1)先把MBR拷贝一份

dd if=/dev/sda of=/tmp/mbr count=1 bs=512

(2)然后再破坏

dd if=/dev/zero of=/dev/sda count=1 bs=100

sync

(3)重新安装grub程序

grub-install --root-directory=/ /dev/sda

 

  • 方法二:进入救援模式,安装grub

(1)导入一张光盘

(2)进入rescue模式

(3)登入shell程序

(4)切换自己的根

chroot /mnt/sysimage

(5)安装grub程序,退出到救援模式

grub-install --root-directory=/ /dev/sda

exit

(6)reboot

 
stage损坏:https://blog.csdn.net/jb19900111/article/details/17749749
 

 

3.initramfs文件的作用

initrd

initramfs

1.initrd: initial Ram disk
/linuxrc文件,基于ramdisk技术,文件系统(ext2等)镜像文件 ————> cpio格式镜像文件
在内核启动完成后把它复制到/dev/ram块设备中, 作为内核加载真正根文件系统的过渡根文件系统

2.initramfs: initial RAM file system
init文件,cpio格式镜像文件
在内核启动完成后把它复制到rootfs中,作为内核初始的根文件系统,完成挂载系统真正的根文件系统

 

常见的内存文件系统有:

rootfs,ramfs,ramdisk,tmpfs

1.rootfs:内核启动的初始始根文件系统,大部分linux系统正常运行后都会安装另外的文件系统,然后忽略rootfs

2.ramfs:基于内存的文件系统.ramfs文件系统没有容量大小的限制,它可以根据需要动态增加容量.直接利用了内核的磁盘高速缓存

3.ramdisk:基于ram的块设备,占据一块固定的内存,事先要使用特定的工具比如mke2fs格式化,还需要一个文件系统驱动来读写其上的文件空间固定导致容量有限,要想装入更多的文件需要重新格式化.Linux的块设备缓冲特性, ram disk上的数据被拷贝到page cache(对于文件数据)和dentry cache(对于目录项),导致内存浪费,它可能不停的动态增长直到耗尽系统的全部内存,所以只有root或授权用户允许使用ramfs

4.tmpfs:增加了容量大小的限制 + 允许把数据写入交换分区.由于增加了这两个特性,tmpfs允许普通用户使用

 

initramfs:https://www.cnblogs.com/CHYI1/p/5551022.html

initrd和initramfs的区别:https://blog.51cto.com/linuxzj/1409882

 
 

4.grub的各个阶段功能

分三个阶段stage1/stage1.5/stage2

这些功能都是放在/boot/grub目录下:

在这里插入图片描述

1.从上面可以看到,stage1文件的大小正好是512字节,事实上stage1文件其实就是MBR中bootloader的备份,而之所以是bootloader而不是MBR, 是因为这个文件的前446字节才是和MBR是一样的。

2.上面可以看到stage1_5形式的文件有很多,如e2fs_stage1_5、jfs_stage1_5等等,这些都是stage1.5阶段的文件,只是每个都针对不同的文件系统格式,而e2fs_stage1_5是默认的(ext系列的文件系统)。当stage1加载stage1.5之后,就访问文件系统目录,从而可以加载stage2文件

stage1.5要执行,是通过stage1加载它

3.平时开机启动的时候看到的Grub选项、信息,还有修改GRUB背景等功能都是stage2提供的,stage2会去读入/boot/grub/grub.conf或者menu.lst等配置文件

 
grub的各个阶段功能:https://kodango.com/three-stage-grub-boot

 
 

5.grub2的引导过程简述
  • 第一阶段:boot.img写入主引导记录的前440个字节(扇区0中的MBR),或者写入分区的引导扇区(PBR / VBR)。它diskboot.img通过64位LBA地址寻址,因此可以从MBR的2 GiB限制之上加载。实际的扇区号由写入grub-install
  • 第二阶段: diskboot.img是第一个扇区core.img(在Grub Legacy中称为第1.5阶段),其唯一目的是加载core.imgLBA标识的其余部分,也由写入grub-install
  • 在MBR分区磁盘上:core.img存储在MBR和第一个分区之间的空扇区(如果有)中。最近的操作系统建议在此处进行对齐时应留出1 MiB的间隙(2047 * 512字节或255 * 4KiB扇区)。该间隔曾经是62个扇区(31 KiB),这提醒了Bios在1998年之前使用的C / H / S寻址的扇区数限制,因此core.img设计为小于32 KiB。
  • 在GPT分区磁盘上:分区不限于4个,因此core.img被写入其自身的微小(1 MiB),无文件系统的BIOS引导分区。
  • 第三阶段: core.img进入32位保护模式,解压缩自身(grub和文件系统模块的内核到达/ boot / grub),然后/boot/grub//normal.mod从所配置的分区中加载grub-install。如果分区索引已更改,则Grub将找不到normal.mod,并向用户显示Grub Rescue提示,用户可以在其中找到并加载normal.modlinux内核。
  • /boot/grub目录可以位于任何分区上(Grub可以读取许多文件系统,包括NTFS)。根据安装方式的不同,它可以位于发行版的分区中,也可以位于单独的*/ boot*分区中。
  • 第四阶段:( normal.mod相当于Grub Legacy中的第二阶段)解析/boot/grub/grub.cfg,可以选择加载模块(例如,用于图形UI)并显示菜单

在这里插入图片描述

总结

1.加载引导镜像(boot.img),定位并加载下阶段的代码

2.加载core.img,开始执行加载存放下阶段文件的 /boot 文件系统的驱动程序

3.从 /boot/grub2/i386-pc 目录下加载一些内核运行时模块,定位和加载 Linux 内核到内存中

4.normal.mod解析/boot/grub/grub.cfg

 

grub2详解:https://wenku.baidu.com/view/77c60ac2d4bbfd0a79563c1ec5da50e2524dd153.html

grub2启动:https://en.wikipedia.org/wiki/GNU_GRUB#Version_2_(GRUB_2)

 
 

6.grub和grub2的区别

GRUB 的最主要作用都是将内核加载到内存并运行。

1.配置文件的名称改变了。在grub中,配置文件为grub.conf或menu.lst(grub.conf的一个软链接),在grub2中改名为grub.cfg。

2.grub2增添了许多语法,更接近于脚本语言了,例如支持变量、条件判断、循环。

3.grub2中,设备分区名称从1开始,而在grub中是从0开始的。

4.grub2使用img文件,不再使用grub中的stage1、stage1.5和stage2。

5.支持图形界面配置grub,但要安装grub-customizer包,epel源提供该包。

6.在已进入操作系统环境下,不再提供grub命令,也就是不能进入grub交互式界面,只有在开机时才能进入。

7.在grub2中没有了好用的find命令。

 
 

7.内核的功能是什么,如果修改内核的参数
  • 内核的功能

进程管理

​ 内核负责创建和销毁进程,并处理它们与外部世界的联系(输入和输出)

内存管理

​ 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间

文件系统

​ 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整个系统中应用

设备控制

​ 内核中必须嵌入系统中出现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动器

网络管理

​ 所有的路由和地址解析问题都在内核中实现.

 

  • 修改内核的参数

在单用户模式下我们进入系统无需提供密码,并且拥有最高权限,可以任意修改任何内容,而我们常规进入单用户的方法就是通过修改内核启动参数实现的。

修改内核参数按时效性来说分为两种,

一种是临时的,一种是永久的,

  • 我们进入单用户模式一般就是用的临时的

1.系统启动到GRUB阶段时,中断启动,选择要引导的系统

2.按“a”键进入修改内核引导参数界面,输入系统启动时要引导的内核参数

3.按回车键继续启动系统

如:enforcing参数:selinux控制;enforcing=1可设置强制模式,enforcing=0可设置许可模式

Selinux参数:selinux控制;selinux=0可完全禁用selinux,selinux=1可启用selinux

vga参数:改变字符终端的分辨率,vga=788

vga参数值的意义,这里的值给出的是十进制的,也可以使用十六进制,如vga=0x317

  • 永久的

在/boot/grub/grub.conf或/etc/grub.conf文件中将内核参数添加到kernel一行中的rhgb quiet

修改应该在/proc/cmdline文件中可以查看到

 

Linux内核的功能:https://blog.csdn.net/u010889616/article/details/47868887

Linux修改内核的参数:https://zhuanlan.zhihu.com/p/43341587
 

 

8.简述centos7的systemd初始化过程
  • 阶段1

systemd执行的第一个目标是/usr/lib/systemd/system/default.target,这个文件链接到当前目录的graphical.target。文件内容如下:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes

文件中配置项 Requires=multi-user.target 将控制权交给 multi-user.target (相当于旧概念的运行级别)。

  • 阶段2

这个阶段会启动multi-user.target,这个target为多用户支持设定系统环境会启动如下两个目录中单元

  • 启动本级别对应的服务

  • 调用/etc/rc.d/rc.local

  • 调用getty.target(开启登录终端)

/etc/systemd/system/multi-user.target.wants/

/usr/lib/systemd/system/multi-user.target.wants/

/usr/lib/systemd/system/multi-user.target文件内容如下:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Multi-User System
Documentation=man:systemd.special(7)
Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
AllowIsolate=yes

multi-user.target会将控制权交给 basic.target

  • 阶段3

basic.target用于启动普通服务,特别是图形管理服务,它通过如下两个目录决定那些单元会被启动。

  • 准备操作系统

/etc/systemd/system/basic.target.wants/

/usr/lib/systemd/system/basic.target.wants/

/usr/lib/systemd/system/basic.target文件内容如下:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Basic System
Documentation=man:systemd.special(7)

Requires=sysinit.target
After=sysinit.target
Wants=sockets.target timers.target paths.target slices.target
After=sockets.target paths.target slices.target

basi.target 会将控制权交给 sysinit.target

  • 阶段4

sysinit.target会启动重要的系统服务例如系统挂载内存交换空间和设备,内核补充选项等等。它通过如下两个目录决定那些单元会被启动。

  • 初始化系统

/etc/systemd/system/sysinit.target.wants/

/usr/lib/systemd/system/sysinit.target.wants/

/usr/lib/systemd/system/sysinit.target文件内容如下:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=System Initialization
Documentation=man:systemd.special(7)
Conflicts=emergency.service emergency.target
Wants=local-fs.target swap.target
After=local-fs.target swap.target emergency.service emergency.target

sysinit.target在启动过程中会传递给 local-fs.target 和 swap.target

  • 阶段5

local-fs.target 也不能算是阶段5,可能和阶段4一些服务并行启动,这个阶段不会启动用户相关服务,它只处理底层核心服务,这个target会根据/etc/fstab来执行相关磁盘挂载操作。它通过如下一个目录决定那些单元会被启动。

/usr/lib/systemd/system/local-fs.target.wants/

local-fs.target 文件内容如下:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Local File Systems
Documentation=man:systemd.special(7)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs-pre.target
OnFailure=emergency.target
OnFailureJobMode=replace-irreversibly

 

  • 总结:

    • 阶段1:systemd执行的第一个目标是/usr/lib/systemd/system/default.target,将控制权交给 multi-user.target(启动本级别对应的服务,调用/etc/rc.d/rc.local,调用getty.target(开启登录终端))

    • 阶段2:会启动multi-user.target,这个target为多用户支持设定系统环境,将控制权交给 basic.target(准备操作系统)

    • 阶段3:启动普通服务,特别是图形管理服务,将控制权交给 sysinit.target(初始化系统)

    • 阶段4:会启动重要的系统服务例如系统挂载**,**内存交换空间和设备,会传递给 local-fs.target 和 swap.target

    • 阶段5:只处理底层核心服务,根据/etc/fstab来执行相关磁盘挂载操作

 

  • 各个target的功能

1,local-fs.target+swap.target:这两个主要挂载本机/etc/fstab里面与相关内存交换空间;

2,sysinit.target:主要检测硬件,载入所需的内核模块等;

3,basic.target:载入主要的硬件驱动与防火墙相关任务;

4,multi-user.target:载入其他一般系统或网络服务载入;

5,graphical.target:载入图形界面相关服务。

 
 

systemd初始化过程:https://blog.csdn.net/vic_qxz/article/details/80336278

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 课程设计-基于知识图谱的医疗诊断知识问答系统python源码(含详细使用说明和模型文件).zip 环境 - python >= 3.6 - pyahocorasick==1.4.2 - requests==2.25.1 - gevent==1.4.0 - jieba==0.42.1 - six==1.15.0 - gensim==3.8.3 - matplotlib==3.1.3 - Flask==1.1.1 - numpy==1.16.0 - bert4keras==0.9.1 - tensorflow==1.14.0 - Keras==2.3.1 - py2neo==2020.1.1 - tqdm==4.42.1 - pandas==1.0.1 - termcolor==1.1.0 - itchat==1.3.10 - ahocorasick==0.9 - flask_compress==1.9.0 - flask_cors==3.0.10 - flask_json==0.3.4 - GPUtil==1.4.0 - pyzmq==22.0.3 - scikit_learn==0.24.1 当前版本使用的itchat将问答功能集成到微信做演示,这需要你的微信能登入网页微信才能使用itchat;另外对话上下文并没有使用Redis之类的数据库实时存储到内存里,而是使用json文件的存、读进行的。 能够回答哪些疾病相关知识,可以参考[这个疾病实体字典里的疾病] 由于该模型是使用bert训练的,比较大,因此我上传到百度网盘了,有需要的可以自己去下载,然后将其放到目录 下载地址:见说明文档 下载好后解压放在项目路径下,然后在bert意图识别文件夹的 `app.py`代码里改一下预训练模型的路径。 启动neo4j** 打开cmd ,进入安装目录,输入`neo4j.bat console`就行;如果是Linux系统,你可以输入`./neo4j start`后台启动 2. **启动意图识别和槽位填充服务** 依次双击`run_intent_recog_service.bat` 和 `run_ner_service.bat` 两个 bat 文件,打开后不要关闭;如果你是Linux系统,请将其改成 shell 脚本 然后运行。 3. **启动itchat** 打开一个新的cmd,进入项目文件夹路劲,输入: ``` python itchat_app.py ``` 之后微信扫描二维码就可以在微信里做问答了。 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
目 录 1 网络无关篇.10 1001 修改主机名(bjchenxu).10 1002 Ret Hat Linux启动到文字界面(不启动xwindow)(bjchenxu)10 1003 linux的自动升级更新问题(hutuworm,NetDC).10 1004 windows下看linux分区的软件(bjchenxu)10 1005 mount用法(sakulagi,sxsfxx,aptkevin).10 1006 在vmware的LINUX中使用本地硬盘的FAT分区(bjchenxu)11 1007.a 删除名为-a的文件(bjchenxu)11 1007.b 删除名为\a的文件(bjchenxu)11 1007.c 删除名字带的/和‘\0'文件(bjchenxu)11 1007.d 删除名字带不可见字符的文件(bjchenxu).11 1007.e 删除文件大小为零的文件(bjchenxu).11 1008 redhat设置滚轮鼠标(mc1011)12 1009 加装xwindow(bjchenxu).12 1010 删除linux分区(bjchenxu).12 1011 如何退出man(bjchenxu).12 1012 不编译内核,mount ntfs分区(bjchenxu,hutuworm).12 1013 tar 分卷压缩和合并(WongMokin,Waker).12 1014 使用lilo/grub时找回忘记了的root口令(bjchenxu).12 1015 使ctrl + alt + del失效(bjchenxu).13 1016 如何看出redhat的版本是7还是8(hutuworm).13 1017 文件在哪个rpm中(无双)13 1018 把man或info的信息存为文本文件(bjchenxu)13 1019 利用现存两个文件,生成一个新的文件(bjchenxu)13 1020 设置com1口,让超级终端通过com1口进行登录(bjchenxu)14 1021 删除目录下所有文件包括子目录(bjchenxu)14 1022 查看系统信息(bjchenxu).14 1023 去掉多余的回车符(bjchenxu).14 1024 切换X桌面(lnx3000)14 1025 通用的声卡驱动程序(lnx3000).14 1026 改变redhat的系统语言/字符集(beming/mc1011).14 1027 把屏幕设置为90列(bjchenxu).15 1028 使用md5sum文件(bjchenxu)15 1029 一次解压多个zip文件(bjchenxu).15 1030 看pdf文件(bjchenxu)15 1031 查找权限位为S的文件(bjchenxu).15 1032 装中文输入法(bjchenxu,hutuworm).15 1033 把弹出的光盘收回来(beike).15 1034 cd光盘做成iso文件(弱智).15 1035 快速观看开机的硬件检测(弱智)15 2/51 Linux 一句话精彩问答/陈绪 http://www.linuxmine.com 1036 查看硬盘的使用情况(bjchenxu)15 1037 查看目录的大小(bjchenxu).15 1038 查找或删除正在使用某文件的进程(wwwzc)16 1039 安装软件(bjchenxu).16 1040 字符模式下设置/删除环境变量(bjchenxu)16 1041 ls如何看到隐藏文件(即以.开头的文件)(双眼皮的猪).16 1042 rpm中的文件安装到哪里去了(bjchenxu)16 1043 使用src.rpm(bjchenxu).16 1044 vim中显示颜色或不显示颜色(bjchenxu)16 1045 linux是实时还是分时操作系统(bjchenxu)16 1046 make bzImage -j的j是什么意思(wind521).16 1047 源码包怎么没有(bjchenxu).16 1048 修改系统时间(bjchenxu,laixi781211,hutuworm)16 1049 开机就mount上windows下的分区(bjchenxu).17 1050 linux怎么用这么多内存(bjchenxu)17 1051 FSTAB 最后的配置项里边最后两个数字是什么意思(lnx3000)17 1052 linux中让用户的密码必须有一定的长度,并且符合复杂度(eapass)17 1053 linux中的翻译软件(bjchenxu,hutuworm)17 1054 不让显示器休眠(bjchenxu).17 1055 用dat查询昨天的日期(gadfly).17 1056 xwindow下如何截屏(bjchenxu)17 1057 解压小全(bjchenxu,noclouds)17 1057-2 tar压缩、解压用法(platinum)18 1058 在多级目录中查找某个文件的方法(青海湖)18 1059 不让普通用户自己改密码(myxfc)18 1060 显卡实在配不上怎么办(win_bigboy).18 1061 超强删除格式化工具(弱智)18 1062 如何让xmms播放列表里显示正确的中文(myxfc)18 1063 redhat linux中播放mp3文件(hehhb)18 1064 安装中文字体(hehhb)19 1065 装载windows分区的FAT32、FAT16文件系统(hehhb)19 1066 在X下使用五笔和拼音,区位输入法(hmkart).19 1067 在Linux下如何解压rar文件(hmkart).19 1068 硬盘安装后怎么添加/删除rpm包(sakulagi).19 1069 字符下控制音量(grub007,天外闲云).19 1070 用dd做iso(grub007)20 1071 删除几天以前的所有东西(包括目录名和目录中的文件)(shally5)20 1072 用户的crontab在哪里(hutuworm)20 1073 以不同的用户身份运行程序(bjchenxu)20 1074 如何清空一个文件(bjchenxu).20 1075 为什么OpenOffice下不能显示中文(allen1970)20 1076 如何备份Linux系统(Purge).20 1077 linux上的partition magic(wwwzc)20 1078 /proc/sys/sem中每项代表什么意思? (saku
目 录 译者序 前言 第1章 Linux操作系统 1 1.1 Linux的简要历史介绍 1 1.2 Linux核心 2 1.2.1 Linux的开发特点 2 1.2.2 Linux分发包 3 1.2.3 为什么要为商业Linux 版本付费 3 1.3 Linux与其他操作系统之间的差异 3 1.3.1 功能丰富 3 1.3.2 多任务 4 1.4 为什么选择 Linux 6 1.4.1 何时使用 Linux 6 1.4.2 服务器与工作站 6 1.4.3 推荐的硬件 7 1.4.4 移植到 Linux工作站 7 1.5 Linux分发包 8 1.6 升级或移植前的考虑 10 1.6.1 硬件兼容性 11 1.6.2 升级 11 1.6.3 从其他操作系统进行移植 12 1.6.4 选择分发包 12 1.7 怎样着手工作 12 1.8 小结 13 1.9 常见问答 13 第2章 Red Hat Linux基本安装 16 2.1 引言 16 2.1.1 物理上独立的机器 16 2.1.2 选择 Linux分发包 16 2.2 初步的安装决定 17 2.2.1 硬件 17 2.2.2 多CPU 17 2.2.3 RAM 17 2.2.4 磁盘 17 2.2.5 RAID 18 2.2.6 网络接口 18 2.2.7 备份问题 19 2.2.8 支持问题 19 2.2.9 安装初步知识 19 2.3 安装 Red Hat 19 2.3.1 快速安装介绍 19 2.3.2 选择安装类型 22 2.4 定制(手工)安装 23 2.4.1 按要求创建分区 23 2.4.2 网络设置 26 2.4.3 时区选择 28 2.4.4 root账号配置 28 2.4.5 验证 29 2.4.6 使用 NIS 或 NIS+ 30 2.4.7 程序包选择 30 2.4.8 X Window 安装 32 2.4.9 程序包安装 34 2.4.10 Linux装载程序与引导盘 35 2.4.11 完成安装 36 2.4.12 配置服务器运行数据库 36 2.4.13 需要注意的事项 36 2.5 Linux的其他风格 36 2.6 小结 37 2.7 常见问答 38 第3章 在 Linux上安装并运行 Oracle 40 3.1 引言 40 3.2 概念 41 3.2.1 系统全局区域 41 3.2.2 程序全局区域 42 3.2.3 表空间 42 3.2.4 数据文件 42 3.2.5 区 42 3.2.6 段 42 3.2.7 控制文件 42 3.2.8 重做日志 42 3.2.9 回退段 42 3.2.10 参数文件 43 3.2.11 版本标识符 43 3.2.12 PL/SQL 43 3.2.13 模式 43 3.4 安装 43 3.4.1 安装前 44 3.4.2 安装Oracle 8 50 3.4.3 安装Oracle 8i 54 3.4.4 安装后 62 3.5 使用 Oracle 8/8i 65 3.5.1 启动和关闭 66 3.5.2 后台进程 67 3.5.3 创建帐号 68 3.5.4 SQL*Plus 70 3.5.5 数据字典 72 3.5.6 导入/导出 73 3.6 第三方软件 73 3.6.1 Orasoft 73 3.6.2 Orac 75 3.6.3 Perl/DBI 76 3.7 小结 76 3.8 常见问答 76 第4章 在Linux上安装 Informix 78 4.1 引言 78 4.2 安装 81 4.2.1 第一部分:软件的获取 和软件的服务器放置 81 4.2.2 第二部分:安装和标记 83 4.2.3 第三部分:磁盘设置和服务器 运行 85 4.2.4 建立 Informix 的数据文件 86 4.2.5 关于磁盘 87 4.2.6 磁盘和目录 87 4.3 关于空间的考虑 88 4.4 配置 88 4.4.1 $INFORMIXDIR/etc/ $ONCONFIG 89 4.4.2 $INFORMIXDIR/etc/sqlhosts 100 4.4.3 /etc/services 100 4.4.4 /opt/data/rootdbs 101 4.4.5 利用 oninit 启动引擎 102 4.4.6 终止引擎 106 4.5 最后的配置 107 4.5.1 回顾 107 4.5.2 Physdbs 107 4.5.3 创建 physdbs 文件 108 4.5.4 logsdbs 111 4.5.5 创建 logsdbs 113 4.5.6 创建新的逻辑日志 114 4.5.7 Tempdbs 123 4.5.8 最终的 $ONCONFIG 配置值 125 4.5.9 重新启动引擎 126 4.6 其他工具 129 4.6.1 Dbaccess 132 4.6.2 Onmonitor 132 4.7 资源 133 4.7.1 Informix 技术支持组织 134 4.7.2 Informix Web 站点 134 4.7.3 Usenet 新闻组 comp.database. informix 134 4.7.4 国际 Informix 用户组(IIUG) 134 4.7.5 Informix出版社 134 4.7.6 Informix 培训 134 4.8 小结 134 4.9 常见问答 135 第5章 在Linux上安装和使用 Sybase 136 5.1 引言 136 5.2 安装 136 5.2.1 安装 SQL Server 11.0.3 137 5.2.2 安装可选的客户机软件 141 5.3 配置 142 5.3.1 配置Sybase Database Server 143 5.3.2 配置Sybase Backup Server 149 5.3.3 配置Sybase Client/Server 库 150 5.3.4 在引导时启动数据库服 务器和备份服务器 151 5.3.5 设置系统管理员口令 151 5.3.6 配置数据库设备和数据库 152 5.3.7 建立用户登录和权限 153 5.4 测试数据库 156 5.5 数据库设计 159 5.6 问题 161 5.6.1 标识列(自动增加) 161 5.6.2 SQL一致性 163 5.6.3 执行环境 164 5.7 小结 168 5.8 常见问答 169 第6章 在 Red Hat Linux上安装DB2 Universal Database 6.1 170 6.1 引言 170 6.2 为安装DB2准备 Red Hat工作站 171 6.2.1 为DB2安装准备 Red Hat 5.2 和 6.0 172 6.2.2 为DB2安装准备 Red Hat 6.1 172 6.3 安装 DB2 173 6.3.1 进行安装 174 6.3.2 检验安装 180 6.4 配置Control Center 182 6.5 安装DB2客户机 184 6.6 配置DB2客户机与DB2服务器通信 188 6.7 小结 194 6.8 常见问答 195 第7章 在Linux上安装MySQL 198 7.1 引言 198 7.2 安装 199 7.2.1 命名约定 199 7.2.2 二进制分发包的安装 201 7.2.3 RPM 分发包的安装 202 7.2.4 源代码分发包的安装 202 7.3 配置 204 7.3.1 安全性 204 7.3.2 权限 205 7.3.3 访问控制 208 7.3.4 系统设置 209 7.3.5 性能 210 7.4 问题 212 7.4.1 线程 213 7.4.2 运行环境 213 7.5 故障处理 214 7.6 小结 215 7.7 常见问答 216 第8章 在Linux上安装和管理Progress 218 8.1 引言 218 8.2 安装 218 8.2.1 从介质中安装 219 8.2.2 核心参数 223 8.2.3 环境设置 225 8.3 配置 226 8.3.1 目录结构 227 8.3.2 磁盘空间与 I/O 吞吐量 227 8.3.3 创建新数据库 229 8.3.4 设置缓冲池尺寸 230 8.4 运行Progress 231 8.5 故障排除 241 8.6 优缺点 242 8.6.1 4GL 243 8.6.2 面向 OLTP 243 8.6.3 可靠的崩溃恢复 243 8.6.4 成本 243 8.6.5 词索引 244 8.6.6 国际化 244 8.6.7 24×7运转 244 8.6.8 无二进制大对象 244 8.6.9 无并行查询 245 8.6.10 无分布式锁管理程序 245 8.7 小结 249 8.8 常见问答 249 第9章 Linux上的Postgre SQL 252 9.1 引言 252 9.2 Internet 驱动Postgre SQL 252 9.3 获得Postgre SQL 253 9.4 PostgreSQL 快速安装说明 254 9.5 详细安装 255 9.6 资源分发包的安装 259 9.6.1 准备工作 259 9.6.2 循序渐进的过程 260 9.7 PostgreSQL样例 RPM 264 9.8 测试Tcl/Tk接口 264 9.9 测试Python接口—PyGreSQL 264 9.10 测试Perl接口 265 9.11 测试libpq和libpq++ 接口 265 9.12 测试Java接口 266 9.13 测试ecpg接口 266 9.14 测试ODBC接口 267 9.15 测试MPSQL Motif-Worksheet 接口 267 9.16 测试SQL样例—用户定义 类型和函数 267 9.17 验证PostgreSQL安装 267 9.18 紧急问题处理 268 9.19 怎样才能信赖 PostgreSQL 268 9.20 系统布局 268 9.21 Kerberos 验证 269 9.21.1 可用性 269 9.21.2 安装 269 9.21.3 运行 269 9.22 运行时的环境—从 UNIX/Linux 中使用 Postgres 270 9.22.1 启动 postmaster 270 9.22.2 使用 pg_options 270 9.22.3 认可的选项 271 9.23 安全 273 9.23.1 用户验证 273 9.23.2 基于主机的访问控制 273 9.23.3 验证方法 274 9.23.4 建立用户 275 9.23.5 建立组 275 9.23.6 访问控制 275 9.23.7 函数和规则 275 9.23.8 函数 275 9.23.9 规则 276 9.23.10 说明 276 9.23.11 安全的TCP/IP连接 276 9.23.12 通过ssh运行安全隧道 276 9.24 增加与删除用户 276 9.25 磁盘管理—支持大型数据库 277 9.26 管理数据库 278 9.26.1 创建数据库 278 9.26.2 访问数据库 278 9.26.3 删除数据库 279 9.26.4 备份和恢复 279 9.26.5 大型数据库 280 9.27 使用 PostgreSQL 的 KVM 开关 280 9.28 故障排除—postmaster 启动故障 281 9.28.1 客户机连接问题 282 9.28.2 调试消息 282 9.28.3 pg_options 283 9.29 技术支持 284 9.30 邮件清单 284 9.30.1 PostgreSQL 的电子邮件账号 284 9.30.2 英文邮件清单 285 9.30.3 邮件清单的归档 285 9.30.4 西班牙邮件清单 285 9.31 PostgreSQL的GUI前台工具 285 9.32 ODBC、JDBC和UDBC驱动程序 286 9.33 Perl 和 DBI 接口 287 9.34 PostgreSQL的教材 289 9.35 PostgreSQL URL 参考 290 9.36 小结 290 9.37 常见问答 291 第10章 开发基于Web的应用程序 295 10.1 引言 295 10.2 Web 应用程序平台 296 10.2.1 Active Server Pages 296 10.2.2 Cold Fusion 296 10.2.3 Java Server Pages 296 10.2.4 Zope 296 10.2.5 Scripting Languages 296 10.2.6 PHP 297 10.2.7 Apache 297 10.3 入门 297 10.4 设计相应的模式 298 10.5 数据流 299 10.5.1 PHP、MySQL 和 Apache: 安装样例应用程序 300 10.5.2 PHP 数据库连通性:进行连接 300 10.6 小结 302 10.7 常见问答 302 附录A 汽车销售应用程序脚本 304 附录B 汽车销售应用程序转储文件 327
linux操作系统 一、单项选择题 1. 关于Linux内核版本的说法,以下错误的是()。 A.表示为主版本号.次版本号.修正号 B.1.2.3表示稳定的发行版 C.1.3.3表示稳定的发行版 D.2.2.5表示对内核2.2的第5次修正 2. 系统引导的过程一般包括如下几步: a.MBR中的引导装载程序启动; b.用户登录; c.Linux内核运行; d.BIOS自检。 正确的顺序是()。 A.d,b,c,a B.d,a,c,b C.b,d,c,a D.a,d,c,b 3. 字符界面下使用shutdown命令重启计算机时所用的参数是()。 A.-h B.-t C.-k D.-r 4. 下面哪个不是桌面环境软件? A.KDE B.twm C. Gnome D.CDE 5. 在UNIX/Linux系统添加新用户的命令是() A. groupadd B. usermod C. userdel D. useradd 6. Android系统是基于Linux操作系统开发的手机系统,因此在进行刷机、删除系统自带软件时需要获得管理员账户( )的权限。 A.administrator B.admin C.root D.liveuser 7.已知当前系统umask的值为022,请问这时新建目录文件的权限为()。 A. 755 B. 644 C.775 D.664 8.已知用户sarwar在虚拟终端1和虚拟终端2及图形用户界面下登录,请问sarwar在虚拟终端1中执行ls >tty2后,命令输出到哪里?() A.虚拟终端1 B.虚拟终端2 C.图形终端 D.无输出 二、填空题(每空1分,共15分) 1. Linux系统中有三种基本的文件类型:普通文件、目录文件和 设备文件 。 2. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是 ps -aux 。 3. 将前一个命令的标准输出作为后一个命令的标准输入,称之为 管道 。 4. /sbin 目录用来存放系统管理员使用的管理程序。 5. 安装Linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区 。 11.将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式__ __tar -czvf wang.tar.gz /home/stud1/wang_ 三、判断题(每题1分,共10分) 1. Ubuntu LINUX安装时自动创建了根用户。( T ) 2. LINUX中的超级用户为root,登陆时不需要口令。( F ) 3. Linux不可以与MS-DOS、OS/2、Windows等其他操作系统共存于同一台机器上。( F ) 4. Linux的特点之一是它是一种开放、免费的操作系统。 ( T ) 5. RedHat系统中,默认情况下根口令没有字符长短的的限制,但是必须把口令输入两次;如果两次输入的口令不一样,安装程序将会提示用户重新输入口令。 ( F ) 四、问答题\应用操作题(每题5分,共25分) 1. Linux内核主要由哪几部分组成?每部分的作用? Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。 进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时, 由调度程序选择最值得运行的进程; 内存管理(MM)允许多个进程安全的共享主内存区域; 虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统; 网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持; 进程间通讯(IPC) 支持进程间各种通信机制。 2. vi编辑器有哪几种工作模式?如何在这几种工作模式之间转换? Vi的工作模式有三种:命令模式、输入模式、末行模式。 在命令模式下输入a、A、i、I、o、O等命令之一可以进入输入模式, 在输入模式下按Esc键回到命令模式; 在命令模式下输入:进入末行模式,末行命令执行完后回到命令模式。 3.假设你是系统管理员,需要增加一个新的用户账号u1,为新用户设置初始密码,锁定用户账号u2,并删除用户账号u3。请写出完成本题所述功能的命令序列 useradd u1 -添加用户u1 passwd 123456 -为用户添加密码123456 passwd -l u2 -锁定用户账号u2 userdel u3 -删除用户账号u3 4.写出将/abc目录中所有文件及目录打包压缩成文件abc.tar.gz的命令。 tar -zcvf abc.tar.gz /bc 5.创建一个用户,用户名为user02,所属私有组和标准组为group01,用户主目录为/home/user02,用户登录shell为/bin/bash。 useradd -g group01 –G group01 –d /home/user02 -s /bin/bash user02 五、综合题(1题10分,1题10分,共20分) 1、已知管理员用户的主目录结构如图2所示: (1)管理员用户目前在/R/B/T4/S0中,分别写出执行以下命令后,管理员在目录系统中的位置。 cd /R cd .. /R/B/T4 cd ../.. /R/B cd / / cd ~ /R (2)写出删除目录C的两种办法。 1.rm -rf /root/C 2.rm /root/T3 rm /root/T4 rmdik/root/C (3)已知管理员用户在/R目录中,分别用绝对路径和相对路径方式写出将目录/R/C/T3/S0中的文件复制到/R/D/T5目录中的方法。 cp /R/C/T3/S0 /R/D/T5 cp /C/T3/S0 /D/T5 2、设计一个shell程序计算n的阶乘。要求: (1) 从命令行接收参数n; (2) 在程序开始后立即判断n的合法性,即是否有参数,若有是否为正整数,若非法请给错误提示; (3) 最后输出计算的结果。 #!/bin/sh echo “please input your number n:” read n #if(( ! -n “$n”)); then if test -z “$”; then echo “n is no data !” exit 1 else if(( $n<=));then echo -e “$n is no zhengzhengshu.\n”; exit 1 fi fi fact=1;tmp=1 while[$tmp -le $n ] do fact=$((fact*tmp));tmp=$((++tmp)); done echo "fact=$fact"

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值