DPDK安装步骤详细说明

DPDK安装步骤详细说明
DPDK安装步骤详细说明

前言

DPDK是专为快速收发包所开发的一系列的库文件和驱动代码。可以在Intel的芯片上运行。可以用来

●在极短的时间里面完成收发包(一般低于80个周期)

●可以开发快速的抓包算法。

●可以运行第三方的快速路径栈

而DPDK最大的优点就是改进小封包吞吐量与作业负荷效能,传统的网路架构都是针对大封包吞吐量进行最佳化,而Intel? DPDK可以解决小封包所带来效能不佳的问题。

除了应用在企业终端外, Intel DPDK 也可以在软体定义网路(SDN) 与网路功能虚拟化(NFV) 中扮演着重要的角色。

本文主要是对官方提供的《intel-dpdk-getting-started-guideRevision-002》进行总结,提取其中的关键知识点。同时对一些知识点进行了延伸,方便新手对DPDK的一些相关概念有个基本的认识,对整个DPDK的安装过程有个整体的认识

第一章一些基本概念

刚开始接触DPDK的时候,会遇到很多基本的概念,通过后面的测试实践发现,很多时候都是由于基本概念不明导致错误不能被检查出来,所有本文总结了一些相关的概念,同时对概念下面的一些子概念也进行了一定的延伸。

1.1L inux环境下的UIO( Userspace I/O )

UIO指的是运行在用户空间的I/O技术,是实现用户空间下驱动程序的支撑机制。

Linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可,而UIO则是将驱动的很少一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能。使用UIO可以避免设备的驱动程序需要随着内核的更新而更新的问题。

由于DPDK是应用层平台,所以与此紧密相连的网卡驱动程序(主要是intel自身的千兆igb与万兆ixgbe驱动程序)都通过uio机制运行在用户态下。Intel? DPDK 的igb_uio 内核模块依赖于内核的UIO。

需要以模块方式编译

可以通过如下命令进行编译

sudo /sbin/modprobeuio

1.2大内存页(Hugepages)机制

1.2.1如何配置大内存页

大内存页指的是为包处理的缓冲区缓冲区分配更大的大内存池,利用大内存页的主要好

处当然是通过利用大内存页提高内存使用效率。

可以得到明显的性能提高,因为需要更少的页,更少的TLB( Translation Lookaside Buffers),减少了虚拟页地址到物理页地址的转换时间。如果不使用大内存页机制的话,TLB 的命中率会降低,反而会降低性能。

大内存页最好在启动的时候进行分配,这样可以避免物理空间中有太多的碎片,提高发包的效率。

普通的页大小为4KB,默认的大内存页的大小为2MB,也可以设置其他的大内存页大小,可以可以从CPU的标识中看出支持哪种大内存页

如果有“pse”的标识,说明支持2M的大内存页。如果有“pdpe1gb”的标识,说明支持1G的大内存页。如果64位机建议使用1GB的大页。

比如如果想设置一个4G的大内存页,而且这个大内存页由4个1G大小的页构成,可以把如下配置传递给内核。

default_hugepagesz=1G hugepagesz=1G hugepages=4

但是如果使用大量的大内存页的话,最好增加当前登录会话打开文件限制,以减少运行DPDK程序时发生的错误。可以使用ulimit的命令,比如ulimit -Sn 2048。

在两插槽的NUMA系统中,大内存页会在两个插槽的CPU中进行平均分配。

对于2MB的大内存页的情况,也可以在系统启动以后再进行大内存页的分配。

在NON-NUMA系统,使用命令echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages。

对于NUMA系统,需要对每个服务器都进行分配,使用命令

echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages 对于1G的大内存页,不能在系统启动以后进行分配。

1.2.2如何使用大内存页

如果已经配置好了大内存页机制,就可以让DPDK利用大内存页的机制了。

可以输入如下的命令

mkdir /mnt/huge

mount -t hugetlbfsnodev /mnt/huge

在运行程序的时候,最好把分配给大页的所有空间都利用起来。如果DPDK的程序在运行的时候传递了-m 或者--socket-mem的参数,大内存页的分配在启动的时候会自动加载。

如果传递给程序的内存页数量比程序要求的要少,也就是内存页不够用,程序将会中止。但是,如果用户要求的内存空间小于预留的内存空间时,同样有可能出现程序崩溃的情况。原因如下,

假设系统为Socket1 和Socket 0 各预留了1024个大内存页。

如果用户需要128M的内存,也就是64个大内存页,但是这64个大页可能有以下的限制:

●这64个大页可能都被分配给Socket 1,如果用户要求访问Socket 0的内存,程序

