BusyBox

Deciphering hex coded timestamp from a fingerprint machine (zkemkeeper/ZEM560)

邮差的信 提交于 2020-08-06 05:03:18
问题 I've been working on some raw data obtained from a fingerprint machine(zkemkeeper/ZEM560). I found out that there is a sets of data written in hex and I believe it is a 4 bytes, little endian number of seconds from a certain date. Here some examples of the raw data, actual result and expected date(got from GUI). My purpose is to get the expected date from the raw data. What I have tried was, import datetime sample_expected_date = datetime.datetime(2019, 11, 29, 20, 45, 22).timestamp() sample

Deciphering hex coded timestamp from a fingerprint machine (zkemkeeper/ZEM560)

非 Y 不嫁゛ 提交于 2020-08-06 05:03:12
问题 I've been working on some raw data obtained from a fingerprint machine(zkemkeeper/ZEM560). I found out that there is a sets of data written in hex and I believe it is a 4 bytes, little endian number of seconds from a certain date. Here some examples of the raw data, actual result and expected date(got from GUI). My purpose is to get the expected date from the raw data. What I have tried was, import datetime sample_expected_date = datetime.datetime(2019, 11, 29, 20, 45, 22).timestamp() sample

alpine apk软件管理包常用命令总结

和自甴很熟 提交于 2020-07-28 04:10:45
前言:开发人员使用的镜像alpine缺少相关依赖包,在制作镜像的过程中,总结如下命令,以备后续使用 更换使用源 查看本地使用源 使用阿里源镜像 sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories 使用科大镜像 sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories 更新索引 update:从远程镜像源中更新本地镜像源索引,update命令会从各个镜像源列表下载APKINDEX.tar.gz并存储到本地缓存,一般在/var/cache/apk/(Alpine在该目录下) 安装命令 安装软件包 apk add --no-cache tzdata busybox-extras fontconfig ttf-dejavu tzdata 安装指定版本软件包 apk add tzdata=2019a-r0 卸载命令 卸载并删除packages apk del tzdata busybox-extras fontconfig ttf-dejavu 升级 upgrade命令升级系统已安装的所以软件包,当然也可指定仅升级部分软件包(通过-u或--upgrade选择指定)。 apk update

k8s实践(9)--深入了解Pod

假装没事ソ 提交于 2020-07-27 10:16:24
一、Pod简介 Pod是k8s系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展Pod对象功能的,比如控制器对象是用来管控Pod对象的,Service或者Ingress资源对象是用来暴露Pod引用对象的,PersistentVolume资源对象是用来为Pod提供存储等等, k8s不会直接处理容器,而是Pod ,Pod是由一个或者多个container组成的。 每个Pod都是运行应用的单个实例,如果需要水平扩展应用(例如,运行多个实例),则应该使用多个Pods,每个实例一个Pod。在Kubernetes中,这样通常称为Replication。Replication的Pod通常由Controller创建和管理。 1.1、为什么需要pod 我们先谈谈为什么k8s会使用pod这个最小单元,而不是使用docker的容器,k8s既然使用了pod,当然有它的理由。 1、更利于扩展 k8s不仅仅支持Docker容器,也支持rkt甚至用户自定义容器,为什么会有这么多不同的容器呢,因为容器并不是真正的虚拟机,docker的一些概念和误区总结,此外,Kubernetes不依赖于底层某一种具体的规则去实现容器技术, 而是通过CRI这个抽象层操作容器 ,这样就会需要pod这样一个东西

深入理解系统调用

十年热恋 提交于 2020-07-27 05:32:13
实验内容: 找一个系统调用,系统调用号为学号最后 2位相同的系统调用【即 97号系统调用】 通过汇编指令触发该系统调用 通过 gdb 跟踪该系统调用的内核处理过程 重点阅读分析系统调用入口的保存现场、恢复现场和系统调用返回,以及重点关注系统调用过程中内核堆栈状态的变化 实验环境: VMWare虚拟机下的Ubuntu18.04.4,实验采用的内核版本为linux-5.4.34。 1 环境准备 1.1 内核编译 回退实验一的补丁操作: cd linux-5.4.34 patch -R -p1 < ../mykernel-2.0_for_linux-5.4.34.patch make defconfig 修改内核编译配置重新编译: #打开debug相关选项 Kernel hacking ---> Compile-time checks and compiler options ---> [*] Compile the kernel with debug info [*] Provide GDB scripts for kernel debugging [*] Kernel debugging #关闭KASLR,否则断点失败 Processor type and features ---> [] Randomize the address of the kernel image

Linux0.11内核 遇见的问题

