进阶学习——引导过程和服务控制

news2024/11/28 18:53:16

目录

一、引导过程

1.开机自检BIOS

2.MBR引导

3.GRUB菜单

4.加载Linux内核

5.init进程初始化

6.Centos启动过程总结

7.系统初始化进程

7.1init进程

7.2Systemd

7.2.1Systemd单元类型

7.2.2运行级别所对应的Systemd目标

二、服务控制

1.修复MBR扇区故障

1.1实验操作过程

1.1.1新建磁盘

1.1.2将备份文件备份到新盘

1.1.3模拟破坏

1.1.4重启Linux系统,进入急救模式

1.1.5进行操作

1.1.6查看效果并重启

1.1.7实验总结

2.修复GRUB引导故障

2.1实验操作过程

2.1.1先模拟破坏grub.cfg配置文件

2.1.2重启进入急救模式

2.1.3先切换根目录

2.1.4重新安装grub程序

2.1.5重新生成配置文件

2.1.6退出并重启

2.1.5实验总结

3.破解密码

3.1有光驱

3.2无光驱

3.2.1进入内核界面

3.2.2进入单用户模式

3.2.3修改密码

3.2.4重新输入密码登录即可成功

3.2.5 实验总结

4.系统服务控制

4.1控制类型

4.2服务程序的特点

4.3服务控制命令

4.3.1Centos6

4.3.2Centos7

 5.使用Systemd编译安装nginx程序

5.1编译安装

5.2进入systemd编辑nginx程序启动项 

5.3编辑nginx服务项

5.4开启Nginx服务并测试

5.5延伸:故障案例


kernel 实现进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能等功能

内核设计流派

  • 宏内核(monolithic kernel):又称单内核和强内核,Unix,Linux把所有系统服务都放到内核里,所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂,Linux其实在单内核内核实现了模块化,也就相当于吸收了微内核的优点。

  • 微内核(micro kernel):Windows,Solaris,HarmonyOS简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护,每种功能使用一个单独子系统实现,将内核功能移到用户空间,性能差。

一、引导过程

1.开机自检BIOS

服务器主机开机后,根据主板BIOS的设置对cpu、内存、显卡等设备进行基础检测,检测成功后根据预设的启动程序移交系统控制权,大多时候会移交系统控制权,大多时候会移交给本机硬盘。

总结:如果是网络启动的话会开启pxe。

检测硬件是否正常然后根据BIOS中的启动项,去找操作系统

2.MBR引导

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record, 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据 MBR 记录中的引导信息调用启动菜单(如 GRUB)。

总结:运行放在MBR扇区里的启动 GRUB引导程序

统一启动加载器:MBR、GRUB

因为GRUB太大,在第一个扇区放不下,所以GRUB分为两部分

MBR是指引硬件找到内核文件

3.GRUB菜单

对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是 使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给 用户选择,并根据所选项(或采用默认值)准备加载 Linux 内核文件,然后将系统控制权转交给 内核。需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器。

总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置

根据GRUB配置文件(grub.cfg)中记录的位置去找到内核文件(高级语言)

4.加载Linux内核

linux内核是一个预先编译好的内设二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度,内核接过系统控制权后转交给内核后,将完全掌握整个linux操作系统的运行过程,在cenos中默认的内核文件放置位置在/boot/vmlinuz-3.10.0-514.el7.x86_64”。

总结:把内核和镜像文件系统加载到内存中 可以使用;把内核运行在内存中

5.init进程初始化

为了完成进一步的系统引导过程,linux内核首先将系统中的“/sbin/init”程序加载到内存运行(运行中的程序称为进程),init进程完成一系列的初始化过程,最后才会让用户登录

总结:加载硬件驱动程序,内核把init进程加载到内存中运行

第一个主进程

6.Centos启动过程总结

Centos7和Centos6的区别

1.普通用户的uid号范围不同

2.系统初始化进程Centos6是init,Centos7是systemd

开机启动的完整总结:

第一步加电后会BIOS程序会自检硬件,硬件无故障后,会根据第一启动项去找内核,一般来说第一启动项是硬盘,找到硬盘后,会根据MBR的指引找到完整的GRUB程序,再根据GRUB的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后会启动第一个程序。

7.系统初始化进程

7.1init进程

由Linux内核加载运行/sbin/init程序

init进程是系统中第一个进程