中止。为了避免这个问题,尽量使用--socket-mem的选项,而不是-m。

●这些页面可能被分配到物理内存的任何地方,尽管Intel? DPDK EAL会尽力分配

临近的内存块,但是还是不可避免的会遇到不临近的情况,在这种情况下可能不能

分配大内存池。

socket-mem这个选项是用来为每个CPU的Socket分配特定的内存大小的。比如

--socket-mem=0,512,其中0是表示给Socket 0 分配0MB ,512表示给Socket 1分配512MB 内存大小。同理对拥有4个Socket的系统,如果要给Socket 0 ,2都分配1GB的内存大小,可以使用下面的选项配置:--socket-mem=1024,0,1024

1.3T LB

其中TLB(Translation Lookaside Buffer)指的是旁路转换缓冲,或称为页表缓冲,是一个存放着页表缓存(虚拟地址到物理地址的转换表)的内存管理单元,用于改进虚拟地址到物理地址转换速度。

X86体系的系统内存里存放了两级页表,第一级页表称为页目录,第二级称为页表。由于“页表”存储在主存储器中,查询页表所付出的代价很大,由此产生了TLB。

TLB是内存里存放的页表的缓存,那么它里边存放的数据实际上和内存页表区的数据是一致的,在内存的页表区里,每一条记录虚拟页面和物理页框对应关系的记录称之为一个页表条目(Entry),同样地,在TLB里边也缓存了同样大小的页表条目(Entry)。

1:TLB在X86体系的CPU里的实际应用最早是从Intel的486CPU开始的,在X86体系的CPU里边,一般都设有如下4组TLB:

第一组:缓存一般页表(4K字节页面)的指令页表缓存(Instruction-TLB);

第二组:缓存一般页表(4K字节页面)的数据页表缓存(Data-TLB);

第三组:缓存大尺寸页表(2M/4M字节页面)的指令页表缓存(Instruction-TLB);

第四组:缓存大尺寸页表(2M/4M字节页面)的数据页表缓存(Data-TLB);

2:TLB命中和TLB失败

如果TLB中正好存放着所需的页表,则称为TLB命中(TLB Hit);

如果TLB中没有所需的页表,则称为TLB失败(TLB Miss)。

当CPU收到应用程序发来的虚拟地址后,

首先到TLB中查找相应的页表数据,如果TLB中正好存放着所需的页表,则称为TLB 命中(TLB Hit)

接下来CPU再依次看TLB中页表所对应的物理内存地址中的数据是不是已经在一级、二级缓存里了,若没有则到内存中取相应地址所存放的数据。

1.4C PU的物理核,逻辑核概念

DPDK在使用的时候经常会要求进行CPU的core的分配,本小节将对CPU的物理核,逻辑核的概念进行简单的介绍。

一个物理封装的CPU(通过physical id区分判断)可以有多个核(通过core id区分判断)。而每个核可以有多个逻辑cpu(通过processor区分判断)。一个核通过多个逻辑cpu 实现这个核自己的超线程技术。

1.4.1物理处理器封装个数

Sockets,中文翻译成“插槽”,也就是所谓的物理处理器封装个数,即俗称的“物理CPU 数”,管理员可能会称之为―路‖。

例如一块“Intel Core i3-2310M”只有1个“物理处理器封装个数”。若对于有多个处理器插槽的服务器,“物理处理器封装个数”很可能会大于1。

可以使用如下命令查询物理处理器的封装个数。

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc –l

具有相同physical id的CPU是同一个CPU封装的线程或核心

或者使用

lscpu | grep "CPU socket"(iscpu可以看到很多cat /proc/cpuinfo看不到的东西,建议使用)

1.4.2处理器核心数

processor cores,即俗称的“CPU核心数”,也就是每个物理CPU中core的个数

例如“Intel Core i3-2310M”是双核处理器,它有2个“处理器核心数”。

可以通过以下的命令来查看:

cat /proc/cpuinfo| grep "cpu cores"| uniq

具有相同core id的CPU是同一个core的超线程

1.4.3逻辑处理器数

逻辑处理器数英文名是logical processors,即俗称的“逻辑CPU数”,

逻辑核心处理器,就是虚拟物理核心处理器的一个超线程技术

例如“Intel Core i3-2310M”支持超线程,一个物理核心能模拟为两个逻辑处理器,即一块“Intel Core i3-2310M”有4个“逻辑处理器数”。

可以使用

cat /proc/cpuinfo| grep "processor"| wc–l

1.4.4SIBLING

