随着国家技术的要求和国际形势的发展,为了避免被卡脖子,国产操作系统开始进入大力发展阶段!C++方向有一个很好的优势是可以和Linux相连通,做运维、操作系统,前途无限!!!
废话少说,我们进入本次学习的主题!!对于Linux系统启动的流程了解!!
1.开机自检:设备开机时,会有滴一声,自检开始,主要是检查计算机硬件,如:CPU,内存,主板,显卡等设备是否有故障
2.加载BIOS:BIOS自检,首先会在一个Boot Sequence程序中搜索可以让系统启动的引导设备(比如我们有时在BIOS中设置为从硬盘启动,或者从CD-ROM启动等等),如果BIOS找不到可以引导的设备及相关程序后,便会启动失败,如果找到相关硬盘设备,则BIOS将控制权交给启动设备中的MBR主引导记录
3.读取MBR主引导记录:大小为512字节,存放预启动信息、分区表等信息
4.grub引导菜单:系统读取内存中的grub配置信息,并依照此配置信息来启动不同的操作系统
5.加载kernel内核:根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作(内核文件都是以一种自解压的压缩格式存储以节省空间,存储于/boot目录下),自解压完成,则加载init(systemd)
6.init初始化(systemd所有进程的父进程):初始化系统环境
7.启动内核模块
root@uos:~# ls -l /boot/ root@uos:~# ls -l /boot/ -h
root@uos:~# vim /boot/grub/grub.cfg
root@uos:~# pstree root@uos:~# vim /etc/fstab(硬盘挂载)
root@uos:~# * * * * * root@uos:~# 分 时 日 月 周 root@uos:~# 30 2 * * *(表示两点半,顺序是倒着的) root@uos:~# 30 22 12 12 1(表示12月12日礼拜一22点30分) root@uos:~# * * * * 1-5(表示周一到周五) root@uos:~# * * * * 1,3,5(表示周一周三和周五)
*代表所有范围内的时间, 逗号‘,’代表不连续时间,横线‘ - ’表示连续的时间
root@uos:~# 0 8-18/2 * * * (8点到18点之间每隔2小时) root@uos:~# 0 * */3 * * (每隔3天)
root@uos:~# touch /home/tangyimin/Desktop/tang root@uos:~# rm -f /home/tangyimin/Desktop/tang(最好使用绝对路径,相对路径可能会出错) root@uos:~# which touch root@uos:~# at(一次性计划任务) root@uos:~# apt install at(这需要装一下的,但是生产一线用的不是很多) root@uos:~# crontab(周期性计划任务) root@uos:~# crontab -e(表示编辑) root@uos:~# crontab -e -u root(也可以这么写)
Choose 1-3 [1]: 3 crontab: installing new crontab root@uos:~# ls -l /home/tangyimin/Desktop(这是root的命令,所以有锁限制) root@uos:~# crontab -l -u root root@uos:~# crontab -l -e root
然后就可以在里面编写内容。
root@uos:~# crontab -r -u root(删除) root@uos:~# vim /tang.sh(可以自己在脚本里编写) root@uos:~# bash /tang.sh root@uos:~# rm -f /home/tangyimin/Desktop/tang* root@uos:~# crontab -e -u root
bash就可以执行任务了。
这个就是限制了用户权限。
touch /tmp/uosfile crontab -e -u root 第一次使用crontab -e时需选择编辑器,vim.basic完整版的vim;vim.tiny是tiny版本的vim,功能比较少。 */1 * * * * echo "UOS SYSTEM" >> /tmp/uosfile
crontab -l -u root 查看某用户的计划任务列表,不指定用户则查看当前用户。
1.开机按"e"键,进入grub引导菜单
2.找到linux vmlinuz-* 开头的行在末尾添加rw init=/bin/bash
3.按ctrl+x或F10继续启动
4.passwd root
5.reboot -f 或手动重启
这种修改方式必须要接触到物理设备,远程的操作是不支持的
防止破密码:增加grub口令
1.grub-mkpasswd-pbkdf2 #输入密码,使用伪随机函数生成密钥grub.pbkdf2.sha512.10000.......
2.vim /etc/grub.d/40_custom
3.set superusers="uos"
4.password_pbkdf2 uos grub.pbkdf2.sha512.10000.6D67AA5F717AFE93D368A57804BC21B136DCA9D30CBA6F74D9ABCBA32E76B59758E04A5D0A766734EDE586DEA2EC3E7F786F127FB55C7922826455612B5406F5.30060B65CA1D5736364D109C7CB6459E5E2851EFF460E43D72AAB8A592784B2D5353D9B51EE1EAFBC45AF739417CFC5EC12EE92D546E9BC6A7BB58444BC27455 5.update-grub 重启验证
root@uos:~# grub-mkpasswd-pbkdf2 输入口令: Reenternpasswd: root@uos:~# vim /etc/grub.d/40_coustom root@uos:~# update-grub root@uos:~# reboot(重启)
启动修复
1.rm -rf /boot/* 2.关机BIOS,设置光盘启动,点击install UOS后,按ctrl+alt+f2进入命令行模式 3.sudo mount /dev/sda2 /mnt(随便挂) 挂载根分区
sudo mount /dev/sda1 /mnt/boot 挂载/boot分区
sudo mount --bind /dev /mnt/dev 硬件设备,bind绑定(目录挂载到目录)
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo cp -rf /boot/* /mnt/boot/ 将光盘引导/boot复制到系统/boot
sudo chroot /mnt 把根目录换成指定的目的目录
grub-install /dev/sda 将GRUB安装到指定硬盘或分区上
update-grub 恢复grub.conf
exit
reboot 选择硬盘启动
root@uos:~# rm -rf /boot/* 然后就是关机BIOS,设置光盘驱动,点击install UOS后千万不要正式安装,这样内容会被覆盖掉的,要按Ctrl+Alt+F2进入命令行 root@uos:~# sudo mount/dev/sda2/mnt root@uos:~# sudo mount/dev/sda1/mnt/boot root@uos:~# sudo mount/dev/mnt/dev root@uos:~# sudo mount-bind/dev/mnt/dev root@uos:~# sudo mount-bind/proc/mnt/proc root@uos:~# sudo mount-bind/proc/mnt/sys root@uos:~# sudo cp-rf/boot/*/mnt/boot/ root@uos:~# sudo chroot/mnt root@uos:~# grub-install /dev/sda root@uos:~# update-grub
按照UCA-系统工程师课程上来的操作:
root@uos:~# reboot
然后就启动到光盘启动,通过光盘启动就支持救援
千万不要选择直接安装,直接安装的话,原本的磁盘就会被清空。要让它读入,当有图形化页面出现的时候在进行操作Ctrl+Alt+F2,进入命令行模式。
就是在此图处Ctrl+Alt+F2实现命令行模式转换
root@uos:~# useradd -m tang1 root@uos:~# passwd tang1 root@tang1:~Desktop# useradd -m tang2 root@tang1:~Desktop# passwd tang2 root@tang1:~# su - tang1 $ ssh [email protected] $ ssh-keygen (公钥)
上面的是博主本人的,自己的地址自己看啊!!!
$ ls -l /home/tang1/.ssh/
要把公钥传到tang2下面,需要如下操作
$ ssh-copy-id [email protected]
总而言之ssh免密码登录 server1: ssh-keygen 一直回车 ssh-copy-id [email protected] server2验证 cat ~/.ssh/authorized_keys server1的公钥已添加
root@uos:~# dpkg -l | grep ssh
openssh-client是客户端,openssh-server是服务器端。
当然还是先看它的服务是怎么样的。
root@uos:~# systemctl status ssh
Linux下ssh和sshd的区别:ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。两个配置文件都允许你通过设置不同的选项来改变客户端程序的运行方式。
root@uos:~# vim /etc/ssh/sshd_config
PermitRootLogin prohibit-password
要理解就需要用到下面的命令:
root@uos:~# ifconfig
root@uos:~# ping 192.168.163.145 root@uos:-/Desktop# ssh [email protected] tang@uos:~$ touch /home/tangyimin/Desktop/tangfile root@uos:~# passwd root(改密码)
密码永远是不对的,就算是passwd改密码了,也是不可进入的。所以要改就需要下面的步骤来进行。
root@uos:~# vim /etc/ssh/sshd_config 然后在vim里面改文件 #PermitRootLogin prohibit-password(不建议在原来的地方直接改,建议yy复制一下,然后在复制的内容中改) PermitRootLogin yes 然后就退出 root@uos:~# systemctl restart sshd(然后必须重启一下,生效一下) root@uos:~# ls -l /home/tangyimin/Desktop
传文件:
root@uos:~# scp /home/tangyimin/Desktop/tangfile1 [email protected] :/tmp(传输命令)
把这个文件/home/tangyimin/Desktop/tangfile1拷贝到 [email protected]这台机器下的/tmp文件里。
从远程传到本机:
root@uos:~# scp -r [email protected] :/home /tmp
以上内容均可以在统信镜像下的虚拟机上实现或者可以在Linux操作系统上执行。
选择Linux,是我们程序员进阶的一大特长和发展!!!
希望大家能多多支持!!!!!!!互相关注啊!!!!!蟹蟹蟹蟹!!!!!