Skip to content

Commit 6d22509

Browse files
MaxIdeaMaxIdea
MaxIdea
authored and
MaxIdea
committed
add the omissive files
1 parent 2f43565 commit 6d22509

File tree

172 files changed

+122
-163562
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

172 files changed

+122
-163562
lines changed

BugsAndSolution/Ubuntu14.04Crash.md

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# System Crash
2+
3+
在安装udev后,并没有达到自己的目的,所以决定卸载udev,使用命令sudo apt-get remove udev后,系统崩溃,无法启动。提示缺少/sbin/init文件。
4+
5+
## 崩溃原因猜想
6+
7+
首先说明卸载指令
8+
* apt-get remove 移除软件并保留配置文件
9+
* apt-get remove --purge 卸载并删除配置文件
10+
* apt-get autoremove 将自动卸载所有自动安装且不再使用的软件包(可能删除一些系统必要的包,慎重)
11+
12+
所以指令应该没问题,怀疑因为udev是系统组件,所以导致系统卸载了一些依赖关系,进而系统无法启动。
13+
14+
### 解决步骤及结果
15+
16+
1、采用了网上一篇[ubuntu16.04使用sudo apt-get autoremove导致系统崩溃的解决办法](https://blog.csdn.net/TAB_YLS/article/details/79422631)选择其中的修复grub,结果重新安装了grub,导致我的grub的操作系统选择界面也崩溃了(我安装的win7和ubuntu14.04的双系统),grub只能命令行。
17+
这个方法不一定不行,可以考虑使用boot-repair的磁盘修复模式也许好使。
18+
19+
2、接下来解决grub命令行的问题,找到的解决方案中要求使用root指令,但是grub2之后的版本已经不支持了,找到的[解决方案](https://www.linuxidc.com/Linux/2014-10/108238.htm)
20+
* ls //找到当前有哪些磁盘,结果类似(hd0,msdos0)...
21+
* cat (hd0.msdos0) //或者ls (hd0,msdos0),依次查看,哪个是ubuntu的启动盘
22+
* linux /boot/vmlinuz* ro root=/dev/sda1 //*为内核版本号,可使用tab补全
23+
* initrd /initrd.img
24+
* boot
25+
成功启动,如果系统可以正常运行,执行
26+
* sudo update-grub
27+
* sudo grub-install /dev/sda
28+
恢复。
29+
30+
我们这里ubuntu系统仍然没有恢复。
31+
32+
3、依据网上的方案,制作同版本14.04的启动盘,设置从U盘启动,选择try ubuntu,然后挂载崩溃系统的文件系统,除了/home目录外,使用cp命令将u盘中根文件系统的内容复制到崩溃系统的中。重新启动系统。此时恢复了命令行模式的系统登录。但是图形界面工作不正常,输入用户名和密码后,崩溃重新进入到登录界面。
33+
34+
4、网上需要重新安装GPU驱动,但是重新安装后仍然没有恢复,由于现在并不影响使用,暂时不进行进一步的修复。
35+
存放几个链接在这里
36+
https://www.jianshu.com/p/34236a9c4a2f
37+
https://blog.csdn.net/u014682691/article/details/80605201
38+
https://blog.csdn.net/liuyan20062010/article/details/78582940
39+
http://www.mamicode.com/info-detail-1434964.html
40+
41+

LinuxBasics/Systemd-components.png

63.7 KB
Loading
110 KB
Loading

LinuxBasics/startProcess.md

+71-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# OS 启动
22

3+
首先ROM中的BIOS进行硬件自检,根据自己的设置(开机按F2)按顺序检设备中是否有启动程序(检测MBR512个字节中最后两个字节为0x55 0xAA则可以启动)。之后运行bootloader如grub.
4+
35
linux有3种启动方式:**System V init****upstart****systemd**
46
***
57

@@ -52,8 +54,8 @@ inittab文件中的每一项都是如下格式:
5254
5355
## upstart
5456

55-
upstart中,程序执行单位被称作作业(Job),所有的init作业都必须将其配置文件(配置文件指出作业什么时候start,什么时候stop)放置于目录/etc/init/之下。Upstart启动时,从 /etc/init/ 目录中读取各个Job的配置文件,获取所有Job。然后发出Startup信号,所有监听这个信号的作业会被执行。在作业执行过程中,作业本身也可以自己发出信号,其他监听这个信号的服务接着就会被启动执行。Upstart通过这样的方式来达到异步和实时控制作业的启动执行。
56-
基于事件的 Upstart 是 /sbin/init 守护进程的替代品,它仅为在需要那些服务的时候启动服务而生,
57+
upstart中,程序执行单位被称作作业(Job),所有的init作业都必须放置于目录/etc/init/之下。Upstart启动时,从 /etc/init/ 目录中获取所有Job。然后发出Startup信号,所有监听这个信号的作业会被执行。在作业执行过程中,作业本身也可以自己发出信号,其他监听这个信号的服务接着就会被启动执行。Upstart通过这样的方式来达到异步和实时控制作业的启动执行。
58+
基于事件的 Upstart 是 /sbin/init 守护进程的替代品, upstart包提供了新的init daemon
5759

5860
在Upstart之下,你可以有2种方式**添加系统服务程序**
5961
* 按照System V 规则编写服务,并置于相应位置。
@@ -63,11 +65,78 @@ upstart中,程序执行单位被称作作业(Job),所有的init作业都必
6365

6466
![upstart工作流程](./upstartWorkProcess.png)
6567

68+
### upstart的术语
69+
70+
#### job
71+
72+
一个工作(job)是init可以理解的一系列指令(类似具有特定规则的脚本)。典型的指令包括一个程序(二进制文件或是脚本)和事件的名称。Upstart init daemon会在事件触发的时候运行相应的程序。用户可以分别用 initctl start 和 stop 命令手动启动或终止一项工作。工作又可以分为任务和服务。
73+
74+
>用户可以定义自己的job放在/etc/event.d/目录下。
75+
```
76+
$cat /etc/event.d/myjob
77+
78+
#触发event为hithere
79+
start on hithere script
80+
echo "Hi"
81+
end script
82+
```
83+
84+
#### event
85+
86+
事件(event)是 init 可以得到的状态变更信息。几乎系统所有的内部或外部状态变更都可以触发一个事件。比如,引导程序会触发启动(startup)事件,系统进入运行级别2会 触发运行级别2(runlevel 2)事件,而文件系统加载则会触发路径加载(path-mounted)事件,拔掉或安装一个热插拔或USB设备(如打印机)也会触发一个时间。
87+
88+
>用户还可以通过 initctl emit 命令来手动触发一个事件。
89+
90+
#### process
91+
92+
process 是由jobs定义的services或者task,它将被init daemon 运行。 每个job可以定义一个或者多个不同的process,分别在其生命周期的不同状态运行。
93+
6694
### upstart兼容sysvinit
6795

6896
由于很多软件包中都包含了sysv的启动脚本,为了兼容这部分程序,upstart提供了兼容机制.在/etc/init/下有rc-sysinit和rc作业,其运行机制是:作业rc-sysinit在收到 “(filesystem and static-network-up) or failsafe-boot” 的信号之后由Upstart启动。一切正常的话,rc-sysinit通过telinit完成运行级别信号的发送。作业rc在收到运行级别信号之后,由Upstart启动。然后rc通过运行/etc/init.d/rc $RUNLEVEL这个命令, 来完成/etc/rcN.d/下相应程序的启动。
6997
这样,就完成了兼容sysvinit的过程。
7098

99+
### upstartVSsysv
100+
101+
SysV启动是线性、顺序的。后面的要等待前面的启动后才能启动,同时不能解决诸如系统接收到打印机等热插拔事件安装时来启动某种特定的服务这类问题
102+
103+
upstart是基于事件的,能够实现按需启动,同时解决了热插拔设备安装时启动特定服务的要求。同时支持不同服务并行启动。
104+
105+
106+
## Systemd
107+
108+
Systemd是一个比upstart设计思路更超前的init系统,其核心是为了加快linux的启动速度,研究如何并行化启动init以后的用户进程
109+
110+
Systemd使用**target**来处理**引导和服务管理**过程,target被用于分组不同的引导单元以及启动同步进程.
111+
112+
terget实际上也类似一种脚本文件,用来指明程序应该怎么执行,执行什么。类似于upstar的config。
113+
114+
### System启动流程
115+
116+
1. systemd执行的第一个目标是default.target。但实际上default.target是指向graphical.target的软链接。文件Graphical.target的实际位置是/usr/lib/systemd/system/graphical.target。在graphical.target会启动multi-user.target。
117+
118+
2. multi-user.target将自己的子单元放在目录/etc/systemd/system/multi-user.target.wants里.multi-user.target为多用户支持设定系统环境。非root用户会在这个阶段的引导过程中启用。防火墙相关的服务也会在这个阶段启动。
119+
之后multi-user.target将控制权交给另一层basic.target
120+
121+
3. basic.target单元用于启动普通服务特别是图形管理服务。它通过/etc/systemd/system/basic.target.wants目录来决定哪些服务会被启动.
122+
basic.target之后将控制权交给sysinit.target
123+
124+
4. sysinit.target会启动重要的系统服务例如系统挂载,内存交换空间和设备,内核补充选项等等。
125+
sysinit.target在启动过程中会传递给local-fs.target。
126+
127+
5. local-fs.target,这个target单元不会启动用户相关的服务,它只处理底层核心服务。这个target会根据/etc/fstab和/etc/inittab来执行相关操作。
128+
129+
### System components
130+
131+
![systemd components](./Systemd-components.png)
132+
***
133+
![Boot structure](./bootStructureWithSystem.png)
134+
135+
## 参考
136+
137+
[upstart分析](https://blog.csdn.net/dandelionj/article/details/8551361)
71138

139+
[走进Linux之system启动流程](https://blog.csdn.net/yuzhihui_no1/article/details/52228763)
72140

141+
[ubuntu启动过程](https://blog.csdn.net/u013830021/article/details/72840669)
73142

LinuxEnvConfig/tmux/.tmux.tar.bz2

91.5 KB
Binary file not shown.
-1
This file was deleted.

LinuxEnvConfig/tmux/readme.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# tmux
2+
3+
.tmux.tar.bz2是个人目录下的.tmux的打包文件
4+
5+
.tmuxrc是tmux件

LinuxEnvConfig/vim/.vim.tar.bz2

9.5 MB
Binary file not shown.

LinuxEnvConfig/vim/.vim/.netrwhist

-3
This file was deleted.

LinuxEnvConfig/vim/.vim/after/ftplugin/c.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/after/ftplugin/cpp.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/common/debug.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/common/utils.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/cpp/complete.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/cpp/includes.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/cpp/items.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/cpp/maycomplete.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/cpp/namespaces.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/cpp/settings.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/cpp/tokenizer.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/autoload/omni/cpp/utils.vim

-1
This file was deleted.

LinuxEnvConfig/vim/.vim/bundle/vundle

-1
This file was deleted.

0 commit comments

Comments
 (0)