SIBLING是内核认为的单个物理处理器所有的超线程个数,也就是一个物理封装中的逻辑核的个数。

如果SIBLING等于实际物理核数的话,就说明没有启动超线程,反之启用超线程。

也就是说使用cat /proc/cpu命令

●如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。

●如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超线程已打开

1.4.5超线程

超线程全名为Hyper-Threading,利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行速度。

采用超线程即是可在同一时间里,应用程序可以使用芯片的不同部分。

虽然单线程芯片每秒钟能够处理成千上万条指令,但是在任一时刻只能够对一条指令进

行操作。而超线程技术可以使芯片同时进行多线程处理,使芯片性能得到提升。

虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU 都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。

如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。

1.5C PU亲和性

CPU的亲和性也就是cpu affinity机制,指的是进程要在指定的CPU 上尽量长时间地运行而不被迁移到其他处理器,通过处理器关联可以将虚拟处理器映射到一个或多个物理处理器上,也就是说把一个程序绑定到一个物理CPU上。

在越来越多核心的cpu机器上,如何提高外设以及程序工作效率的最直观想法就是让各个cpu核心各自干专门的事情。

而且在多核运行的机器上,每个CPU本身自己会有缓存,缓存着进程使用的信息,而进程可能会被OS调度到其他CPU上,如此,CPU cache命中率就低了,当绑定CPU后,程序就会一直在指定的cpu跑,不会由操作系统调度到其他CPU上,性能有一定的提高。

另外一种使用绑核考虑就是将重要的业务进程隔离开,对于部分实时进程调度优先级高,可以将其绑定到一个指定核上,既可以保证实时进程的调度,也可以避免其他CPU上进程被该实时进程干扰。

DPDK利用cpu affinity主要是将控制面线程以及各个数据面线程绑定到不同的cpu,省却了来回反复调度的性能消耗,线程之间互不干扰的完成工作。

第二章编译DPDK工具链

2.1安装DPDK

把从官网下到的DPDK的安装包,并解压以后可以得到如下的目录

user@droid:~/rte-source$ ls

app/ config/ examples/ lib/ LICENSE.GPL LICENSE.LGPL Makefilemk/ scripts/ tools/

?lib: DPDK的库函数

?app:的应用的源文件

?examples:应用的一些例程源码

?config, tools, scripts, mk: makefiles,脚本和一些配置文件。

指得一提的是,官方文档中约定rte-source为软件解压的目录路径。

2.2D PDK目标环境变量

DPDK的编译工具都以如下格式表示:ARCH-MACHINE-EXECENV-TOOLCHAIN

?ARCH :表示体系结构,i686表示32位操作系统, x86_64表示64位操作系统

?MACHINE :一般是default ,但是在安装pktgen-DPDK的时候会选择wr。

native表示编译过后的程序会尽量适应创建他的平台

?EXECENV: 链接环境,linuxapp表示运行在linux用户空间

?TOOLCHAIN:编译工具链gcc, icc(使用的是C++编译器)

使用make install T= ARCH-MACHINE-EXECENV-TOOLCHAIN就可以编译所有的程序。

2.3加载DPDKigb_uio模块

要运行DPDK的所有程序,必须首先加载igb_uio模块。Linux系统中一般的驱动设备都是运行在内核空间,但是DPDK是应用层平台,所以与此紧密相连的网卡驱动程序都通过uio机制运行在用户态下。可以使用如下命令加载模块:

sudoinsmodkmod/igb_uio.ko

2.4把网络端口绑定到igb_uio上

dpdk会让网卡脱离系统内核,重新绑定到igb_uio上,然会从用户态里去控制网卡,可以在执行程序的时候使用-b的选项让某个端口不被解绑。

一定从内核驱动中解绑,从系统角度是看不到这张网卡,也就是说通过ifconfig命令,看不到这张网卡的信息,而且所有网络应该程序也都用不了这张网卡。要用这个网卡,就需要用DPDK的API来写发包,收包程序。如果这个网卡要配IP,则需要在程序里自已实现TCP/IP协议。

对网卡的绑定和解绑使用pci_unbind.py脚本。

比如

root@host:DPDK# ./tools/pci_unbind.py –status

可以看网卡绑定的情况:

Network devices using IGB_UIO driver

====================================

0000:82:00.0 '82599EB 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused=ixgbe

0000:82:00.1 '82599EB 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused=ixgbe

Network devices using kernel driver

===================================

0000:04:00.0 'I350 Gigabit Network Connection' if=em0 drv=igb unused=igb_uio *Active* 0000:04:00.1 'I350 Gigabit Network Connection' if=eth1 drv=igb unused=igb_uio