init进程的PID(进程标记)号永远为1

7.2Systemd

Systemd是Linux操作系统的一种init软件,是系统级程序,代为管理系统上的服务程序

Centos7中采用全新的Systemd启动方式,取代传统的SysVinit

Centos7中运行的第一个init进程是/lib/systemd/systemd

init是串型启动后续的程序,程序之间有依赖关系,程序按顺序依次启动

systemd是并行启动程序,所有程序一起启动

引入:rpcbind程序如果启动,会监听111端口;如果rpcbind没有启动,systemd会代为监听

systemd是保姆级程序,如果是yum或者编译安装的软件,都可以直接使用systemctl命令去启动、关闭、重启、开机自启等功能;但是如果是编译安装的话,需要手写一个配置文件才可以使用systemctl命令去管理程序。

7.2.1Systemd单元类型
单元类型扩展名说明
Service.service描述一个系统服务软件
Socket.socket描述一个进程间通信的套接字
Device.device描述一个内核识别的设备文件
Mount.mount

描述一个文件系统的挂载点

Automount.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或交换文件
Path.path描述一个文件系统中文件或目录
Timer.timer描述一个定时器(用于实现类似cron的调度任务)
Snapshot.snapshot用于保存一个systemd的状态
Scope.scope使用systemd的总线接口以编程的方式创建外部进程
Slice.slice描述居于Cgroup的一组通过层次组织的管理系统进程
Target.target描述一组systemd的单元

Systemd unit(单元)是为了Systemd方便便利程序,将程序按照特定的功能分成了很多单元;其中服务单元最主要的是写配置文件

7.2.2运行级别所对应的Systemd目标
运行级别Systemd的target说明
0target关机状态,使用该级别时将会关闭主机
1rescue.target单用户模式,不需要密码验证即可登录系统,多用于系统维护
2muliti-user.target

用户定义/域特定运行级别。默认等同于3

3muliti-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别
4muliti-user.target用户定义/域特定运行级别。默认等同于3
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境
6reboot.target重新启动,使用该级别时将会重启主机

runlevel  查看当前运行级别

3代表从哪个级别过来的;5代表当前级别

  • 查看默认运行级别

systemctl get-default

  • 设置默认级别

systemctl set-default

  • 设置混合模式

systemctl set-default multi-user.target

其中,multi-user.target 代表字符界面;graphical.target 代表图形界面

二、服务控制

1.修复MBR扇区故障

故障原因

  • 病毒、木马等造成的破坏
  • 不正确的分区操作、磁盘读写误操作

故障现象

  • 找不到引导程序,启动中断
  • 无法加载操作系统,开机后黑屏

解决思路

  • 应提前做好备份文件
  • 以安装光盘引导进入急救模式
  • 从备份文件中回复

1.1实验操作过程

1.1.1新建磁盘

[root@localhost ~]#fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x38fd3e00 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]#scan
[root@localhost ~]#lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part 
sr0              11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64
1.1.2将备份文件备份到新盘

1.1.3模拟破坏

模拟破坏sda磁盘;if=/dev/zero代表不断往sda盘内写0

hexdump -C -n /dev/sda   可以查看输入后的效果

1.1.4重启Linux系统,进入急救模式

1.1.5进行操作

1.1.6查看效果并重启

1.1.7实验总结

第一步,新建磁盘,将备份文件备份到新盘

第二步,备份分区表及MBR

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

第三步,模拟破坏

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

第四步,进入急救模式

重启ESC进入急救模式选择Troubleshooting→Rescue a Centos system→Continue

第五步,新建文件夹、挂载、恢复

mkdir bak

mount /dev/sdb1 bak

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

第六步,退出重启

exit→reboot

2.修复GRUB引导故障

故障原因

  • MBR中的GRUB引导程序遭到破坏
  • grub.conf文件丢失,引导配置有误

故障现象

  • 系统引导停滞,显示“grub>”提示符

解决思路

  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向MBR扇区中重建grub程序

grub只需备份446字节

2.1实验操作过程

进入急救模式与MBR修复一致

2.1.1先模拟破坏grub.cfg配置文件

2.1.2重启进入急救模式

与MBR分区抢修一致

2.1.3先切换根目录

从光盘的根目录切换到当前系统的根

2.1.4重新安装grub程序

2.1.5重新生成配置文件

2.1.6退出并重启

