Linux下虚拟机扩展分区容量(硬盘空间)

小C阅读(109)

一. VMware虚拟机设置

首先打开虚拟机设置,再选中硬盘选项,选择扩展选项(E),设置扩展大小(需要关机状态,并且不能有虚拟机快照),比如我原来是80G ,通过设置扩展到120G。这一步过后linux就多了40G空闲磁盘。但这只是VMware给该虚拟机分了硬盘,就像你加了块硬盘到电脑上,下面还要在linux系统中配置使硬盘空间正确挂载。

二. 创建分区

  1. 终端输入如下命令:
    fdisk /dev/sda

    接着,输入 p 查看分区信息,示例输出如下:

    Command (m for help): p
    Disk /dev/sda: 128.8 GB, 128849018880 bytes
    255 heads, 63 sectors/track, 15665 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00044781
    Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          64      512000   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2              64        2611    20458496   8e  Linux LVM
    /dev/sda3            2611        5221    20966162+  83  Linux
    /dev/sda4            5222       15665    83891430   83  Linux
  2. 创建分区,这里分两种情况:
    1). 一种是主分区未满4个,这时可以直接创建分区:
    fdisk command里输入 n(new一个新分区)此时进入扩展、主分区的选择,输入 p 选择主分区,如果你之前已有2个分区,那么就选择分区号为3;如果有已有3个分区,则选择分区号为4。最后会提示选择该分区的起始地址和结束地址,一般选默认的直接回车即可,此时再次输入 p 就可以看到刚才创建的新分区。

    2). 第二种已达到4个分区,则需要输入 d,然后输入 4,以删除第 4 分区,然后输入 n,输入 p 选择主分区,选择分区号为 4,以重新创建第 4 分区,最后会提示选择该分区的起始地址和结束地址,选默认的直接回车即可,此时再次输入 p 就可以看到刚才创建的新分区,示例输出如下:
[root@test ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p        #查看分区表信息

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005210c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1301    10240000   83  Linux
/dev/sda3            1301        1497     1572864   82  Linux swap / Solaris
/dev/sda4            1497        2611     8952832   83  Linux

Command (m for help): d           #删除分区
Partition number (1-4): 4         #删除第四个

Command (m for help): p       #再次查看分区信息,/dev/sda4已被删除

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005210c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1301    10240000   83  Linux
/dev/sda3            1301        1497     1572864   82  Linux swap / Solaris

Command (m for help): n      #创建新的分区
Command action
   e   extended
   p   primary partition (1-4)
p             #创建为主分区
Selected partition 4
First cylinder (1497-3916, default 1497):          #经对比,正好和上一个磁盘柱一致,默认回车即可
Using default value 1497
Last cylinder, +cylinders or +size{K,M,G} (1497-3916, default 3916): 
Using default value 3916              #直接默认回车即可

Command (m for help): p               #查看分区表信息

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005210c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1301    10240000   83  Linux
/dev/sda3            1301        1497     1572864   82  Linux swap / Solaris
/dev/sda4            1497        3916    19436582   83  Linux

Command (m for help): wp       #保存并退出,如果创建有误,直接退出不要保存即可
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
  1. 创建物理卷 PV (Physical volume)
    这里根据前面的操作也分两种情况处理:
    1). 如果是直接创建的分区,则输入 pvcreate /dev/sda3 创建物理卷,然后输入 vgdisplay,查看下当前的卷组(volumegroup),结果为 VolGroup,然后输入 vgextend /dev/mapper/VolGroup /dev/sda3 将新的pv加入到原有的vg

    [root@test ~]# vgdisplay 
    --- Volume group ---
    VG Name               VolGroup
    System ID             
    Format                lvm2
    Metadata Areas        3
    Metadata Sequence No  10
    VG Access             read/write
    VG Status             resizable
    MAX LV                0
    Cur LV                2
    Open LV               2
    Max PV                0
    Cur PV                3
    Act PV                3
    VG Size               119.50 GiB
    PE Size               4.00 MiB
    Total PE              30591
    Alloc PE / Size       29826 / 116.51 GiB
    Free  PE / Size       765 / 2.99 GiB
    VG UUID               qXs6MO-nsYe-ASBU-FS9f-e9Im-XId7-7iQD45

    2). 如果是重新创建的分区,则输入 pvresize /dev/sda4 --setphysicalvolumesize 80G 调整物理卷的大小,大小80G为调整后的大小,需要根据 pvdisplay 获取到的 sda4物理卷的大小40G,然后加上我们此次调整增加的大小40G,最终为80G。重新创建的分区不需要将物理卷PV加入VG,因为以前已经加过了。