0000:04:00.2 'I350 Gigabit Network Connection' if=eth2 drv=igb unused=igb_uio 0000:04:00.3 'I350 Gigabit Network Connection' if=eth3 drv=igb unused=igb_uio Other network devices

=====================

To bind device eth1, 04:00.1, to the igb_uio driver:

为了把网卡eth1, 04:00.1, 绑定到igb_uio的驱动上,使用如下命令

root@host:DPDK# ./tools/pci_unbind.py --bind=igb_uio 04:00.1

To restore device 82:00.0 to its original kernel binding: root@host:DPDK# ./tools/pci_unbind.py --bind=ixgbe 82:00.0

再次执行如下命令,看网卡的状态。

root@host:DPDK# ./tools/pci_unbind.py --status

Intel? DPDK—Compiling and Running Sample Applications

Network devices using IGB_UIO driver

====================================

0000:04:00.1 'I350 Gigabit Network Connection' drv=igb_uio unused=igb

0000:82:00.1 '82599EB 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused=ixgbe

Network devices using kernel driver

===================================

0000:04:00.0 'I350 Gigabit Network Connection' if=em0 drv=igb unused=igb_uio *Active* 0000:04:00.2 'I350 Gigabit Network Connection' if=eth2 drv=igb unused=igb_uio

0000:04:00.3 'I350 Gigabit Network Connection' if=eth3 drv=igb unused=igb_uio 0000:82:00.0 '82599EB 10-Gigabit SFI/SFP+ Network Connection' if=p802p1 drv=ixgbe unused=igb_uio

Other network devices

=====================

可以看出0000:04:00.1已经绑定到了igb_uio上。

第三章编译和运行程序

3.1编译程序

目标环境的目录建立以后,就已经包含了所有的库,头文件。

此时需要设置两个非常重要的环境变量:

?RTE_SDK -——指向DPDK安装文件夹。例如把从官网上下到的DPDK安装包解压到用户的根目录下,并且改名为dpdk , 那么RTE_SDK应为~/dpdk

?RTE_TARGET ——指向DPDK目标环境目录,也就是前面定义的ARCH-MACHINE-EXECENV-TOOLCHAIN

下面介绍一个运行在DPDK环境下的helloworld程序的建立过程

user@droid:~/rte$ cd examples/helloworld/

user@droid:~/rte/examples/helloworld$ export

RTE_SDK=$HOME/rteuser@droid:~/rte/examples/hellowo

rld$ export RTE_TARGET=x86_64-default-linuxapp-gcc

user@droid:~/rte/examples/helloworld$ make

CC main.o

LD helloworld

INSTALL-APP helloworld

INSTALL-MAP helloworld.map

user@droid:~/rte/examples/helloworld

$ ls build/app

helloworldhelloworld.map

3.2运行程序

注意:UIO驱动必须首先安装,大内存页必须提前分配才可以运行一个程序。

建立了DPDK的目标环境以后,如果要运行DPDK程序,首先必须把该程序链接到到目标环境的EAL(Environmental Abstraction Layer,环境抽象层)库中。通用方法是传递给EAL的一系列参数

./rte-app -c COREMASK -n NUM [-b ] [--socket-mem=MB,...] [-m MB] [-r NUM] [-v] [--file-prefix] [--proc-type ]

该命令格式使用的是BNF巴科斯范式,其规则如下

●在双引号中的字("word")代表着这些字符本身。

●在双引号外的字(有可能有下划线)代表着语法部分。

●尖括号( <> )内包含的为必选项。

●方括号( [ ] )内包含的为可选项。

●大括号( { } )内包含的为可重复0至无数次的项。

●竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。

●::= 是“被定义为”的意思。

每个选项的详细解释如下:

其中-c , -n 是必须使用的,其他的可选。

比如可以user@target:~$ ./helloworld -c f -n 4

--proc-type 和--file-prefix可以在同时运行多个DPDK程序的时候使用

运行helloworld

rte@rte-desktop:~/rte/examples/helloworld$ sudo ./build/app/helloworld -c 0xf -n 3

[sudo] password for rte:

EAL: coremask set to f

显示逻辑核和插槽的关系

EAL: Detected lcore 0 as core 0 on socket 0

EAL: Detected lcore 1 as core 0 on socket 1

EAL: Detected lcore 2 as core 1 on socket 0

EAL: Detected lcore 3 as core 1 on socket 1

分配大页

EAL: Setting up hugepage memory...

EAL: Ask a virtual area of 0x200000 bytes

EAL: Virtual area found at 0x7f0add800000 (size = 0x200000)