2.1.5实验总结

第一步,先模拟破坏grub.cfg配置文件

mv /boot/grub2/grub.cfg /opt

第二步,重启进入急救模式选择Troubleshooting→Rescue a Centos system→Continue

第三步,先切换根目录,从光盘的根切换到当前系统的根

chroot /mnt/sysimage

第四步,重新安装grub程序在sda磁盘

grub2-install /dev/sda

第五步,重新生成配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg

第六步,退出重启

exit→reboot

3.破解密码

3.1有光驱

最后exit退出

reboot重启 

Xshell连接成功即为成功

3.2无光驱

3.2.1进入内核界面

3.2.2进入单用户模式

3.2.3修改密码

3.2.4重新输入密码登录即可成功

3.2.5 实验总结

第一步,进入系统在选择内核界面,选择第一个选项按E键进入内核操作界面

第二步,光标移动到Linux开头行最后,添加rd.break,Ctrl + x 进入单用户界面

第三步,重新挂载

mount -o remount,rw /sysroot       #重新挂载 添加读写权限

第四步,切换到真正的根目录

chroot /sysroot

第五步,修改密码

passwd

第六步,退出并重启

exit→reboot

延伸:如果开启了selinux的话需要重新打上标记

4.系统服务控制

systemctl  控制类型  服务名称

4.1控制类型

控制名含义
start启动
stop停止
reload重新加载
staus查看服务状态

Centos6使用chkconfig;Centos7使用systemd

0123456代表级别

0代表关机;1代表单用户;234代表字符界面(2没有nfs;4没有用过);5图形化界面;6重启

4.2服务程序的特点

1.一旦运行,一直运行

2.一般是后台运行,不会影响前台操作

4.3服务控制命令

4.3.1Centos6
Service服务程序start开启
stop关闭
restart重启
reload重新加载配置文件
status查看服务状态

在/etc/init.d写一个同名文件的脚本(必须要有执行权限)

chkconfig  --add  服务名称

chkconfig  --level  35  服务程序  on    开机自启

chkconfig  --level  35  服务程序  off  关闭开机自启

4.3.2Centos7
systemctlstart服务名开启服务(可以同时启动12345多个程序服务)
stop关闭服务
status查看服务状态
reload重新加载配置文件
restart重启服务

systemctl enable 服务名                开机自启

systemctl enable --now 服务名      开机自启并立即启动

systemctl disable 服务名               开机不自启

systemctl disable --now 服务名     开机不自启并立即关闭

如果用yum安装以及rpm安装 会自动生成一个配置文件 不需要我们手动加入systemd会自己添加

 5.使用Systemd编译安装nginx程序

5.1编译安装

cd  /opt
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf   nginx-1.18.0.tar.gz
cd  nginx-1.18.0
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel 
#请使用网络源
mkdir /cxk/nginx -p    
./configure   --prefix=/cxk/nginx
make
make  install

ln -s /apps/nginx/sbin/nginx   /usr/sbin/nginx 
#做软链接   可以补全  


####以上操作可以直接新建vim.test.sh进行操作


###然后使用bash test.sh进行上述操作

5.2进入systemd编辑nginx程序启动项 

5.3编辑nginx服务项

5.4开启Nginx服务并测试

[root@localhost nginx-1.18.0]#systemctl start nginx.service

##开启nginx服务

[root@localhost nginx-1.18.0]#systemctl status nginx.service

##查看nginx服务状态信息

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2024-01-02 22:04:16 CST; 6s ago
 Main PID: 5970 (nginx)
   CGroup: /system.slice/nginx.service
           ├─5970 nginx: master process /ghd/nginx/sbin/nginx
           └─5971 nginx: worker process

1月 02 22:04:16 localhost.localdomain systemd[1]: Started The nginx HTTP and r....
1月 02 22:04:16 localhost.localdomain systemd[1]: Starting The nginx HTTP and ....
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost nginx-1.18.0]#systemctl stop nginx.service

##终止nginx服务

[root@localhost nginx-1.18.0]#systemctl status nginx.service

##查看nginx服务状态信息

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

1月 02 22:04:16 localhost.localdomain systemd[1]: Started The nginx HTTP and r....
1月 02 22:04:16 localhost.localdomain systemd[1]: Starting The nginx HTTP and ....
1月 02 22:04:29 localhost.localdomain systemd[1]: Stopping The nginx HTTP and ....
1月 02 22:04:29 localhost.localdomain systemd[1]: Stopped The nginx HTTP and r....
Hint: Some lines were ellipsized, use -l to show in full.

