- Linux组成kernel+rootfs
- kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安
- rootfs: 程序和glibc
- 内核设计流派:
- 单内核(monolithic kernel) :Linux
- 微内核(micro kernel) :Windows, Solaris
- Linux 内核特点:
- 支持模块化:.ko (内核对象)
- 组成部分:
- CentOS6启动流程
- POST :Power-On-Self-Test ,加电自检
- ROM :BIOS ,Basic Input and Output System
- RAM :CMOS 互补金属 氧化物半导体
- bootloader: 引导加载器,引导程序
- windows: ntloader ,仅是启动OS
- Linux :功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
- LILO :LInux LOader
- MBR:
- GRUB: GRand Unified Bootloader 多重操作系统启动管理器。用来引导不同系统,如windows,linux。
- kernel: :
- ramdisk
- 系统初始化
- ramdisk 管理
- init 程序的类型:
- SysV: init, CentOS 5 之前
- Upstart: init,CentOS 6
- Systemd :systemd, CentOS 7
- 运行级别:为系统运行或维护等目的而设定;0-6 :7 个级别
- init 初始化
- CentOS 5 的inittab 文件
- CentOS 6 /etc/inittab
- 示例:
- /etc/rc.d/rc.sysinit: 系统初始化脚本
- /var/lock/subsys/ 运行中的服务会在次目录生成对应的文件,作为服务是否启动试的判据
- 务在所有级别的启动或关闭设定情形:
- 添加:
- 删除:
- 修改指定的链接类型
- ntsysv
- xinetd 管理的服务
- service 命令:手动管理服务
- service 服务 start|stop|restart
- service --status-all
- 瞬态(Transient )服务被xinetd 进程所管理
- 用chkconfig 控制的服务:
- 总结:
- grub legacy
- CentOS 6 启动流程:
- grub: GRand Unified Bootloader
- 配置文件:/boot/grub/grub.conf MBR引导->GRUB->加载内核->启动init进程->读取/etc/inittab文件,/etc/init/*.conf文件
执行/etc/rc.d/rc.sysyinit初始化脚本->执行/etc/rc.d/rc脚本->加载/etc/rc#.d/下所有脚本(#为启动级别,这里是开机要启动的各种服务)->执行/etc/rc.d/rc.local脚本(所有服务启动后执行此脚本)->执行/bin/login 程序,进入登录状态
1. 加载BIOS 的硬件信息,获取第一个启动设备
2. 读取第一个启动设备MBR 的引导加载程序(grub) 的启动信息
3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4. 核心执行init 程序,并获取默认的运行信息
5.init 程序执行/etc/rc.d/rc.sysinit 文件
6. 启动核心的外挂模块
7.init 执行运行的各个批处理文件(scripts)
8.init 执行/etc/rc.d/rc.local
9. 执行/bin/login 程序,等待用户登录
10. 登录之后开始以Shell控制主机
注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d的一个服务脚本,而是指向了 /etc/rc.d/rc.local脚本
若不想把服务脚本放置于/etc/rc.d/init.d/目录 且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中/etc/rc.d/rc.local在指定运行级别脚本后运行
可以根据情况进行自定义修改
POST :Power-On-Self-Test ,加电自检是BIOS 功能的一个主要部分 。负责 完成对CPU 、主板、内存 、硬盘 子系统、显示 子系统、 串并行接 口、键盘、CD-ROM 光驱 等 硬件情况 的 检测 。
ROM :BIOS ,Basic Input and Output System保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、 开机加电 自检程序和系统启动自举程序等。
RAM :CMOS 互补金属 氧化物半导体保存各项 参数的设定按次序查找引导设备,第一个有引导程序的设备为本次启动设备
bootloader: 引导加载器,引导程序 windows: ntloader ,仅是启动OS Linux :功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核 LILO :LInux LOader MBR:446: bootloader, 64: 分区表, 2: 55AA
GRUB: GRand Unified Bootloader 多重操作系统启动管理器。用来引导不同系统,如windows,linux。GRUB 0.X: GRUB Legacy, , GRUB2
primary boot loader : 1st stage ,1.5 stage secondary boot loader :2nd stage ,分区文件
kernel: :- 自身初始化:
- 探测可识别到的所有硬件设备
- 加载硬件驱动程序(借助于ramdisk 加载驱动)
- 以只读方式挂载根文件系统
- 运行用户空间的第一个应用程序:/sbin/init
内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件 访问,并加载相应的硬件驱动
- ramdisk --> ramfs 提高速度 CentOS 5: initrd 工具程序:mkinitrd
- CentOS 6 ,7: initramfs 工具程序:mkinitrd, dracut
POST --> BootSequence (BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs( 只读) --> init (systemd) )
- boot目录中的initramfs-3.10.0-327.el7.x86_64.img 文件被误删,如何恢复之?
## ramdisk 文件的制作:
(1) mkinitrd 命令
为当前正在使用的内核重新制作ramdisk 文件 mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) (2) dracut 命令
为当前正在使用的内核重新制作ramdisk 文件 dracut /boot/initramfs-$(uname -r).img $(uname -r)
init 程序的类型: SysV: init, CentOS 5 之前配置文件:/etc/inittab
Upstart: init,CentOS 6配置文件:/etc/inittab, /etc/init/*.conf
Systemd :systemd, CentOS 7配置文件:/usr/lib/systemd/system /etc/systemd/system
/sbin/init CentOS6之前
运行级别:为系统运行或维护等目的而设定;0-6 :7 个级别 numcomplications0关机1单用户模式(root 自动登录), single, 维护模式2多用户模式,启动网络功能,但不会启动NFS ;维护模式3多用户模式,正常模式;文本界面4预留级别;可同3 级别5多用户模式,正常模式;图形界面6重启
init 初始化默认级别: 3, 5 切换级别:init # 查看级别:runlevel ; who -r runlevel N 3 N为占位符,如果是从其他级别切换过来,则n显示的上次的运行级别
CentOS 5 的inittab 文件init 读取其初始化文件:/etc/inittab 初始运行级别(RUN LEVEL) 系统初始化脚本 对应运行级别的脚本目录 捕获某个关键字顺序 定义UPS 电源终端/ 恢复脚本 在虚拟控制台生成getty 在运行级别5 初始化X
配置文件:/etc/inittab 每一行定义一种action 以及与之对应的process
id:runlevel:action:process action: wait: 切换至此级别运行 一次 respawn :此process 终止,就重新启动之 initdefault :设定默认运行级别;process 省略 sysinit :设定系统初始化方式,此处一般为指定 /etc/rc.d/rc.sysinit ca::ctrlaltdel:/sbin/shutdown -t3 -r now #ctrl+alt+del在字符界面重启 #设置f1-f6六个虚拟终端,可以增加 # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 7:2345:respawn:/sbin/mingetty tty10 # 新增的 # Run xdm in runlevel 5 x:5:respawn:/etc/X11/prefdm -nodaemon #设置5为图形界面 id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1... l6:6:wait:/etc/rc.d/rc 6
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now(t3延时3秒)生产中最好注释此行,防止误操作重启(对图形界面无效)
CentOS 6 /etc/inittab/etc/inittab 设置系统默认的运行级别
id:3:initdefault:
示例:破解CentOS5 和6 的root 口令
- /etc/init/control-alt-delete.conf(该文件中最好注释掉ctrl+alt+del重启功能,防止误操作重启)
- /etc/init/tty.conf
- /etc/init/start-ttys.conf
- /etc/init/rc.conf
- /etc/init/prefdm.conf # 定义图形界面的启动级别
- (1) 设置主机名
- (2) 设置欢迎信息
- (3) 激活udev 和selinux
- (4) 挂载/etc/fstab 文件中定义的文件系统
- (5) 检测根文件系统,并以读写方式重新挂载根文件系统
- (6) 设置系统时钟
- (7) 激活swap 设备
- (8) 根据/etc/sysctl.conf 文件设置内核参数
- (9) 激活lvm 及software raid 设备
- (10) 加载额外设备的驱动程序
- (11) 清理操作
/var/lock/subsys/ 运行中的服务会在次目录生成对应的文件,作为服务是否启动试的判据说明:rc N --> 意味着读取/etc/rc.d/rcN.d/ K*: K##* :## 运行次序;数字越小,越先运行;数字 越小的服务,通常为依赖到别的服务 S*: S##* :## 运行次序;数字越小,越先运行;数字 越小的服务,通常为被依赖到的服务 for srv in /etc/rc.d/rcN.d/K*; do $srv stop done for srv in /etc/rc.d/rcN.d/S*; do $srv start done
# chkconfig命令
务在所有级别的启动或关闭设定情形:chkconfig [–list] [name]
添加:SysV 的服务脚本放置于/etc/rc.d/init.d (/etc/init.d) chkconfig --add name
删除:#!/bin/bash #LLLL 表示初始在哪个级别下启动,- 表示都不启动 # chkconfig: LLLL nn nn
chkconfig --del name
修改指定的链接类型chkconfig [–level levels] name –level LLLL: 指定要设置的级别;省略时表示2345
ntsysv xinetd 管理的服务 service 命令:手动管理服务 service 服务 start|stop|restart service --status-all 瞬态(Transient )服务被xinetd 进程所管理进入的请求首先被xinetd 代理 配置文件:/etc/xinetd.conf 、/etc/xinetd.d/与libwrap.so 文件链接
用chkconfig 控制的服务:chkconfig tftp on
总结:1:2345:respawn:/usr/sbin/mingetty tty1 2:2345:respawn:/usr/sbin/mingetty tty2 ... 6:2345:respawn:/usr/sbin/mingetty tty6 mingetty 会自动调用login 程序 x:5:respawn:/etc/X11/prefdm -nodaemon
开机POST加电自检,检测cpu内存等硬件是否有问题,检测完成后在BISO里面查找引导计算机启动的设备的设置,该设置存储于CMOS,如果是硬盘引导启动会读取硬盘的MBR(446字节+64+2),此时进入stage1;接下来加载/boot/文件系统,由于446字节无法存储/boot文件系统,所有在446字节里面存储的是找到文件系统的指针,这个阶段叫1.5阶段;然后进入stage2读取/boot/grub/grub.conf,加载内核vmlinuz,为了挂载根先加载initramfs作为虚拟文件系统来识别根文件系统;根挂载完后访问下面第一个程序/sbin/init,此程序将读取操作系统配置/etc/inittab,读取运行级别设置,进行服务初始化/etc/rc.d/rc.sysinit,继而读取/etc/fstab挂载,根据相应的启动级别加载/etc/rc.d/rcn.d/下面的服务脚本,先执行k开头的(S25netfs会重读fatab挂载网络资源)最后执行/etc/rc.d/rc.local(s99local)脚本(非服务脚本),然后出现登录界面
- /sbin/init --> (/etc/inittab) --> 设置默认运行级别 -->运行系统初始脚本、完成系统初始化 --> ( 关闭对应下需要关闭的服务) 启动需要启动服务 --> 设置登录终端
- CentOS 6 init 程序为: upstart, 其配置文件: /etc/inittab, /etc/init/*.conf法,配置文件的语法遵循upstart配置文件语法格式,和CentOS5不同
POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init –
(/etc/inittab, /etc/init/*.conf) --> 别 设定默认运行级别 --> 系统 初始化脚本 rc.sysinit --> 务 关闭或启动对应级别的服务 --> 启动终端
grub: GRand Unified Bootloadergrub 0.97: grub legacy grub 2.x: grub2 grub legacy: stage1: mbr stage1_5: mbr 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统 stage2 :磁盘分区(/boot/grub/)
配置文件:/boot/grub/grub.conf root (hd#,#) grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE grub> initrd /initramfs-VERSION-RELEASE.img grub> boot grub legacy 配置文件 配置文件:/boot/grub/grub.conf 设定项含义default=#设定默认启动的菜单项;落单项(title) 编号从0 开始timeout=#指定菜单项等待选项选择的时长splashimage=(hd#,#)/PATH/XPM_FILE菜单背景图片文件路径hiddenmenu隐藏菜单password [–md5] STRING启动菜单编辑认证title TITLE定义菜单项“标题”, 可出现多次root (hd#,#)查找stage2及kernel文件所在设备分区;为grub 的根kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]启动的内核initrd /PATH/TO/INITRAMFS_FILE内核匹配的ramfs 文件password [–md5|–encrypted ] STRING启动选定的内核或操作系统时进行认证 grub加密### 生成grub 口令
- grub-md5-crypt
- grub-crypt
破解root 口令:vim /etc/grub.conf default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu password --encrypted $6$6zfuNMferERFGffg/hf$JdwlfhK
启动系统时,设置其运行级别1
进入单用户模式 :- (1) 编辑grub 菜单( 选定要编辑的title ,而后使用e 命令)
- (2) 在选定的kernel 后附加 1, s, S 或single 都可以
- (3) 在kernel 所在行,键入“b”
- (1) grub-install
安装grub stage1 和stage1_5 到/dev/DISK 磁盘上,并 复制GRUB到 相关文件到 DIR/boot 目录下 grub-install --root-directory=DIR /dev/DISK
- (2) grub
实例grub> root (hd#,#) grub> setup (hd#)
- 破解root 口令,并为grub 设置保护功能 开机enter 按a->1或s或S或single进入单用户模式,修改密码
- 制作启动菜单界面背景图
yum install ImageMagick onvert -resize 640x480 -colors 14 win.jpg win.xpm head -n 10 win.xpm cp win.xpm /boot/grub /boot/grub gzip win.xpm
- 删除vmlinuz 和initramfs 文件后无法启动, 两种方法恢复之
#initramfs文件 chroot /mnt/sysimage df#可以看到原系统的磁盘设备 cd /boot ls #是initframs内核文件丢失导致,解决方案: #修复initramfs文件 mkinitrd ./initramfs-`uname -r`.img `uname -r` #如果是CenOS5 则执行 mkinitrd ./initrd-`uname -r`.img `uname -r` 若修复失败可重装内核 #查看当前系统使用的内核 uname -r 从光盘安装内核(注意要先切换根) lsblk 可以看到光盘设备是sr0 挂载光盘 mkdir /mnt/cdrom mount /dev/sr0 /mnt/cdrom df rpm -ivh kernel-2.6.e64.......rpm --force 启动后出现grub,则需要修复grub chroot /mnt/sysimage grub-install /dev/sda exit exit reboot #vmlinuz文件 光盘里面/images/preboot/vmlinuz和/isolinux/vmlinuz即为内核文件,可以直接cp过来 # vmlinuz的文件名可参考/boot/grub/grub.conf中的配置,亦可直接改配置中的文件名,两者保持一致即可 cp -av /mnt/cdeom/isolinux/vmlinuz /mnt/sysimage/boot/vmlinuz-`uname -r`
- /etc/inittab 设置默认6 恢复之
开机回车,a->1|s|signal进入单用户模式 或者 开机回车,a->3 然后将/etc/inittab改回来
- 某个服务无法启动,系统无法启动,解决之
cd /etc/init.d/ vim testsrv 输入以下内容 #!/bin/bash #chkconfig:2345 99 00 #description:this service is used for test case $1 in start) echo 'the service is started' touch /root/testsrv ;; stop) echo 'the service is stopped' rm -f /boot/testsrv ;; status) [ -f /boot/testsrv ] && echo 'service testsrv is running...'||echo 'service testrv is stopped' ;; *) echo 'Usage start|stop|status' 注意#chkconfig:2345 99 00这里开机启动的序号不能大于99 #给执行权限 chmod +x testsrv chkconfig --add testsrv chkconfig testsrv --level 1 on 修改启动时间 reboot #!/bin/bash #chkconfig:12345 00 00 #description:this service is used for test case $1 in start) echo 'the service is started' sleep 100000 touch /root/testsrv ;; 由于启动序号设置太小,网络服务还没起来,无法连接xshell,而单用户模式也设置了开机启动,所以需要按照如下方法修复 开机按回车进入内核选则项 按a 在quite后添加 init=/bin/bash(默认为/sbin/init) 此时开机进入bash以后根目录是以只读方式挂载的,需要重新挂载 mount -o remount,rw / chkconfig --level 12345 testsrv off exit reboot
- 破坏MBR446,恢复之
注意grub.conf文件会丢失,要提前备份
#备份mbr dd if=/dev/sda of=/root/mbr bs=1 count=466 进入单用户模式 chroot /mnt/sysimage grub-install /dev/sda 从“/dev/sda”中找到GRUB程序并进行修复 设备名参考 (hd#,#) hd#: 磁盘编号,用数字表示;从0 开始编号 #: 分区编号,用数字表示; 从0 开始编号 (hd0,0) 第一块硬盘,第一个分区
- 破坏stage1.5
grub命令依赖于grub目录里面的文件
grub grub> root (hd#,#) grub> setup (hd#) #备份分区表 dd if=/dev/sda of=/root/mbr count=446 bs=1 conv=notrunc # 备份grub.conf cp -av /boot/grub/grub.conf /root/ # 破坏mbr dd if=/dev/zero of=/dev/sda bs=1 count=446 conv=notrunc 启动时会出现operating System not found的提示,说明没有mbr来引导操作系统 reboot chroot /mnt/sysimage df 查看boot和/是否挂载 grub root (hd0,0) # (hd0,0)表示第一块硬盘的第一个分区,也就是sda的sda1 setup (hd0) 1.5阶段前512字节记录的是后面27个扇区具体要读取的内容,如果将后面的内容破坏掉,系统仍无法正常启动 #备份 dd if=/dev/sda of=/root/mbr2 bs=1 count=2048 skip=512 #破坏 dd if=/dev/zero of=/dev/sda bs=1 count=2048 seek=512 conv=notrun c reboot 此时开机界面不会出现倒计时 进入救援模式 用grub或grub-install修复 chroot /mnt/sysimage grub-install /dev/sda sync exit exit reboot
- 破坏stage2
#备份/boot/grub/grub.conf #清空/boot/grub目录 rm -rf /boot/grub reboot # 进入救援模式 df 确保/boot已挂载 chroot /mnt/sysimage df grub-install /dev/sda sync exit exit reboot 此时由于没有/boot/grub/grub.conf文件,开机会进入grub命令行 输入ker(tab补全) /v(tab)补全 root=/dev/vg0/root selinux=0 回车 ini(tab补全) /initra(tab补全) 回车 boot (也可以在救援模式下手写grub文件)
8.为grub加口令
#生成md5口令 grub-md5-crypt #grub-crypt (sha512) [root@lee: /root]# grub-crypt Password: Retype password: $6$IwfTNtZWfvNHA2ec$RWiVdrt78Tbbw2fsvAA/icQWCfIgy3KGkoFJHRntceUBwK.Vnn9Mhmz1JfRt/yWdtEbbMaWeWFSTiYUuxTiPn. 添加至配置文件 default=0 timeout=5 #sha512的加密方式需要指定--encrypted password --encrypted $6$IwfTNtZWfvNHA2ec$RWiVdrt78Tbbw2fsvAA/icQWCfIgy3KGkoFJHRntceUBwK.Vnn9Mhmz1JfRt/yWdtEbbMaWeWFSTiYUuxTiPn. splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS 6 (2.6.32-642.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg_lee-lv_root rd_LVM_ LV=vg_lee/lv_root rd_NO_LUKS rd_LVM_LV=vg_lee/lv_swap rd_NO_MD crashkernel=128M LANG =zh_CN.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-642.el6.x86_64.img # 也可直接用明文 password $1$fYmOJ/$0n6c5b/WPxt0nDOJPsrJq0
- 删除/boot/ 所有内容,然后恢复
1)/boot/vmlinuz cp /mnt/cdrom/isolinux/vmlinuz /boot/vmlinuz-`uname -r` 2)/boot/initramfs.img mkinitrd /boot/initramfs-`uname -r`.img `uname -r` rpm -ivh /mnt/cdrom/Packages/kernel.XXX.rpm 3)grub/* grub-install /dev/sda 4)grub/grub.conf default=0 timeout=3 title 23M kernel /vmlinuz-XXXX root=/dev/sda2 initrd /initramfs-XXXX.img `` 10. 在普通分区,删除/boot/ 所有内容及/etc/fstab,恢复
1)救援模式,先/etc/fastab恢复 df blkid mount /dev/sda1 /mnt/sda1 mount /dev/sda2 /mnt/sda2 mount /dev/sda3 /mnt/sda3 vim /etc/fstab 2)reboot,重新进入救援模式 df 确保挂载成功 3)修复grub grub-install /dev/sda 4)修复kernel initramfs.img mount /dev/sr0 /mnt/ rpm -ivh /mnt/Packages/kernel-XXX.rpm --force 5)vim /boot/grub/grub.conf
11. 使用逻辑卷,删除/boot/ 所有内容及/etc/fstab,恢复
1)救援模式,先/etc/fastab恢复 lsblk(失效) df blkid fdisk -l sda1带*为boot分区 mkdir /mnt/{sda1,sda2} mount /dev/sda1 /mnt/sda1 mount /dev/mapper/vg_lee-lv_root /mnt/sda2 lvdisplay (可以看到NOT available) vgchange -ay 激活卷组 lvdisplay
vim /mnt/sda2/fstab(r!blkid) 2)reboot,重新进入救援模式 df 确保挂载成功 3)修复grub grub-install /dev/sda 4)修复kernel initramfs.img mount /dev/sr0 /mnt/ rpm -ivh /mnt/Packages/kernel-XXX.rpm --force 5)vim /boot/grub/grub.conf
default=0 timeout=5 title=CentOs6.8 kernel /vmlinuz-2.6.32-642.el6.x86_6 root=/dev/mapper/vg_lee-lv_root selinux=0 initrd /initramfs-2.6.32-642.el6.x86_64.img
免责声明: 一切资料仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。资料来自网络,版权争议与本人无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我联系处理。
更=多=课程请加=v=信=== a518958666 基于SpringCloud 微服务架构 广告系统设计与实现 系统学习docker docker前后端分离实战 Docker+Kubernetes(k8s)微服务容器化实战 Go语言实战抽奖系统 Go语言开发分布式任务调度 轻松搞定高性能Crontab 20小时快速入门go语言 Java从零到企业级电商项目实战 SSM主流框架入门与综合项目实战 Socket网络编程进阶与实战
- 基于Python玩转人工智能最火框架 TensorFlow应用实践
- webapp书城开发
- 组件方式开发 Web App全站
- 前端到后台ThinkPHP开发整站
- MySQL性能管理及架构设计
- 响应式开发一招致胜
- 掌握React Native技术转型随意切换
- Yii 2.0开发一个仿京东商城平台
- Python高效编程技巧实战
- 快速开发轻量级App
- 6小时 jQuery开发一个前端应用
- Android架构师之路 网络层架构设计与实战
- 程序猿的内功修炼,学好算法与数据结构
- Vue.js高仿饿了么外卖App 1.0到2.0版本完美升级
- Android 专项测试 Python篇
- 微信小程序入门与实战 常用组件API开发技巧项目实战
- Android 5.0+高级动画开发 矢量图动画 轨迹动画路径变换
- Android自动化测试实战 Java篇 主流工具 框架 脚本
- Python升级3.6 强力Django+杀手级Xadmin打造在线教育平台
- 高性能可扩展MySQL数据库设计及架构优化 电商项目
- 带领新手快速开发Android App
- Angular JS 仿拉勾网 WebApp 开发移动端单页应用
- 组件化封装思想实战Android App
- React.js入门基础与案例开发
- Yii 2.0进阶版 高级组件 优化京东平台
- 双平台真实开发GitHub App React Native技术全面掌握
- 玩转算法面试 leetcode题库分门别类详细解析
- Thinkphp 5.0 仿百度糯米开发多商家电商平台
- ThinkPHP5.0正式版第二季:实战开发企业站【完结】
- 最容易上手的Vue 2.0入门实战教程
- 聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎
- Angular 4.0从入门到实战 打造股票管理网站
- Java Spring带前后端开发完整电商平台
- Node.js项目线上服务器部署与发布
- Java大牛 带你从0到上线开发企业级电商项目
- ThinkPHP 5.0开发微信小程序商场打通全栈项目架构
- ES6零基础教学 解析彩票项目
- React高级实战 打造大众点评 WebApp
- BAT大咖助力 全面升级Android面试
- 全程MVP手把手 打造IM即时通讯Android APP
- 微信服务号+Yii 2.0构建商城系统全栈应用
- 机器学习入门 Scikit-learn实现经典小案例
- 腾讯大牛亲授 Web 前后端漏洞分析与防御技巧
- IT段子手详解MyBatis遇到Spring 秒学Java SSM开发大众点评 难度中级
- Vue 2.0 高级实战-开发移动端音乐 WebApp
- 全新升级 Kotlin系统入门与进阶
- 对接真实数据 从0开发前后端分离企业级上线项目
- Android应用发展趋势必备武器 热修复与插件化
- Laravel 快速开发简书
- 以慕课网日志分析为例 进入大数据 Spark SQL 的世界
- Get全栈技能点 Vue2.0/Node.js/MongoDB 打造商城系统
- Python操作三大主流数据库
- 前端JavaScript面试技巧
- Java SSM快速开发仿慕课网在线教育平台
- Android通用框架设计与完整电商APP开发
- Spring Boot企业微信点餐系统
- 开发微信全家桶项目 Vue/Node/MongoDB高级技术栈全覆盖
- Web自动化测试 Selenium基础到企业应用
- 高性能的 PHP API 接口开发
- 企业级刚需Nginx入门,全面掌握Nginx配置+快速搭建高可用架构
- Angular 打造企业级协作平台
- Python Flask 构建微电影视频网站
- Spring Boot带前后端 渐进式开发企业级博客系统
- 从零开发Android视频点播APP
- 前端跳槽面试必备技巧
- 10小时入门大数据
- 让你页面速度飞起来 Web前端性能优化
- Google面试官亲授 升级Java面试
- LoadRunner 工具使用 企业级性能测试实战
- 360大牛带你横扫PHP职场 全面解读PHP面试
- Python前后端分离开发Vue+Django REST framework实战
- Spring Security技术栈开发企业级认证与授权
- PHP开发高可用高安全App后端
- 看得见的算法 7个经典应用诠释算法精髓
- 全网最热Python3入门+进阶 更快上手实际开发
- Android互动直播APP开发
- JMeter 深入进阶性能测试体系 各领域企业实战
- Node.js入门到企业Web开发中的应用
- SSM到Spring Boot 从零开发校园商铺平台
- 深度学习之神经网络核心原理与算法
- BAT大厂APP架构演进实践与优化之路
- PHP秒杀系统 高并发高性能的极致挑战
- Java开发企业级权限管理系统
- Redux+React Router+Node.js全栈开发
- Redis从入门到高可用,分布式实践
- ES6+ 开发电商网站的账号体系 JS SDK
- Spark Streaming实时流处理项目实战
- 快速上手Linux 玩转典型应用
- Python接口测试框架实战与自动化进阶
- Python3数据科学入门与实战
- Android高级面试 10大开源框架源码解析
- 移动端App UI 设计入门与实战
- 精通高级RxJava 2响应式编程思想
- Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式
- Webpack + React全栈工程架构项目实战精讲
- 快速上手Ionic3 多平台开发企业级问答社区
- 全面系统讲解CSS 工作应用+面试一步搞定
- 跨平台混编框架 MUI 仿豆瓣电影 APP
- Kotlin打造完整电商APP 模块化+MVP+主流框架
- BAT大牛亲授 基于ElasticSearch的搜房网实战
- Python3入门机器学习 经典算法与应用
- Java秒杀系统方案优化 高性能高并发实战
- 四大维度解锁 Webpack3.0 工具全技能
- 手工测试企业项目实践及面试提升
- 基于Storm构建实时热力分布项目实战
- Java深入微服务原理改造房产销售平台
- 全网稀缺Python自动化运维项目实战
- 前端成长必经之路-组件化思维与技巧
- 基于Python玩转人工智能最火框架 TensorFlow应用实践
- Koa2框架从0开始构建预告片网站
- React16+React-Router4 从零打造企业级电商后台管理系统
- Google资深工程师深度讲解Go语言
- 微信小游戏入门与实战 刷爆朋友圈
- Elastic Stack从入门到实践
- Python移动自动化测试面试
- Python3数据分析与挖掘建模实战
- Tomcat+Memcached/Redis集群 构建高可用解决方案
- 系统学习Docker 践行DevOps理念
- Spring Cloud微服务实战
- 揭秘一线互联网企业 前端JavaScript高级面试
- OpenCV+TensorFlow 入门人工智能图像处理
- 基于Golang协程实现流量统计系统
- 移动端自动化测试Appium 从入门到项目实战Python版
- UI动效设计从入门到实战 PC与移动界面设计必学
- Java并发编程与高并发解决方案
- Vue核心技术 Vue+Vue-Router+Vuex+SSR实战精讲
- 韩天峰力荐 Swoole入门到实战打造高性能赛事直播平台
- Docker+Kubernetes(k8s)微服务容器化实践
- Python Flask高级编程
- ZooKeeper分布式专题与Dubbo微服务入门
- App界面设计利器Sketch 精选案例合集
- Python高级编程和异步IO并发编程
- 新浪微博资深大牛全方位剖析 iOS 高级面试
- Vue2.5开发去哪儿网App 从零基础入门到实战项目
- 最全面的Java接口自动化测试实战
- HBase+SpringBoot实战分布式文件存储
- Gradle3.0自动化项目构建技术精讲+实战
- 玩转数据结构 从入门到进阶
- MyCAT+MySQL 搭建高可用企业级数据库集群
- 验证码图像识别,快速掌握TensorFlow模型构建与开发
- SpringBoot2.0不容错过的新特性 WebFlux响应式编程
- 响应式开发一招致胜
- jquery源码分析
- AngularJS全栈开发知乎
- 揭秘一线互联网企业 前端JavaScript高级面试
- JavaScript版 数据结构与算法
- Koa2 实现电影微信公众号前后端开发
- Koa2+Nodejs+MongoDb 入门实战视频教程
- Node.js 从零开发 web server博客项目 前端晋升全栈工程师必备
- Vue.js 源码全方位深入解析
- Vue核心技术 Vue+Vue-Router+Vuex+SSR实战精讲
- Vue全家桶+SSR+Koa2全栈开发美团网
- 飞速上手的跨平台App开发
- 前端JS基础面试技巧
- 前端跳槽面试必备技巧
- 让你页面速度飞起来 Web前端性能优化
- 微信小程序商城构建全栈应用
- 移动Web APP开发之实战美团外卖
- Thinkphp 5.0 仿百度糯米开发多商家电商平台
- ThinkPHP5.0正式版第二季:实战开发企业站
- ThinkPHP 5.0开发微信小程序商场打通全栈项目架构
- 前端到后台ThinkPHP开发整站
- PHP从基础语法到原生项目开发
- PHP高性能 高价值的PHP API
- 360大牛全面解读PHP面试
- PHP开发高可用高安全App后端
- PHP秒杀系统 高并发高性能的极致挑战
- Swoole入门到实战打造高性能赛事直播平台
- YII 2.0开发一个仿京东商城平台
… … 更=多=课程请加=v=信=== a518958666
╭══════════════════════════════════════════╮ ║ ║ 说明:教程版权归原作者所有,本人只是负责搜集整理,本人 ║ ║ 不承担任何技术及版权问题。本人分享的任何教程仅提 ║ ║ 供学习参考,不得用于商业用途,请在下载后在24小时 ║ ║ 内删除。 ║ ║ ║ ║ 1.请遵守中华人民共和国相关法律、条例 ║ ║ 2.本人提供的各类视频教程仅供研究学习,本人不承担观看 ║ ║ 本教程后造成的一切后果 ║ ║ 3.本人不保证提供的教程十分安全或是完全可用,请下载后 ║ ║ 自行检查 ║ ║ 4.本人提供的教程均为网上搜集,如果该程序涉及 ║ ║ 或侵害到您的版权请立即写信通知我们。 ║ ║ 5.如不同意以上声明,请立即删除,不要使用,谢谢合作 ║ ║ ║ ╰═════════════════════════════════════════╯
CentOS6启动和内核管理
文章目录
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?