一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。...2)、“消息”指具有某种USB定义格式的数据流。消息通道与端点的关系同流通道与端点的关系是不同的。
Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...注册 usb_device usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置 这个配置下面的接口,都会分配、设置、注册一个 usb_interface...左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe 2....接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。
gadget 功能前关闭 adb 功能时却报异常的解决办法 4 附录 4.1 Linux-4.x/Linux-5.4 Gadget 配置示例 4.1.1 小机做 mass storage 4.1.2...1.3 适用范围 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/usb/* Linux-5.4 drivers/usb/* 2 模块介绍 2.1 模块功能介绍...USB 总线采用树形结构,在一条总线上只能有唯一的主机设备。Linux 内核从主机和设备两个角度观察 USB 总线结构。...Linux 有原生 gadget 框架,通用的配置流程可参考下文。...图 2-11: linux-4.x usb gadget 配置选择 2.6.2 linux-4.x/linux-5.4 USB Gadget 配置流程 Linux-4.x/Linux-5.4 使用 configfs
一 mmap系统调用 1.内存映射 所谓的内存映射就是把物理内存映射到进程的地址空间之内,这些应用程序就可以直接使用输入输出的地址空间,从而提高读写的效率。...Linux提供了mmap()函数,用来映射物理内存。...,映射选项和映射页是否可以共享。...当映射关系解除后,对原来映射地址的访问将导致段错误发生。...struct file *,struct vm_area_struct *); linux有2个方法建立页表: (1) 使用remap_pfn_range一次建立所有页表.
因为习惯使用vim 编辑器,而早期的vi 的键盘设置跟现在的qwert键盘的按键差别较大,所以我一般选择将不常用的Caps_Lock与常用的Esc 互换,在Win下有很多好用的软件可以直接更改,linux
所以如果可以通过usb代替进行连接,效率会有很大的提高 iproxy是usbmuxd附带的一个小工具,它的作用是将设备的某个端口映射到电脑的某个端口 mac下可以通过brew安装 1 brew install...用法很简单: 第一个参数是你要映射到的电脑端口 第二个是iPhone的端口 UDID一般不用填,会自动获取,不过多设备连接时,需要用于区分设备 iproxy的作用很丰富,一般搞越狱的大牛,会用来映射iPhone
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下..."level": 1, "manufacturer": "QEMU", "port": 0, "prodid": "0001", "product": "QEMU USB...: 产品 serial: USB 硬件设备序列号 ,例如 0000:00:01.2 定位方法# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct...设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By...USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
四、 linux内核下USB相关的API函数与数据结构 前面介绍了USB相关一些基础概念与重要的数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序的方法和其他总线驱动方式类似.../usb.h> 4.2 USB设备注册框架示例 #include #include #include //定义...鼠标驱动(中断传输方式) 5.1 USB驱动注册框架代码 #include #include #include ...#include #include #include #include .../init.h> #include #include #include #include <linux/slab.h
[ 0.513302] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 0.513303] usb usb1...Controller [ 0.513304] usb usb1: Manufacturer: Linux 3.10.0-327.el7.x86_64 xhci-hcd [ 0.513305...] usb usb1: SerialNumber: 0000:00:14.0 [ 0.518700] usb usb2: New USB device found, idVendor=1d6b,...0.518702] usb usb2: Product: xHCI Host Controller [ 0.518702] usb usb2: Manufacturer: Linux 3.10.0...] usb 1-4: New USB device found, idVendor=413c, idProduct=301a [ 1.040348] usb 1-4: New USB device
在上一章分析完USB总线驱动程序后, 接下来开始写一个USB驱动: 本节目的: 将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键 参考/drivers/hid/usbhid/...: usb_deregister(struct usb_driver *driver); 注册一个usb_driver驱动,然后内核会通过usb_driver的成员.id_table函数匹配一次USB设备...释放input_device 3.5在出口函数中 1)通过usb_deregister ()函数注销usb_driver结构体 4.代码如下: #include #include... #include #include #include #include... static struct input_dev *myusb_mouse_dev; //input_dev static char *myusb_mouse_buf
Linux3.11版本引入了基于configfs的usb gadget configfs。.../bcdDevice # USB 1.1: 0x0110 # USB 2.0: 0x0200, USB 2.1: 0x0210, USB 2.5: 0x0250 # USB 3.0: 0x0300...(gadget_strings, gadget_info); [include/linux/usb/gadget_configfs.h] #define USB_CONFIG_STRINGS_LANG(...主要的工作流程为: 分配一个config_usb_cfg1结构体,该结构体包含了usb_configuration结构体,保存了该USB设备的配置信息。 设置USB设备的配置描述符的某些选项。...调用UDC驱动接口usb_udc_connect_control连接USB主机控制器,这样USB主机就能识别并枚举USB设备。
存储映射I/O使一个磁盘文件与存储空间中的一个缓冲区相映射,对缓冲区的读、写操作就是对文件的读、写操作,从而能够不再使用read、write系统调用。...len:须要映射的字节数。 prot:对映射存储区的保护要求,不能超过open文件时的权限。...PROT_READ:映射区可读 PROT_WRITE:映射区可写 PROT_EXEC:映射区可运行 PROT_NONE:映射区不可訪问 flag:影响映射存储区的属性。...MAP_PRIVATE:对映射区的存储操作导致创建该映射文件的一个私有副本。 filedes:指定要被映射的文件描写叙述符,映射之前须要先打开该文件。 off:要映射字节在文件里的起始偏移量。...表示存储区中有地址无法映射到文件里。 mmap实际上是将包括文件内容的内核缓冲区映射到应用程序地址空间,然后用memcpy直接进行数据的拷贝。
请注意,USB 驱动器的路径类似于 /dev/sdb。...现在,输出将看起来像这样(同样,不完全是这样),显示一个以前不存在的附加设备,在本例中为“/dev/sdb”,一个 16GB 的 USB 驱动器: 继续(小心!)...kali@kali:~$ dd if=kali-linux-2021.3-live-amd64.iso of=/dev/sdb bs=4M 对 USB 驱动器进行映像可能需要很长时间,超过十分钟或更长时间并不罕见...kali@kali:~$ dd if=kali-linux-2021.3-live-amd64.iso of=/dev/sdb bs=4M status=progress 另一种选择是使用pv....kali@kali:~$ dd if=kali-linux-2021.3-live-amd64.iso | pv -s 2.8G | dd of=/dev/sdb bs=4M 在 Linux (Etcher
有很多的图形化工具可以用来创建临场live USB 驱动器。Linux 上的 Etcher 可能是最受欢迎的。为此,Ubuntu 也开发了自己的启动盘创建工具。...但是,资深 Linux 用户可能更喜欢使用 dd 命令在 Linux 终端中创建临场 USB,这会更快速便捷。 dd 命令是一个 命令行 工具,它提供了用来复制和转换文件的强大功能。...一个常见的使用示例是,用户使用 dd 命令将 ISO 文件写入到他们的外部存储设备(例如 USB 驱动盘),以用来给他们的电脑或者笔记本安装一个新的 Linux 发行版。...第 1 步: 获取 USB 盘符 插入你的 USB 驱动器。 我为 of 参数输入的具体路径是 /dev/sdb。USB 磁盘通常会标记为 /dev/sdb,但这不是硬性规定。...第 2 步:将 ISO 文件写入 USB 磁盘 在下载 ISO 文件的目录打开一个终端,然后运行以下命令(如果 /dev/sdb 与你的存储设备名称不同,请记住将其替换): sudo dd if=".
Linux或者OS X系统中,使用“dd”命令可以直接在终端命令行模式下,制作ISO镜像的系统安装盘....一、linux系统以centOS7为例. sudo dd if=镜像路径 of=USB设备路径 bs=1m 镜像路径: ISO格式的镜像文件存放位置 USB路径: /dev/sdb 这里要注意的是: (...1)USB设备不能已经挂载到其它目录,否则会提示出错.如果系统自动挂载,要先umount /dev/sdb . (2)/dev/sdb 的路径,不能带分区,例如 /dev/sdb1. bs : blocksize...二、MAC OS X中”dd”命令制作U盘镜像 OS X与linux一脉同源,命令是一样的,只不过MAC中会自动挂载U盘,执行dd命令前,必须先卸载U盘. 1.先用diskutil list命令查看USB...总结 以上所述是小编给大家介绍的linux/OSX中“DD”命令制作ISO镜像操作系统安装U盘,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
/* 其中/media/usb 是你要挂载到的地方 */ 第三步:cp /media/usb/your_data/*.* /root/home/Desktop/your_data...Size Used Avail Use% Mounted on /dev/sdb3 125G 3.3G 115G 3% / /dev/sdb1 ... Used Avail Use% Mounted on /dev/sdb3 125G 3.3G 115G 3% / /dev/sdb1 ...VMWare下安装CentOS x86_64出现“kernel requires an x86_64 cpu, but only detected ” http://www.linuxidc.com/Linux.../2014-04/99423.htm VMware Server下安装Linux操作系统 http://www.linuxidc.com/Linux/2014-06/103881.htm
在Linux系统中,端口映射通常可以通过iptables命令来实现。以下是一个示例,展示如何将本地的102端口映射到远程主机192.168.1.10的102端口。...然后,使用以下命令进行端口映射: iptables -t nat -A PREROUTING -p tcp --dport 102 -j DNAT --to-destination 192.168.1.10
下面,在 LInux 操作系统上,以制作一个 Windows 版本的 U盘启动器为例, 进行说明。 1. 插入USB, 建立主分区 分区指导 2....分区格式化 格式化磁盘 [root@centos7 zuoy]# mkfs -t ntfs /dev/sdb1 如果报错 “mkfs.ntfs: 没有那个文件或目录” ,则需要执行如下操作 参考 //.../configure make make install mkfs -t ntfs /dev/sdb1 3....给u盘写入mbr信息 ms-sys -n /dev/sdb1 ms-sys -7 /dev/sdb 4....拷贝iso mount -o loop win7.iso /mnt/iso mount /dev/sdb1 /mnt/usb cp -r /mnt/iso/* /mnt/usb/ sync 参考
你们有些人经常使用 dd 命令做各种各样的事,比如创建 USB 启动盘或者克隆硬盘分区。不过请牢记,dd 是一个危险且有毁灭性的命令。如果你是个 Linux 的新手,最好避免使用 dd 命令。...SIZE STATE TYPE sdb 1 7.5G running disk 如你所见,我只有一个 USB 驱动器。...`sdb' (only USB device candidate) The selected device `/dev/sdb' is connected through USB....$ bootiso -d /dev/sdb bionic-desktop-amd64.iso 用你自己的设备路径来换掉 /dev/sdb。...$ bootiso --dd -d /dev/sdb bionic-desktop-amd64.iso 如果你想增加 USB 引导的成功概率,请使用 -b 或 –bootloader 选项。
最近正在研究Kali Linux,一个集成了各种渗透测试工具的Linux发行版。虽然Kali也是一个功能齐全的Linux发行版,但是官方并不建议我们作为日常使用。...首先将下载的ISO镜像复制到Linux虚拟机中,然后将U盘连接到虚拟机上。然后用下面的命令获取ISO的大小,并在U盘上创建一个新的持久化分区。这里需要你的U盘容量大于8G,假设U盘是sdb。.../sdb mkpart primary $start $end 然后将分区格式化为ext3. mkfs.ext3 -L persistence /dev/sdb3 e2label /dev/sdb3 persistence...mkdir -p /mnt/my_usb mount /dev/sdb3 /mnt/my_usb echo "/ union" > /mnt/my_usb/persistence.conf umount...[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HJvAgLwR-1582207425057)(https://www.kali.org/docs/usb/kali-linux-live-usb-persistence
领取专属 10元无门槛券
手把手带您无忧上云