EAL: Ask a virtual area of 0x3d400000 bytes

EAL: Virtual area found at 0x7f0aa0200000 (size = 0x3d400000)

EAL: Ask a virtual area of 0x400000 bytes

EAL: Virtual area found at 0x7f0a9fc00000 (size = 0x400000) EAL: Ask a virtual area of 0x400000 bytes

EAL: Virtual area found at 0x7f0a9f600000 (size = 0x400000) EAL: Ask a virtual area of 0x400000 bytes

EAL: Virtual area found at 0x7f0a9f000000 (size = 0x400000) EAL: Ask a virtual area of 0x800000 bytes

EAL: Virtual area found at 0x7f0a9e600000 (size = 0x800000) EAL: Ask a virtual area of 0x800000 bytes

EAL: Virtual area found at 0x7f0a9dc00000 (size = 0x800000) EAL: Ask a virtual area of 0x400000 bytes

EAL: Virtual area found at 0x7f0a9d600000 (size = 0x400000) EAL: Ask a virtual area of 0x400000 bytes

EAL: Virtual area found at 0x7f0a9d000000 (size = 0x400000) EAL: Ask a virtual area of 0x400000 bytes

EAL: Virtual area found at 0x7f0a9ca00000 (size = 0x400000) EAL: Ask a virtual area of 0x200000 bytes

EAL: Virtual area found at 0x7f0a9c600000 (size = 0x200000) EAL: Ask a virtual area of 0x200000 bytes

EAL: Virtual area found at 0x7f0a9c200000 (size = 0x200000)

EAL: Ask a virtual area of 0x3fc00000 bytes

EAL: Virtual area found at 0x7f0a5c400000 (size = 0x3fc00000)

EAL: Ask a virtual area of 0x200000 bytes

EAL: Virtual area found at 0x7f0a5c000000 (size = 0x200000)

需要向Socket0和Socket 1各申请1024*2MB的内存页。

EAL: Requesting 1024 pages of size 2MB from socket 0

EAL: Requesting 1024 pages of size 2MB from socket 1

逻辑核已经准备好了。

EAL: Master core 0 is ready (tid=de25b700)

EAL: Core 1 is ready (tid=5b7fe700)

EAL: Core 3 is ready (tid=5a7fc700)

EAL: Core 2 is ready (tid=5affd700)

hello from core 1 hello from core 2 hello from core 3 hello from core 0

可以看出这个例程的意义在于显示了DPDK的程序是如何建立和运行的。

首先初始化EAL环境,一旦初始化完毕,立刻显示逻辑核的位置以及它们的物理核的映射关系。

Win10系统下安装新字体的两种方法

Win10系统下安装新字体的两种方法 新安装了Win10系统之后,很多用户对新系统的操作还不是那么熟悉,很多简单的操作都使用不来,就比如在Win10系统下安装一个新的字体,这也是一个小困难,其实方法很简单,来看下小编为大家整理的两大方法。 一、下载字体 首先需要下载您喜欢的字体,下载字体很简单,只要网上一搜索就可以找到很多,然后找到一些自己喜欢的字体下载即可,如下图所示。 二、Win10怎么安装字体 下载好了字体,安装非常简单,最常见的有2种方法,如果下载的字体很少,可以采用下面的第一种方法,一个一个安装,如果是需要批量安装字体的话,采用第二种方法更快。 方法一、直接安装字头 下载好字体后,解压,然后找到字体文件,然后在字体文件上鼠标右键,在弹出的菜单中,选择【安装】即可,如下图所示。 点击安装后,等待一会就可以安装完成了,如下图所示。

方法二、批量安装字体 如果一次性下载的字体文件很多,而你又嫌一个一个字体安装比较麻烦的话,还可以使用批量安装字体方法,具体方法如下。 1、首先将下载的所有的安装字体文件放置一个文件夹中; 2、然后找到Win10字体安装路径,找到路径方法很简单,在Win10开始菜单中的搜索框中,键入【字体】即可找到,如下图所示。 3、之后打开字体,就会进入到Win10字体安装路径文件夹了,打开这个Win10字体安装路径之后,我们就可以将放置在一个文件夹中的字体全部选中,并复制,然后在Win10字体安装路径文件的空白位置【右键鼠标,然后选择粘贴】,这样就可以将复制的字体全部批量安装进来了,如下图所示。 Win10系统下安装新字体的方法其实和其他Windows 系统的操作是类似的,用户可以选择直接安装字头,也可以选择批量安装,如果是要安装多种字体,小编建议使用批量安装比较方便,也比较快。(转自系统之家网站)