[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               19.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4994
  Free PE               0
  Allocated PE          4994
  PV UUID               8i4eDm-BIXi-2gz7-AROL-zinS-QeYE-2lJviN

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               VolGroup
  PV Size               19.99 GiB / not usable 2.77 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              5118
  Free PE               0
  Allocated PE          5118
  PV UUID               N5z1G9-Qh6O-UoJo-Hweg-PLRy-Hr5Y-Q0lfPS

  --- Physical volume ---
  PV Name               /dev/sda4
  VG Name               VolGroup
  PV Size               80.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              20479
  Free PE               765
  Allocated PE          19714
  PV UUID               N4G0wG-cKp2-eIwU-hQXw-YKBo-2Wsk-iZLLsM
  1. 扩大逻辑卷LV
    扩大当前正在使用的(根文件系统)逻辑卷LV,从vg中取剩下的空间这里是40G,但是有保留地址,直接取40G会出错,所以这里我取39G,命令是:

    lvextend -L +39G /dev/mapper/VolGroup-lv_root

    其中,LV名可以通过 df -h 命令获取:

    [root@localhost ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root
                      113G   69G   39G  64% /
    tmpfs                 931M  224K  931M   1% /dev/shm
    /dev/sda1             477M   84M  369M  19% /boot
  2. 更新文件系统
    最后,输入命令:

    resize2fs  /dev/mapper/VolGroup-lv_root

    这一步重新刷新了文件系统大小,之后再次 df -h 查看一下,就可以看到当前根文件系统增加了接近40G!

Qt5 Virtual Keyboard C++集成与实现三(解决模态对话框键盘失效问题)

小C阅读(285)

前面我们已经介绍了:

  1. Qt5 Virtual Keyboard C++集成与实现一(基于QWidget的多语言键盘编译及自定义大小)
  2. Qt5 Virtual Keyboard C++集成与实现二(自适应位置)

当使用模态对话框时,点击对话框里的输入控件,弹出Qt键盘后键盘无法获得焦点的,这是由于模态对话框的特性所导致的,下面就让我们看看如何解决。

Qt5 Virtual Keyboard C++集成与实现三(解决模态对话框键盘失效问题)

一. Qt 模态对话框

先让我们来看看对话框的几种特性:

  1. Qt::NonModa
    The window is not modal and does not block input to other windows.
  2. Qt::WindowModal
    The window is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows.
  3. Qt::ApplicationModal
    The window is modal to the application and blocks input to all windows.

可以看出,比较常用的exec()方法显示的对话框是属于第三种:Qt::ApplicationModal,这种对话框无法接受除了自身之外的任何其他对象的输入,而第二种 Qt::WindowModal 是可以接受 QApplication 的输入,所以我们只需将其改为第二种即可。

二. 实现

我们只需在显示键盘之前添加如下代码:

        if(qGuiApp->focusWindow()->isModal())
            qGuiApp->focusWindow()->setModality(Qt::WindowModal);

现在再看,是不是可以正常使用Qt键盘了?

三. 更多键盘设置

  1. Qt5 Virtual Keyboard C++集成与实现一(基于QWidget的多语言键盘编译及自定义大小)
  2. Qt5 Virtual Keyboard C++集成与实现二(自适应位置)

Qt5 Virtual Keyboard C++集成与实现二(自适应位置)

小C阅读(166)

上一篇文章介绍了 Qt5 Virtual Keyboard的编译和大小设置 ,现在让我们接下来看看如何让Qt键盘实现根据输入控件的位置和大小而自动调整自己的位置。

Qt5 Virtual Keyboard C++集成与实现二(自适应位置)

一. 实现

  1. inputcontex.h增加如下内容:

    Q_PROPERTY(QRectF inputItemGeometry READ inputItemGeometry)
    QRectF inputItemGeometry();

    inputcontex.cpp增加如下内容:

    QRectF InputContext::inputItemGeometry()
    {
    QWidget* pInputItem = (QWidget*)inputItem();
    return pInputItem ? QRectF(((QWidget*)pInputItem->parent())->mapToGlobal(pInputItem->geometry().topLeft()), pInputItem->geometry().size()) : QRectF(0,0,0,0);
    }

    我们使用这个函数来获取当前控件的位置和大小信息。

  2. InputPanel.qml增加如下内容:

        anchors.horizontalCenter: parent.horizontalCenter
        width: Screen.desktopAvailableWidth * 2 / 3
    
        states: State {
            name: "visible";
            when: keyboard.active;
            PropertyChanges {
                target: keyboard;
                y: getInputY()
            }
        }
        transitions: Transition {
            from: "";
            to: "visible";
            reversible: true;
            ParallelAnimation {
                NumberAnimation {
                    properties: "y";
                    duration: 250;
                    easing.type: Easing.InOutQuad;
                }
            }
        }
        function getInputY(){
            if(InputContext.inputItemGeometry.y + InputContext.inputItemGeometry.height + keyboard.height <= screenHeight){
                return InputContext.inputItemGeometry.y + InputContext.inputItemGeometry.height
            }
            else if(InputContext.inputItemGeometry.y - keyboard.height - 100 >= 0)
            {
                return InputContext.inputItemGeometry.y - keyboard.height - 50
            }
            else
            {
                return screenHeight - keyboard.height
            }
        }

    我们使用getInputY函数根据输入控件的位置和大小来调整Qt键盘的位置。

二. 效果

Qt5 Virtual Keyboard C++集成与实现二(自适应位置)

三. 更多键盘设置

  1. Qt5 Virtual Keyboard C++集成与实现一(基于QWidget的多语言键盘编译及自定义大小)
  2. Qt5 Virtual Keyboard C++集成与实现三(解决模态对话框键盘失效问题)

Centos 7 VNC远程桌面无法连接实体会话

小C阅读(173)

在Centos 7上,如果采用 Tigervnc 或者 XRDP 方式实现远程桌面,那么就会存在一个问题,本地连接到远程服务器的并不是实体机当前登录的用户会话,而是一个独立的和当前会话隔离的全新的会话。那么我们需要实现连接到实体会话,该怎么做呢?x11vnc!它可以帮我们实现这个目的。

centos 7 x11vnc remote desktop

Centos 7 远程桌面无法连接实体会话

安装

# yum -y install x11vnc

设置密码

# x11vnc -storepasswd

Enter VNC password:

Verify password:

Write password to /root/.vnc/passwd? [y]/n y

Password written to: /root/.vnc/passwd

设置开机启动

  1. 新建startVnc.sh文件
    # touch /etc/rc.d/init.d/startVnc.sh
  2. 编辑startVnc.sh文件
    # vim /etc/rc.d/init.d/startVnc.sh
  3. 增加如下内容,保存并退出
    #!/bin/bash
    #chkconfig: 345 88 14
    nohup x11vnc --reopen --forever -rfbauth ~/.vnc/passwd &
  4. 新建startVnc.service文件
    # touch /usr/lib/systemd/system/startVnc.service
  5. 编辑startVnc.service文件
    # vim /usr/lib/systemd/system/startVnc.service
  6. 增加如下内容,保存并退出
    [Unit]
    Description=start vnc service
    Requires=graphical.target
    After=graphical.target
    [Service]
    Type=forking
    User=root
    Group=root
    Restart=always
    TimeoutSec=5
    IgnoreSIGPIPE=no
    KillMode=process
    GuessMainPID=no
    RemainAfterExit=no
    ExecStart=/etc/rc.d/init.d/startVnc.sh
    [Install]
    WantedBy=graphical.target
  7. 配置开机启动
    # systemctl enable /usr/lib/systemd/system/startVnc.service
  8. 重启
    # reboot
  9. 查看x11vnc是否成功启动
    # netstat -anp | grep 5900

配置完成

现在,用其他VNC客户端连接这台服务器试试,怎么样?是不是成功了?

Windows搭建NAS教程(一)openmediavault系统的安装

小C阅读(668)

Windows搭建NAS教程(一)openmediavault系统的安装

一. 为何选择在Windows上搭建NAS系统:

  1. 家里的电脑由于有其他用途,需要经常开机,如果再去买一个NAS主机(比如群晖)或者用另外一台真机搭建NAS系统,就白白浪费了没有达到资源的充分利用。
  2. 配合日常适用,基于Windows系统搭建的NAS系统还是要来得方便些。
  3. 当然,如果日常很少使用电脑就可以买一个NAS主机或者小型服务器自己搭建NAS系统。

二. openmediavault 简介

openmediavault是基于Debian Linux的下一代网络附加存储(NAS)解决方案。 它包含SSH,(S)FTP,SMB / CIFS,DAAP媒体服务器,RSync,BitTorrent客户端等服务。 由于框架的模块化设计,因此可以通过插件进行增强。

openmediavault 主要设计用于小型办公室或家庭办公室,但不仅限于这些情况。 这是一种简单易用的即用型解决方案,它使每个人都可以在不加深了解的情况下安装和管理网络附加存储。

官网:https://www.openmediavault.org/

三. 安装 openmediavault 前准备工作

  1. 下载 openmediavault 镜像
  2. 下载并安装 VMware 虚拟机,
    参考 VMware Workstation PRO 15.0破解版下载(含序列号)

四. VMware 设置

  1. 打开 VMware Workstation,并选择 文件->新建虚拟机->典型->下一步
  2. 选择 安装程序光盘映像文件(iso)浏览 并指定光盘映像文件的路径,然后选择 下一步:
    openmediavault
  3. 选择 Linux,然后需要根据下载的 openmediavault 版本选择,小C下载的是 openmediavault_4.1.22-amd64.iso,openmediavault的版本和Linux内核存在对应关系,那么接下来就可以选择 Debian 9.x 64 位 或者根据Linux内核选择 Linux 4.x 64 位
    openmediavault
    然后点击 下一步
  4. 根据自己需要设定 虚拟机的名称和位置,然后选择 下一步
  5. 磁盘安装 默认大小 设定就可以,不够以后可以扩容;然后选择 将虚拟磁盘存储为单个文件->下一步
    openmediavault
  6. 可以在此时自定义硬件,根据自己的电脑性能和需要分配合适的内存和cpu给虚拟机,当然也可以在以后随时设置,然后点击 完成
  7. 之后虚拟机便会加载镜像文件,启动安装程序

五. 安装 openmediavault 系统

  1. 选择 Install
    openmediavault
  2. 根据需要选择合适的语言(小C这里选择中文)
    openmediavault
  3. 选择
    openmediavault
  4. 选择区域 中国
    openmediavault
  5. 选择键盘样式 汉语
    openmediavault
  6. 开始加载安装组件
    openmediavault
  7. 设置主机名,可随意填写
    openmediavault
  8. 设置域名,可随意填写
    openmediavault
  9. 设置 root 密码
    openmediavault
  10. 设置时间
    openmediavault
  11. 选择要安装系统所在的磁盘,磁盘根据主板上接口顺序按照 sda->sdb->sdc 这样的顺序排列,一般选择默认的 sda 就行了
    openmediavault
  12. 开始安装
    openmediavault
  13. 设置镜像所在国家
    openmediavault
  14. 直接选择默认的ftp.国家代码.debian.org就行(我们这里选择 ftp.cn.debian.org
    openmediavault
  15. 安装grub启动引导器,和上面的选择一致sda
    openmediavault
  16. 安装完成,点击继续等待虚拟机重启
    openmediavault
  17. 安装完成后,我们可以在看到通过网页访问的ip地址 192.168.1.88,后面显示登陆网页用户名 admin 密码 openmediavault。如果要修改web访问密码,可以在 浏览器 里访问192.168.1.88,然后在 系统->常规设置->Web管理员密码 选项里设置新密码
    openmediavault
    当然也可以通过终端运行 omv-firstaid 命令更改密码
    openmediavault
    可以看到,此命令还可以进行诸如网络配置等其他一些功能的设置。

六. 后续

我们目前只完成了最基本的基于openmediavault的NAS系统的搭建,后续教程还会陆续介绍NAS系统的各项设置和组件的安装。

Win10远程唤醒/开机Wake On Lan设置

小C阅读(400)

Win10远程唤醒/开机Wake On Lan设置

一. 设置Bios

以华硕主板为例,在高级->APM->PCIE,开启PCIE

wake on lan

wake on lan

二. 更新网卡驱动

wake on lan

wake on lan

三. 网卡配置

  1. 打开网络和共享中心 -> 以太网 -> 属性 -> 配置 -> 高级,确保唤醒模式唤醒魔包处于启用状态。
    wake on lan
    wake on lan
    wake on lan
  2. 确保勾选上网卡的电源管理->允许此设备唤醒计算机选项。
    wake on lan

四. 关闭 Win10 快速启动

右键左下角开始 -> 电源选项 -> 选择电源按钮功能 -> 更改当前不可用的设置 -> 勾除启用快速启动
wake on lan
wake on lan

五. 路由器设置

现在将本机的Mac地址添加进去就可以通过路由器唤醒电脑。

wake on lan

如果需要做外网访问,还需要对路由器做DDNS或者端口映射,这里不做细说。

CentOS 7编译FFMpeg集成H264 H265

小C阅读(402)

CentOS 7编译FFMpeg集成H264 H265

一. 下载相关资源

  1. 前往FFmpeg官方网站下载自己需要版本的FFMpeg:
    https://ffmpeg.org/download.html
  2. x264官方下载页:
    https://www.videolan.org/developers/x264.html
    如果下载最新版本,可以直接从如下地址获取:
    ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
  3. x265官方下载页:
    https://bitbucket.org/multicoreware/x265/downloads/

二. 编译x264

  1. 解压并进入x264目录
  2. 配置:
./configure
  1. 编译并安装:
make -j4
make install

三. 编译x265

  1. 解压并进入x265 source目录,示例代码如下:
cd x265_3.1.1/source/
  1. 配置:
cmake CMakeLists.txt
  1. 编译并安装:
make -j4
make install

四. 编译FFMpeg

  1. 解压并进入FFMpeg目录
  2. 配置:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure --enable-libx264 --enable-libx265 --disable-w32threads --disable-debug --enable-pthreads

其他更多配置选项参考帮助

./configure -h
  1. 编译并安装:
make -j4
make install

使用再生龙对Win10系统进行备份还原

小C阅读(530)

考虑这样一个情景:当你需要从机械硬盘升级到固态硬盘,或者你之前作为系统盘的固态硬盘空间不足,需要扩容,这时如果你的系统包含了很多重要东西重装系统和软件太繁琐的的话,你肯定希望能将系统完整的移动到新盘上,那么有什么比较简单快捷有效的方法可以实现这一目的吗?答案当然是肯定,接下来就让我们看一下如何用再生龙实现这一目的。

扩展阅读:再生龙介绍以及如何制作再生龙可启动U盘

使用再生龙对Win10系统进行备份还原

一. 为何选择再生龙?

为何不选择 symantec ghost(应该是目前国内备份还原系统用得最多的一款软件)和 diskgenus等备份还原软件呢?主要基于两点:
1. 老版本ghost对win10支持并不好,包括gpt分区等。
2. 速度和再生龙比都慢太多,再生龙的备份还原速度差不多是上面两款软件的10倍。在小C测试下,ghost差不多要接近2个小时,diskgenus也是一个多小时,而再生龙只需10分钟左右!

二. 必要条件

  1. 新的用于还原系统的硬盘或者分区必须比备份的系统大。举个例子:比如你之前的系统盘C盘是机械硬盘,C盘分区100G,那么现在如果你希望用SSD固态硬盘替换的话,这块固态硬盘需要大于100G!
  2. 已有一个再生龙可启动U盘,如果你还不会制作,可以参考我的另一篇文章:
    https://www.iemblog.com/?p=1160&lang=zh
  3. 已有一个带PE系统的可启动U盘或者光盘,如果还没有,也可以参数我的另一篇文章自己制作一个:
    https://www.iemblog.com/?p=1254&lang=zh

三. 准备工作

  1. 将新盘接入主板上
    接下来的准备工作分两种情况
  2. 如果之前的系统单独位于一个硬盘上,比如用了一个128G的SSD固态硬盘做系统盘,那么就不需要做下面的准备工作。
  3. 传统机械硬盘,除了C盘系统盘还有其他分区作为数据盘的,那么需要做如下工作:
    1). 重启系统,从启动项里选择带PE系统的U盘进入PE系统,启动diskgenus等分区软件,然后将需要备份的系统所在的整个磁盘(即旧盘)的分区表做备份,然后在需要还原系统的磁盘(即新盘)上还原刚才备份的分区表

四. 备份还原

  1. 重启系统,从启动选项里选择再生龙可启动U盘,进入再生龙,之后的大部分步骤都可以参见我的这篇文章:
    https://www.iemblog.com/?p=1160&lang=zh#102
    其中不同的只是,我们需要将 device-image 改为 device-device
    后面的两种选择和上面准备工作一样,需要根据旧盘的系统分区来操作:
  2. 如果之前的系统单独位于一个硬盘上,比如用了一个128G的SSD固态硬盘做系统盘,而新盘也只是打算单独用作系统盘,就可以选择 disk-disk 模式
  3. 除了上面的一种情况,其余所有情况都选择 partition-partition,这种情况下因为我们已经为新盘建立了分区表,所以我们要做的工作就是将系统相关的分区都备份到新盘上对应的分区去。需要注意的是:系统相关的分区可能不仅仅只是系统数据所在的分区,还包括隐藏的恢复分区启动分区等等,我们需要把数据分区前面的与之相关的分区都备份起来。
  4. 当备份完一个分区后,如果还需要备份下一个分区,可以不用重启系统再进入再生龙,可以直接在备份完成后选项里选择再次备份。

五. 确认新盘系统正常工作

  1. 打开机箱,在主板里卸载掉旧盘,只保留新盘。
  2. 重启进入Bios,确保第一启动项为新盘,保存并退出。
  3. 重启系统后如果能正常进入系统,那么恭喜你已经基本完成整个工作了!

六. 额外工作

  1. 打开机箱,再次将旧盘插上。
  2. 进入PE,用 diskgenus 等分区工具将之前旧盘的系统分区与之相关的系统还原和启动等分区都删除,然后根据需要再把未使用的分区重新分配并格式化
  3. 重启进入win10系统,这时如果你打开我的电脑,你会发现只有新盘一个硬盘的分区,怎么回事?别着急,按照下面步骤操作便可解决:
    打开磁盘管理(直接在win10搜索栏输入磁盘,在搜索结果里选择创建并格式化硬盘),选中旧盘,点击鼠标右键,在弹出菜单里选择联机即可!
至此,我们已经完成了所有的移植工作,那么接下来请尽情享受你的劳动果实吧!

Qt5 Virtual Keyboard C++集成与实现(QWidget)

小C阅读(1071)

Qt5 Virtual Keyboard C++集成与实现

参考:

Building Qt Virtual Keyboard
keyboardDesignWidth and Height

一. 下载源代码

去官方github下载所需版本的源码:
https://github.com/qt/qtvirtualkeyboard/releases
小C下载的版本为:
https://github.com/qt/qtvirtualkeyboard/archive/v5.10.0.tar.gz

二. 设置

  1. 配置所需语言
    1). 通过Qt Creator配置
    打开Qt工程文件,点开左侧 Projects->Build->Build Steps->qmake->Additional arguments
    Additional arguments 增加配置参数:

    CONFIG+="lang-ar_AR lang-da_DK lang-de_DE lang-en_GB lang-es_ES lang-fa_FA lang-fi_FI lang-fr_FR lang-hi_IN lang-it_IT lang-ja_JP lang-ko_KR lang-nb_NO lang-pl_PL lang-pt_PT lang-ru_RU lang-sv_SE lang-zh_CN lang-zh_TW"

    按需选择所需语言,当然如果简单点配置为所有语言,则如下:

    CONFIG+=lang-all
  2. 配置所需语言
    2). 直接通过命令行配置并生成makefile文件

    /opt/Qt5.10.1/5.10.1/gcc_64/bin/qmake qtvirtualkeyboard.pro -spec linux-g++ 'CONFIG+=lang-all'

    通过 -spec 参数指定为linux平台。

  3. virtualkeyboard.pro配置文件增加:

    LIBS+=-L../../lib

    这么做的原因是因为集成汉语、日语等带有三方库的语言时,最后生成qtvirtualkeyboard时会找不到已生成的三方库,我们只需添加路径即可解决这个问题。