若如初见. 提交于 2020-05-05 17:55:12
Linux–“bad interpreter”问题 1、问题原因:在Windows下进行编辑后拷贝到Linux下运行,不同的系统间编码格式造成的(Windows的文件结尾以\r\n来标识,而Linux格式的文件行尾则以\n来标识) 2、问题解决(3种): 1)vi setup.sh进入setup.sh后, 在底部模式下, 执行:set fileformat=unix后执行:x或者:wq保存修改。 2)直接执行sed -i “s/\r//” setup.sh来转化。 3)直接执行dos2unix setup.sh来转化。 dos2unix setup.sh 或者 busybox dos2unix setup.sh 3、查看文件格式的方法: 1)cat -A 文件名 从显示结果可以判断,dos格式的文件行尾为^M$ 2)vi 文件名 打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix 3)od -t x1 文件名 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式 另外一个问题 fatal error: sys/cdefs.h: No such file or directory `sudo apt-get purge libc6-dev sudo

23-docker容器之间共享目录

a 夏天 提交于 2020-04-29 17:43:03
1、共享宿主机的目录给容器 docker run -d --name=test -v /opt/test:/usr/databases docker-test test是容器的名字,需唯一;-v表示创建一个数据卷并挂载到容器里,示例表示把宿主机的/opt/test目录挂载到容器的/usr/databases目录下;docker-test是镜像的名字 2、有时候需要共享容器的volume,则需采用其他方式来访问 1)采用–volumes-from 可以使用最小的镜像busybox来帮忙实现 1.docker run --name=storedata -v /data:/usr/data busybox true 定义一个名称为storedata的目录映射,示例表示把宿主机的/data目录挂载到容器的/usr/data目录下。其他的容器就可以采用–volumes-from来使用该目录 docker run -d --name=test1 --volumes-from storedata docker-test docker run -d --name=test2 --volumes-from storedata docker-test 2)采用ln链接的方式把不同目录挂载到同一个目录下 ln -s /data /opt/es1/ ln -s /data /opt/es2/ 示例在

Ubuntu系统安装,适用于14.04,16.04和17.10

a 夏天 提交于 2020-04-25 19:39:07
本文以14.04为案例进行安装,其他版本相关问题会做注解 1. 选择要安装的系统语言 本界面建议选择English,之后再选择中文安装 注意: 安装服务器版时,对于14.x版本第一步选择中文没有问题,但是对于16.04和17.10版本, 如果需要安装中文版,第一步语言选择一定不能选中文,如果选了,后面安装报错: ”无法安装busybox-initramfs“ 2. 选择安装过程中需要的语言 该步骤可以选择需要的中文界面,而且安装后的系统默认支持中文 接下来提示,系统对于中文的支持可能不是很完美,选“是”,确认使用 3. 设置系统时区 选择默认中国即可 4. 配置键盘布局 保持默认选项“否”,不进行手动探测 接下来选择键盘布局“英语(美国)” 接下来选择具体的键盘布局,国内一般都是美式英语键盘,选择默认的即可 接下来等待自动配置一会儿 5. 配置网络 默认网络DHCP没配置的话会提示失败 这里选择手动配置 配置IP地址 下一步自动匹配子网掩码 手动配置默认网络 配置DNS服务器,至多配置三个,默认指向了网关服务器,可以修改成公网DNS,8.8.8.8等 配置主机名 配置主机的FQDN域名,没有可以不配置 6. 配置用户名和密码 Ubuntu中root用户是保留的超级用户,默认无法直接登录,需要配置一个替代的普通管理员,可以执行大部分管理任务 同时admin也是系统保留的,不可以使用

ubuntu18.04 qemu环境搭建【学习笔记】

允我心安 提交于 2020-04-25 13:37:35
一、准备工具   1.1 安装相关工具     sudo apt- get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential 1.2 下载kernel(linux-4.0)与busybox(1.24)源码 https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/ https://busybox.net/downloads/busybox-1.24.0.tar.bz2 二、编译最小文件系统 2.1 解压busybox export ARCH= arm export CROSS_COMPILE =arm-linux-gnueabi- make menuconfig 选中静态编译 | Busybox Settings ---> | [ *] Build BusyBox as a static binary (no shared libs) make install cd _install mkdir etc dev mnt mkdir -p etc/init.d/ cd etc /init.d/ vim rcS mkdir -p / proc mkdir -p / tmp mkdir -p / sys mkdir -p / mnt /bin/mount

使用class 自动创建设备节点

拈花ヽ惹草 提交于 2020-04-24 22:53:00
#include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module_exit #include <linux/fs.h> // file_operations #include <asm/uaccess.h> // copy_from_user copy_to_user #include <mach/regs-gpio.h> #include <mach/gpio-bank.h> #include <asm/ string .h> #include <linux/ioport.h> // request_mem_region #include <asm/io.h> // ioremap #include <linux/cdev.h> #include <linux/device.h> #define MYNAME "led_dev" #define DEVNUM 1 #define S5PV210_PA_GPIOJ0CON 0xe0200240 volatile unsigned int *rGPJ0CON = NULL; volatile unsigned int *rGPJ0DAT = NULL; static dev_t led_dev_no = 0 ; /* ***