Git学习笔记
🚀 Git 简介 Git 是 Linus Torvalds 为了帮助管理 Linux 内核源码而开发的一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响。也因此其近乎所有的操作都是本地执行,所以在断网的情况下仍然可以提交代码,切换分支。Git 又使用了 SHA-1 哈希算法确保了在文件传输时变得不完整、磁盘损坏导致数据丢失时能立即察觉到。
workspace:工作区
staging area:暂存区/缓存区
blocal repository:本地仓库
remote repository:远程仓库
✈️ Git 的优点1、适合分布式开发,强调个体。
2、公共服务器压力和数据量都不会太大。
3、速度快、灵活。
4、任意两个开发者之间可以很容易的解决冲突。
5、离线工作。
✈️ Git 的缺点1、模式上比 SVN 更加复杂。
2、不符合常规思维。
3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
✈️ 小知识:Gi ...
hexo博客Shoka主题环境搭建
clone主题文件12# cd your-bloggit clone https://github.com/amehime/hexo-theme-shoka.git ./themes/shoka
下载所需的插件123456cnpm uninstall hexo-renderer-marked --save # 卸载掉默认的 hexo-renderer-marked cnpm install hexo-renderer-multi-markdown-it --save # 安装 hexo-renderer-marked cnpm install hexo-autoprefixer --savecnpm install hexo-algoliasearch --savecnpm install hexo-symbols-count-time --savecnpm install hexo-feed --save-dev
Linux安装npm
下载npm12345cd ~wget https://registry.npmmirror.com/-/binary/node/v19.0.0/node-v19.0.0-linux-x64.tar.xztar -vxf node-v19.0.0-linux-x64.tar.xzrm node-v19.0.0-linux-x64.tar.xzsudo mv node-v19.0.0-linux-x64 /usr/local/node
建立软连接12sudo ln -s /usr/local/node/bin/npm /usr/bin/npmsudo ln -s /usr/local/node/bin/node /usr/bin/node
安装cnpm12npm install -g cnpm --registry=https://registry.npm.taobao.orgsudo ln -s /usr/local/node/bin/cnpm /usr/bin/cnpm
uboot移植
🚀 uboot简介Linux 系统要启动就必须需要一个 bootloader 程序,bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了, bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核, bootloader 和 Linux 内核的关系就跟 PC 上的 BIOS 和 Windows 的关系一样, bootloader 就相当于 BIOS。目前有很多现成的 bootloader 软件可以使用,比如 U-Boot、 vivi、 RedBoot 等等,其中以 U-Boot 使用最为广泛。
uboot 的全称是 Universal Boot Loader, 是一个遵循 GPL 协议的开源软件。uboot 是一个裸机代码,可以看作是一个裸机综合例程,主要功能是初始化一些硬件, 部署整个计算机系统, 将内核读到内存, 根据环境变量去启动内核, 并向内核传递参数。 现在的 uboot 已经支持液晶屏、网络、 USB 等高 ...
腾讯云部署hexo博客
本文基于已经搭建好的 hexo 博客,不再讲解 hexo 博客的搭建。
🚀 参考资料腾讯云官方部署教程:https://cloud.tencent.com/document/product/1154/40217
B站视频教程:https://www.bilibili.com/video/BV1tY411c7Y6?spm_id_from=333.880.my_history.page.click
🚀 部署步骤✈ 安装 Serverless Framework使用 npm 安装前,需要确保您的环境中已安装好了 Node(版本需要 > 12)以及 npm(查看 Node.js 安装指南)。
可使用 node -v 和 npm -v 查看它们的版本。
为保证安装速度和稳定性,可以使用 cnpm 代替 npm 完成安装。
安装 cnpm
1npm install -g cnpm -registry=https://registry.npm.taobao.org
安装完毕后,可通过运行cnpm -v命令,查看 cnpm 的版本信息。
Serverless 安装命令:
1cnpm i -g ...
Platform设备驱动
🚀 Platform设备驱动简介很多设备虽然用途不同,但其接口定义都是一样的 ,因此很多时候我们不需要去为每个设备都写一个驱动 。
因此 Linux 2.6 及以后的内核中虚拟出来的一条总线 ,即 platform 总线。
平台总线模型将设备代码和驱动代码分离, 将和硬件设备相关的都放到 device.c 文件里面,驱动部分代码都放到 driver.c 文件里面。
这样做的好处是, 实现了此类设备和驱动的分离, 增强设备驱动的可移植性。
🚀 Platform 设备✈ platform_device 结构体在 platform 平台下用 platform_device 这个结构体表示 platform 设备。
如果内核支持设备树的话就不用使用 platform_device 来描述设备了, 因为改用设备树去描述了 platform_device。
具体定义在内核源码 /include/linux/platform_device.h 里面, 结构体内容如下:
1234567891011121314151617struct platform_device { ...
杂项设备驱动点灯
🚀 驱动程序123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120#include <linux/init.h> // 包含初始化宏定义的头文件#include <linux/module.h> // 包含初始化加载模块的头文件#include <linux/miscdevice.h> // 杂项设备驱动相关的头文件#include <linux/fs.h> // 包含文件操作集定义的头文件#include <linux/io.h> ...
Linux杂项设备驱动
🚀 杂项设备驱动简介杂项设备是字符设备的一种,它比常规字符设备驱动更加简单。
杂项设备驱动可以自动生成设备节点,而且所有杂项设备的主设备号均为 10,可以有效节约内核资源。
可以用 cat /proc/misc 来查看系统当前的杂项设备。
🚀 miscdevice 结构体misc 设备用 miscdevice 结构体表示, miscdevice 结构体的定义在内核源码具体定义在 include/linux/miscdevice.h 中, 内容如下:
123456789101112// 一般只需要给 minor、name、fops 这三个成员变量赋值即可struct miscdevice { int minor; //次设备号 const char *name; //设备节点的名字 const struct file_operations *fops; //文件操作集 struct list_head list; struct device *parent; struct device *this_device; const struct attr ...
linux字符驱动
🚀 设备号✈ 设备号简述设备号由主设备号和 次设备号构成。主设备号用来表示一个特定的驱动程序。 次设备号用来表示使用该驱动程序的各个设备。 Linux 提供了一个名为dev_t 的数据类型表示设备号, dev_t 定义在文件 include/linux/types.h 里面, 定义如下:
12typedef __u32 __kernel_dev_t;typedef __kernel_dev_t dev_t
由 dev_t 类型的定义可知,设备号是一个32位的变量, 其中 前12 位用来表示主设备号(0-4095 ), 后20 位用来表示次设备号。
Linux 提供了几个宏定义来操作设备号:
12345#define MINORBITS20 //次设备号的位数, 一共是 20 位#define MINORMASK ((1U << MINORBITS) - 1) //次设备号的掩码#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS)) //在 dev_t 里面获取我们的主设备号#define ...
Linux系统TF卡镜像生成脚本
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#! /bin/bash# 变量定义ImgFile=CocoPI-Zero.img # 生成的镜像文件名称Sdb1Name=boot # 第一分区名称Sdb2Name=rootfs # 第二分区名称UbootFile=u-boot-sunxi-with-spl.bin # 使用的 uboot 文件zImageFile=zImage # Linux内核镜像文件名称dtbFile=suniv-f1c100s-licheepi-nano.dtb # 设备树文件名称rootfsFile=rootfs.tar # 文件系统压缩包sudo echo & ...