5.5延伸:故障案例

Testsrv或其他服务启动(这个服务设置了35级别的自启)如果出了问题,启动系统时会卡在界面,无法进入系统(系统进入休眠状态)

解决办法:

tip1:进入其他级别(可以进入124级别)然后把服务自启关掉

如果是Centos6的话可以使用configure  --f命令修复,之后重启即可

如果是Centos7的话使用systemd命令进行修复 

tip2:进入急救模式(按Esc进入选择内核界面,按E选择内核进入,找到Linux那一行在末尾输入rd.break之后再按Ctrl + x 进入单用户模式),然后杀掉这个自启服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1365351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端超好玩的小游戏合集来啦--周末两天用html5做一个3D飞行兔子萝卜小游戏

文章目录 💖飞行兔子萝卜小游戏💟效果展示💟代码展示源码获取💖飞行兔子萝卜小游戏 💟效果展示 💟代码展示 <body> <script src=

欢乐钓鱼^^

欢迎来到程序小院 欢乐钓鱼 玩法&#xff1a;点击鼠标左键左右晃动的鱼钩&#xff0c;下方左右移动的鱼对准鱼的方向即可进行钓鱼&#xff0c; 不同的鱼不同的分数&#xff0c;快去钓鱼吧^^开始游戏https://www.ormcc.com/play/gameStart/241 html <div id"gamediv&qu…

力扣labuladong一刷day54天前缀树

力扣labuladong一刷day54天前缀树 文章目录 力扣labuladong一刷day54天前缀树一、208. 实现 Trie (前缀树)二、648. 单词替换三、211. 添加与搜索单词 - 数据结构设计四、1804. 实现 Trie &#xff08;前缀树&#xff09; II五、677. 键值映射 一、208. 实现 Trie (前缀树) 题…

[答疑]漏斗图,领域驱动设计叒创新了?

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 albert 2024-1-1 21:11 这篇文章说用DDD重构****&#xff0c;演示了一种漏斗图&#xff0c;请教潘老师&#xff0c;这个图是DDD提出来的吗&#xff0c;您怎么评价&#xff1f; UMLChi…

系列三十五、获取Excel中的总记录数

一、获取Excel中的总记录数 1.1、概述 使用EasyExcel开发进行文件上传时&#xff0c;通常会碰到一个问题&#xff0c;那就是Excel中的记录数太多&#xff0c;使用传统的方案进行文件上传&#xff0c;很容易就超时了&#xff0c;这时可以通过对用户上传的Excel中的数量进行限制…

优雅的通过Shell脚本生成Go的程序包

前言 随着Go语言的普及&#xff0c;越来越多的开发人员选择使用Go编写代码。虽然越来越多的公司项目已使用持续集成/持续部署&#xff08;CI/CD&#xff09;工具&#xff0c;用于自动化构建、测试和部署Go程序包&#xff0c;但存在一些部署在ECS服务器的Go程序包或需要手动编译…

编译原理Lab4-使用LightIR框架自动产生cminus-f语言的LLVM IR