下载字体后如何安装字体

如何把网上下载到的字体安装到自己的电脑上 第一种安装字体方法: 若是字体文件可直接复制到windows\fonts目录下,也可以在windows\fonts中,点击菜单栏中“文件”选项,点击“安装字体文件”,然后选择要安装的文件即可。 若安装字体文件是压缩文件(.rar,.zip等),找到windows\fonts目录,然后直接解压到当前文件夹即可。 第二种安装字体方法: 本方法是利用创建快捷方式安装字体方法。这种方法适合安装字体的时间较频繁时使用。 首先在桌面上新建一个快捷方式:桌面空白地方,单击鼠标右键,选择“新建”——“快捷方式”。再目标位置选择:指向字体的件夹(windows\fonts)。然后桌面上就出现了一个带小键头的(fonts文件夹的快捷方式)。 把刚才建的快捷方式剪切到C:\Documents and Settings\SendTo文件夹下粘贴。(如果找不到SendTo文件夹,有可能是隐藏了,把它显示出来就可以)。 这样,每次下载了新字体后,只需要在字体文件上单击右键,"发送到"-"fonts"就可以安装字体了,非常方便。 不小心,删错了,还把回收站清空了,咋办啊? 只要三步,你就能找回你删掉并清空回收站的东西 步骤: 1、单击“开始——运行,然后输入regedit (打开注册表)

2、依次展开:HEKEY——LOCAL——MACHIME/SOFTWARE/microsoft/WINDOWS/ CURRENTVERSION/EXPLORER/DESKTOP/NAMESPACE 在左边空白外点击“新建” ,选择:“主键”,把它命名为“645FFO40——5081——101B——9F08——00AA002F954E” 再把右边的“默认”的主键的键值设为“回收站”,然后退出注册表。就OK啦。 3、要重启计算机。 只要机器没有运行过磁盘整理。系统完好.任何时候的文件都可以找回来。

字体安装方法和卸载教程

字体安装方法和卸载教程 .txt如果真诚是一种伤害,请选择谎言;如果谎言是一种伤害,请选择沉默;如果沉默是一种伤害,请选择离开。 第一步签名安装字体驱动第二步下载字体。 下载下面的压缩文件,每个字体解压一个即可,把解压的字体复制放在C 或E盘文件夹里,C/DATA/Fonts或E/DATA/Fonts(个人建议放在C盘,放在E 盘,手机可能会无法选择大容量存储模式,只是个人建议)。 如果没有这个文件夹,就里面建一个Fonts。 第三步关机重新启动,就可以了。 卸载字体方法: 关机,拔卡,然后开机,插卡,连接数据线到电脑,找到相应盘 DATA/FONTS文件夹,删除里面的字体文件,恢复原机字体直接开机即可,换其他字体同样删除里面的字体文件,然后就把其他字体复制进去,开机即可,方便快捷。 如果你只是想换个字体,下面的文字可以直接略过。 安装卸载方法: 安装之前请卸掉机里或卡里之前的字体驱动Font r outer及字体文件(包括E: /Font router.ini C: /Font r outer.ini) 1.签名后安装字体驱动Font r outer.LT.for.v 9.Build .unsigned. sis

2.下载下面字体的压缩包,解压后拷贝字体文件**.ttf到c: \data\fonts\或e: \data\fonts\下 3.重新启动手机,你所喜欢的字体就完美呈现了 4.如果要卸载,或暂时屏蔽Font r outer(如更换新字体),可用X-plore文件管理器修改c: \data\fonts\Font r outer.ini或e: \data\fonts\Font r outer.ini中的Enable=1为Enable=0,然后保存,关机,开机,已经恢复系统自带字体了,然后就可以在程序管理里删除字体驱动Fontrouter.LT.for.v 9.Build了,然后再删除字库文件c: \data\fonts\**.ttf或e: \data\fonts\**.ttf。 如果要更换新字体,则不必删除字体驱动.(1)先把Font r outer.ini中的Enable=1为Enable=0,重启手机(2)到fonts文件夹删除原来字体文件,粘贴需要的字体文件(3)再把Font r outer.ini中的Enable=0为Enable=1,重启手机,就又是一种字体呈现在你眼前了 5.解决剃头剃尾修改Fontrouter.ini之内容,将下列数值变更。 INI官方预设路径为E: \DATA\FONTS底下变更后FixCharMetrics=0 => FixCharMetrics=1注意不是这一行哦FixFontMetrics=0两者很像所以贴出来提醒大家,两者若都改成1也无所谓,但是记得FixCharMetrics=0一定要变成1哟,如此剃头剃尾现象即可消除了。