三. C++集成

为了在传统 QWidget 程序里(和QML相对应)也使用 Qt Virtual Keyboard,我们只需在程序的入口处加入如下代码即可:

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

最后,程序看起来像这样

int main(int argc, char *argv[])
{
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

四. 定制键盘大小和位置

我们需要更改 InputPanel.qml 文件

Item {
    id: inputPanel

    property int screenHeight: Screen.desktopAvailableHeight; 
    anchors.fill: parent;

    Keyboard {
        id: keyboard

        anchors.horizontalCenter: parent.horizontalCenter
        width: Screen.desktopAvailableWidth * 2 / 3
        y: getInputY()

        function getInputY(){
            return 0
        }
    }
}

示例代码如上所示,定义了键盘的 水平中心位置宽度 ,键盘的纵向位置通过 y 设定,由 getInputY() 函数返回,小C这里没有给出函数具体实现,比较常规的思路可以是根据输入框的位置自适应键盘的位置,当然这还需要更改 qtvirtualkeyboard 相关文件的c++代码,小C这里不做赘述。

五. 更多键盘设置

  1. Qt5 Virtual Keyboard C++集成与实现二(自适应位置)
  2. Qt5 Virtual Keyboard C++集成与实现三(解决模态对话框键盘失效问题)

Emule ED2K和Kad网络配置

小C阅读(494)

  1. 首先去官网 下载Emule客户端
  2. 默认安装即可。
  3. 配置 ED2K 网络,即 Server,使用如下地址: http://upd.emule-security.org/server.met
  4. 配置 Kad 网络,使用如下地址: http://upd.emule-security.org/nodes.dat
  5. 现在就可以搜索你想要的东西,试试看看效果如何?
  6. 搜索结果页,复制想要下载的资源,右键复制Ed2k链接就可以在迅雷里下载了。当然,直接在Emule里下载也是可以的。
免责声明:本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除,若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!

联系我们