[[#实验框架|实验框架]][[#实验过程|实验过程]] [[#实验过程#全局变量的设计|全局变量的设计]][[#实验过程#1ASTProgram|1ASTProgram]][[#实验过程#2ASTNum|2ASTNum]][[#实验过程#3ASTVarDeclaration|3ASTVarDeclaration]][[#实验过程#4ASTFunDeclaration|4ASTFunDeclaration]]…

概率论与数理统计 知识点+课后习题

文章目录 &#x1f496; [学习资源整合](https://www.cnblogs.com/duisheng/p/17872980.html)&#x1f4da; 总复习&#x1f4d5; 知识点⭐ 常用分布的数学期望和方差 &#x1f4d9; 选择题&#x1f4d9; 填空题&#x1f4d9; 大题1. 概率2. 概率3. 概率4. P5. 概率6. 概率密度…

读元宇宙改变一切笔记01_起源

1. 元宇宙是我们下一个生存之地 1.1. 1968年&#xff0c;只有不到10%的美国家庭拥有彩色电视&#xff0c;但当年票房排名第二位的电影《2001&#xff1a;太空漫游》&#xff08;2001: A Space Odyssey&#xff09;设想了这样的未来 1.1.1. 斯坦利库布里克(Stanley Kubrick) …

react-router-domV6.21.1版本结合ant design mobile的TabBar标签栏和Popup弹出层实现移动端路由配置

react-router-demo react-router-dom在V6版本之后更换了很多的API名称&#xff0c;在ant design mobile的TabBar配置中还是之前的旧版本&#xff0c;比如使用了switch组件等。我们在这里使用新版本的react-router-dom进行react移动端的配置 首先使用npm下载最新版的react-rout…

【前端设计】小球loading动画

欢迎来到前端设计专栏&#xff0c;本专栏收藏了一些好看且实用的前端作品&#xff0c;使用简单的html、css语法打造创意有趣的作品&#xff0c;为网站加入更多高级创意的元素。 html <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…

YOLOv5改进 | 主干篇 | CSWinTransformer交叉形窗口网络改进特征融合层

一、本文介绍 本文给大家带来的改进机制是CSWin Transformer,其基于Transformer架构,创新性地引入了交叉形窗口自注意力机制,用于有效地并行处理图像的水平和垂直条带,形成交叉形窗口以提高计算效率。它还提出了局部增强位置编码(LePE),更好地处理局部位置信息,我将其…

File-一个IO流中至关重要的类

File类 概述&#xff1a;文件和目录路径名的抽象表示&#xff0c;File 对象就代表一个路径 对与File而言&#xff0c;其封装的并不是一个真正存在的文件&#xff0c;仅仅是一个路径名而已。它可以是存在的&#xff0c;也可以是不存在的。将来要通过具体的操作把这个路径的内容…

构建高效PythonWeb:GraphQL+Sanic

1.1 简介&#xff1a;在当今快速发展的技术时代&#xff0c;Web应用的性能和灵活性变得越来越重要。在众多技术中&#xff0c;GraphQL和Sanic以其独特的优势脱颖而出。GraphQL&#xff0c;作为一个强大的数据查询语言&#xff0c;为前端和后端之间的通信提供了极大的灵活性。而…

HCIA-Datacom题库(自己整理分类的)_09_Telent协议【13道题】

一、单选 1.某公司网络管理员希望能够远程管理分支机构的网络设备&#xff0c;则下面哪个协议会被用到&#xff1f; RSTP CIDR Telnet VLSM 2.以下哪种远程登录方式最安全&#xff1f; Telnet Stelnet v100 Stelnet v2 Stelnet v1 解析&#xff1a; Telnet 明文传输…

Oracle-expdp备份变慢问题分析

问题背景&#xff1a; 应用有一个每日跑批之前的备份作业&#xff0c;通过expdp备份应用的用户数据&#xff0c;数据量大概为600G左右&#xff0c;正常情况下可以在20分钟内跑完&#xff0c;但最近expdp备份完成时间却突然猛涨到要2小时32分才能备份完&#xff0c;导致后续的跑…

使用 MONAI 加载和保存各种格式的医学图像

本教程属于实战&#xff0c;手把手教你加载各种医学图像数据&#xff08;nii.gz, .dcm, .png等&#xff09;。并学会查看医学图像数据的元数据&#xff08;shape, affine, orientation&#xff09;。学会使用monai全方位了解你的数据&#xff0c;并把它用于之后的深度学习训练。…

最新ChatGPT网站系统源码+详细搭建部署教程+Midjourney绘画AI绘画

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

数据版本控制利器LakeFS的介绍,以及其使用方法,与其它工具结合案例

LakeFS介绍 LakeFS 是一个开源的数据湖版本控制系统&#xff0c;可以帮助用户管理和控制数据湖中的数据版本。以下是LakeFS的一些主要用处和功能介绍&#xff1a; 数据版本控制&#xff1a;LakeFS 提供了类似于 Git 的版本控制功能&#xff0c;可以跟踪和管理数据湖中的数据版…

智能合约:3分钟开发ERC20 token(2)

0.前言 上一节我们讲到了开发智能合约的准备工作&#xff0c;以及在线编程平台remix 智能合约&#xff08;1&#xff09; 这一节讲解如何开发、发行一个代币&#xff0c;并具备包括代币铸造mint&#xff0c;转账transfer和销毁burn功能&#xff0c;并确保合约拥有者owner的权限…