字体安装方法和卸载教程

字体安装方法和卸载教程.txt如果真诚是一种伤害,请选择谎言;如果谎言是一种伤害,请选择沉默;如果沉默是一种伤害,请选择离开。第一步签名安装字体驱动 第二步下载字体。下载下面的压缩文件,每个字体解压一个即可,把解压的字体复制放在C 或E盘文件夹里,C/DATA/Fonts或E/DATA/Fonts(个人建议放在C盘,放在E盘,手机可能会无法选择大容量存储模式,只是个人建议)。如果没有这个文件夹,就里面建一个Fonts。 第三步关机重新启动,就可以了。 卸载字体方法:关机,拔卡,然后开机,插卡,连接数据线到电脑,找到相应盘DATA/FONTS 文件夹,删除里面的字体文件,恢复原机字体直接开机即可,换其他字体同样删除里面的字体文件,然后就把其他字体复制进去,开机即可,方便快捷。 如果你只是想换个字体,下面的文字可以直接略过。 安装卸载方法: 安装之前请卸掉机里或卡里之前的字体驱动Font r outer及字体文件(包括E:/Font r outer.ini C:/Font r outer.ini) 1.签名后安装字体驱动Font r outer.LT.for.v9.Build20080619.unsigned. sis 2.下载下面字体的压缩包,解压后拷贝字体文件**.ttf到c:\data\fonts\或e:\data\fonts\下 3.重新启动手机,你所喜欢的字体就完美呈现了 4.如果要卸载,或暂时屏蔽Font r outer(如更换新字体),可用X-plore文件管理器修改c:\data\fonts\Font r outer.ini或e:\data\fonts\Font r outer.ini中的Enable=1为Enable=0,然后保存,关机,开机,已经恢复系统自带字体了,然后就可以在程序管理里删除字体驱动Font r outer.LT.for.v9.Build20080619了,然后再删除字库文件c:\data\fonts\**.ttf或e:\data\fonts\**.ttf。如果要更换新字体,则不必删除字体驱动. (1)先把Font r outer.ini中的Enable=1为Enable=0,重启手机 (2)到fonts文件夹删除原来字体文件,粘贴需要的字体文件 (3)再把Font r outer.ini中的Enable=0为Enable=1,重启手机,就又是一种字体呈现在你眼前了 5.解决剃头剃尾 修改Font r outer.ini之内容,将下列数值变更。INI官方预设路径为E:\DATA\FONTS底下变更后 FixCharMetrics=0 => FixCharMetrics=1 注意不是这一行哦FixFontMetrics=0 两者很像所以贴出来提醒大家,两者若都改成1也无所谓,但是记得 FixCharMetrics=0 一定要变成1哟,如此剃头剃尾现象即可消除了。 特别说明这样字体修正以后仍然有剃头现象的请修改全局缩放中100改为95至90(每个机型自行调整,不一样的)。 ZoomRatio=100------改成95左右即可 ZoomMinSize=0 ZoomMaxSize=48

Windows 7 字体安装方法

Windows 7 字体安装方法全攻略 字体对于做设计的朋友是不可缺少的东西,通常在XP 系统中,我们采取的安装字体的方法是直接将字体拖动到C:\WINDOWS\Fonts路径下。如果你不想让字体占用系统盘太大空间的话,你也可以将字体放到其他盘,只在系统盘安装快捷方式,具体实现方法请看:如何将字体安装到其它盘。 在Windows 7 系统中,安装字体的方法与XP 有所不同,本文将详细解说在Windows 7 系统中安装字体的方法。 Windows 7 安装字体方法一: 这也是最简单的方法,Windows 7 已经支持双击直接安装字体,你只需要在需要安装的字体上双击,在打开的字体文件界面上点击最上方的“安装”按钮,就可以将该字体安装到系统中。 此方法比较适用于安装单个字体文件,好处就是可以直接预览到字体的样式。 Windows 7 安装字体方法二: 这个方法适用于不想把字体安装到系统盘的朋友们,也是园子推荐的安装方法,其安装结果只是在系统盘字体文件夹里面创建了一个快捷方式,基本上不占用空间。你需要进行如下操作: 1.直接按Win + R 打开运行对话框,输入fonts 回车,即可打开字体文件夹。 2.点击左侧的“字体设置”,打开字体设置窗口,在“安装设置”选项中勾选“允许使用快捷方式安装字体(高级)”选项,点击“确定”按钮。 3.打开你存放字体的文件夹,全选要安装的字体,鼠标右键单击会看到如下的窗口:

Windows 7 安装字体时的菜单 选择“作为快捷方式安装”,即可将字体以快捷方式安装到系统盘,如果你选择的是“安装”,将会把字体复制到系统盘。 使用此方法适合批量安装字体,对于搞设计的朋友园子强烈建议不要将字体直接安装在系统盘。 在操作中会发现Windows 7 在安装字体时比XP 系统方便了很多,比如在安装字体时遇到已经安装或者字体损坏的情况时,会弹出如下图窗口提示:

手机字体安装教程

QUOTE: 帖子教程篇分三部分: 第一步,初级篇:傻瓜式的字体安装使用,一分钟就让你用上喜欢的字体;字体卸载轻松搞定! 第二步,进阶篇:让你对字体的配置随心所欲,字体改大改小,解决显示剃头剃尾,一次重启更换成新字体,多字体同时调用显示,想知道就看这篇吧。 第三步,高手篇:对字体符号字母不满意,觉得字体不全?没关系,字体大修改,想怎么改都随你乐意。还为添加特殊符号到处求人苦恼不已吗?看完这个 从此不求人 二、三楼是字体资源篇,二楼全部都是Kelvin的字体,一向对他的字体有爱,为什么呢,你到二楼就知道了。呵呵。三楼大部分是Kelvin的,还有些其他人的,全部为本人亲测截图哦! 初级篇

字体的安装:首先,下载字体驱动程序 FontRouter.LT.for.v9.Build20071109.unsigned.sis (36.54 KB), 字体驱动需要签名或者破`解后才能安装,否则会提示证书错误,签名后安装过程中提示与手机不兼容,没关系,不用理会,继续即可,安装位置选择存储卡,推荐不要安装到手机里,原因很简单,万一调用字体后出现不能启动的现象,拔卡开机即可,如果装到手机里出现问题,估计你要哭了,格机的可能性90%,而且字体驱动装到存储卡不会影响数据传输模式,照常使用。接下来去E:\data\fonts下找到Font r outer.ini 文件,打开找到 [Global] ; Enable/Disable main function of Font r outer. ; Default: 1 Enable=0把这里的0改成1(本帖的驱动安装后此值默认为1,不必更改)。 然后把你的字体TTF文件(二楼可下载),放到C:\data\fonts(自建目录)下,注意字体文件名字不要是中文(可能引起无法启动),改成字母名,比如雅黑可以命名为yahei.ttf,另外注意字体压缩包不要用X 管理器解压缩,不然使用后也很可能引起手机无法启动。推荐电脑端解压缩。好啦,重启,再看,是不是变成你喜欢的字体了?很简单的,最傻瓜式的字体安装就此完成。 字体的卸载:用烦了,想卸载,怎么操作呢?很简单,首先去程序管理卸载字体驱动,然后重启,看,恢复成你的默认字体了吧,然后去

手机字体安装步骤

1.字体安装步骤: 1.1未曾安装者 先安装版驱动程序字体驱动(需自签).sis (32.66 KB)(需自签名),选择安装至存储卡里 将要使用的字型档XXX.TTF放至E:\DATA\FONTS或C:\DATA\FONTS 里(如没有此文件夹,就自己建立一个就可以) 两个步骤操作完后,立即关机重开字型即可完美呈现 1.2曾安装过字型者 先删除旧版的字体,如何删除请看你下载的地方说明 再下载字体驱动程序,选择安装至存储卡里 将要使用的字型档XXX.TTF放至E:\DATA\FONTS或C:\DATA\FONTS 里(如没有此文件夹,就自己建立一个就可以) 关机重开字型即呈现 注:有 PART1 PART2 (或以上的)压缩文件需要全部下载才能解压!!!! QUOTE: 2.更换新字型 关机拔卡

然后删除E:\DATA\FONTS或C:\DATA\FONTS里以前的字体XXX.TTF 再用文件管理软件将新字体TTF文件复制到E:\DATA\FONTS或 C:\DATA\FONTS里,如果没有此文件夹,就自己建立一个 需要把原来字体TTF文件删除 关机重开即可 (文件动力、EXPLORE....等等文件管理程序皆可) QUOTE: 3.解决剃头剃尾 修改Font r outer.ini之内容,将下列数值变更。INI官方预设路径为E:\DATA\FONTS底下 变更前变更后 FixCharMetrics=0 => FixCharMetrics=1 注意不是这一行哦FixFontMetrics=0 两者很像所以贴出来提醒大家,两者若都改成1也无所谓,但是记得 FixCharMetrics=0 一定要变成1哟,如此剃头剃尾现象即可消除了

相关文档
最新文档