Linxu下高速离线下载

Linux下各种下载工具很多时候都是无法满速的,特别是BT,种子资源很少的时候下载速度更是无语。
偶然发现一个软件bcloud-gui这个软件,实际就是百度网盘客户端。
但是如果使用了百度网盘的离线下载功能的话,我们就可以实现LINUX下高速下载了。
先把文件下载到百度网盘上,然后打开客户端把文件下载到本机即可,可以支持断点续下。

安装方法可以看这里:https://github.com/LiuLang/bcloud-packages

最后附上一张图片给大家看看:

Nautilus恢复快捷键

新版本的Nautilus修改了一些快捷键,例如习惯操作的DEL把文件移动到回收站又或者是Backspce的回到上一次目录。
只要修改对应的配置文件即可像以前一样。

1
vi .config/nautilus/accels

添加以下两条在最后并保存退出

1
2
(gtk_accel_path "<Actions>/ShellActions/Up" "BackSpace")
(gtk_accel_path "<Actions>/DirViewActions/Trash" "Delete")

重启nautilus

1
nautilus -q

Linux STM32

一、准备软件:

Eclipse IDE for c/c++
Java for Linux
Jlink for Linux
gcc-arm-none-eabi
Eclipse plugins for STM32

二、交叉编译环境设置

把gcc-arm-none-eabi下载到自定的路径并且在.bashrc添加环境,重新加载配置。
如果需要X86_64的交叉编译器可自行下载源码编译,一般1~2个小时便可编译好属于自己的交叉编译器。
需要也可以联系我获取已经编译好的,但是并不能保证环境不一样能使用。

三、STM32的C工程

安装完Eclipse plugins for STM32后就会出现STM32的专属工程;
建立工程的过程中需要堆STM32的属性稍微配置下,并选择好交叉编译的路径。
这里可以考虑先加载示例的LED工程。

四、配置JLINK

在Eclipse的调试配置下的”GDB SEGGER J-link Debug”新建一个属于工程的调试项。
1.Mian:
C/C++ Application:工程的elf文件
启用”Enable auto build”
2.Debugger
Executable:JLinkGDBServer位置
Device name:开发板的芯片型号,例如我使用的STM32F407ZG
Initial speed:Auto
其他默认即可。

五、配置Elipse一键烧写

新建一个外部工具项。
1.Main:
Location:设置JLINK路径
Arguments:设置Jlink配置文件路经
2.新建Jlink配置文件,如Jlink-Flash.txt,添加以下内容:

1
2
3
4
5
6
7
h
speed 12000
exec device = STM32F407ZG(芯片型号)
loadbin /out.hex 0x8000000(out.hex为编译出来的HEX文件,注意这里是全路径)
r
g
qc

现在可以开始编译工程并且进行调试了。过程比较简单,主要是配置正确就可以正常的像KEIL下使用,直接代替KEIL。

VMware 10 patch for linux kernel 3.17

1.Create the patch “vmware.pacth”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
diff -rupN source.orig/vmci-only/linux/driver.c source/vmci-only/linux/driver.c
--- source.orig/vmci-only/linux/driver.c	2014-06-13 02:20:45.000000000 +0300
+++ source/vmci-only/linux/driver.c	2014-10-10 04:21:26.955903580 +0300
@@ -737,7 +737,7 @@ LinuxDriver_Ioctl(struct inode *inode,
          goto init_release;
       }
 
-      user = current_uid();
+      user = from_kuid(current_user_ns(), current_uid());
       retval = VMCIContext_InitContext(initBlock.cid, initBlock.flags,
                                        0 /* Unused */, vmciLinux->userVersion,
                                        &user, &vmciLinux->context);
diff -rupN source.orig/vmci-only/shared/vm_assert.h source/vmci-only/shared/vm_assert.h
--- source.orig/vmci-only/shared/vm_assert.h	2014-06-13 02:20:46.000000000 +0300
+++ source/vmci-only/shared/vm_assert.h	2014-10-10 04:21:26.955903580 +0300
@@ -256,6 +256,7 @@ void WarningThrottled(uint32 *count, con
                                        __FILE__, __LINE__, __FUNCTION__, \
                                        _fix))
 #else
+   #undef DEPRECATED /* in <linux/printk.h> since 3.14.0 */
    #define DEPRECATED(_fix) do {} while (0)
 #endif
 
diff -rupN source.orig/vmmon-only/include/vm_assert.h source/vmmon-only/include/vm_assert.h
--- source.orig/vmmon-only/include/vm_assert.h	2014-06-13 03:38:24.000000000 +0300
+++ source/vmmon-only/include/vm_assert.h	2014-10-10 04:21:26.955903580 +0300
@@ -256,6 +256,7 @@ void WarningThrottled(uint32 *count, con
                                        __FILE__, __LINE__, __FUNCTION__, \
                                        _fix))
 #else
+   #undef DEPRECATED /* in <linux/printk.h> since 3.14.0 */
    #define DEPRECATED(_fix) do {} while (0)
 #endif
 
diff -rupN source.orig/vmmon-only/linux/driver.c source/vmmon-only/linux/driver.c
--- source.orig/vmmon-only/linux/driver.c	2014-06-13 03:38:24.000000000 +0300
+++ source/vmmon-only/linux/driver.c	2014-10-10 04:21:26.959236913 +0300
@@ -1338,7 +1338,9 @@ LinuxDriverReadTSC(void *data,   // OUT:
  *-----------------------------------------------------------------------------
  */
 
-__attribute__((always_inline)) static Bool
+#include <linux/compiler-gcc.h>
+
+__always_inline static Bool
 LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
 {
    TSCDelta tscDelta;
diff -rupN source.orig/vmnet-only/netif.c source/vmnet-only/netif.c
--- source.orig/vmnet-only/netif.c	2014-06-13 03:38:25.000000000 +0300
+++ source/vmnet-only/netif.c	2014-10-10 04:46:42.179229797 +0300
@@ -149,7 +149,7 @@ VNetNetIf_Create(char *devName,  // IN:
    memcpy(deviceName, devName, sizeof deviceName);
    NULL_TERMINATE_STRING(deviceName);
 
-   dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);
+   dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_UNKNOWN, VNetNetIfSetup);
    if (!dev) {
       retval = -ENOMEM;
       goto out;
diff -rupN source.orig/vmnet-only/vm_assert.h source/vmnet-only/vm_assert.h
--- source.orig/vmnet-only/vm_assert.h	2014-06-13 03:38:25.000000000 +0300
+++ source/vmnet-only/vm_assert.h	2014-10-10 04:21:26.959236913 +0300
@@ -256,6 +256,7 @@ void WarningThrottled(uint32 *count, con
                                        __FILE__, __LINE__, __FUNCTION__, \
                                        _fix))
 #else
+   #undef DEPRECATED /* in <linux/printk.h> since 3.14.0 */
    #define DEPRECATED(_fix) do {} while (0)
 #endif
 
diff -rupN source.orig/vsock-only/linux/af_vsock.c source/vsock-only/linux/af_vsock.c
--- source.orig/vsock-only/linux/af_vsock.c	2014-06-13 02:20:46.000000000 +0300
+++ source/vsock-only/linux/af_vsock.c	2014-10-10 04:21:26.959236913 +0300
@@ -2869,7 +2869,7 @@ __VSockVmciCreate(struct net *net,
       vsk->connectTimeout = psk->connectTimeout;
    } else {
       vsk->trusted = capable(CAP_NET_ADMIN);
-      vsk->owner = current_uid();
+      vsk->owner = from_kuid(current_user_ns(), current_uid());
       vsk->queuePairSize = VSOCK_DEFAULT_QP_SIZE;
       vsk->queuePairMinSize = VSOCK_DEFAULT_QP_SIZE_MIN;
       vsk->queuePairMaxSize = VSOCK_DEFAULT_QP_SIZE_MAX;
diff -rupN source.orig/vsock-only/linux/notify.c source/vsock-only/linux/notify.c
--- source.orig/vsock-only/linux/notify.c	2014-06-13 02:20:46.000000000 +0300
+++ source/vsock-only/linux/notify.c	2014-10-10 04:21:26.962570246 +0300
@@ -516,7 +516,7 @@ VSockVmciHandleWrote(struct sock *sk,
    PKT_FIELD(vsk, sentWaitingRead) = FALSE;
 #endif
 
-   sk->sk_data_ready(sk, 0);
+   sk->sk_data_ready(sk);
 }
 
 
diff -rupN source.orig/vsock-only/linux/notifyQState.c source/vsock-only/linux/notifyQState.c
--- source.orig/vsock-only/linux/notifyQState.c	2014-06-13 02:20:46.000000000 +0300
+++ source/vsock-only/linux/notifyQState.c	2014-10-10 04:21:26.962570246 +0300
@@ -164,7 +164,7 @@ VSockVmciHandleWrote(struct sock *sk,
                      struct sockaddr_vm *dst,    // IN: unused
                      struct sockaddr_vm *src)    // IN: unused
 {
-   sk->sk_data_ready(sk, 0);
+   sk->sk_data_ready(sk);
 }
 
 
@@ -566,7 +566,7 @@ VSockVmciNotifyPktRecvPostDequeue(struct
       }
 
       /* See the comment in VSockVmciNotifyPktSendPostEnqueue */
-      sk->sk_data_ready(sk, 0);
+      sk->sk_data_ready(sk);
    }
 
    return err;
diff -rupN source.orig/vsock-only/shared/vm_assert.h source/vsock-only/shared/vm_assert.h
--- source.orig/vsock-only/shared/vm_assert.h	2014-06-13 02:20:46.000000000 +0300
+++ source/vsock-only/shared/vm_assert.h	2014-10-10 04:21:26.962570246 +0300
@@ -256,6 +256,7 @@ void WarningThrottled(uint32 *count, con
                                        __FILE__, __LINE__, __FUNCTION__, \
                                        _fix))
 #else
+   #undef DEPRECATED /* in <linux/printk.h> since 3.14.0 */
    #define DEPRECATED(_fix) do {} while (0)
 #endif

2.Create the patch “vmware-service.pacth”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
--- ./vmware	2014-04-25 03:42:20.029114143 +0800
+++ ./vmware	2014-04-25 03:43:34.042445658 +0800
@@ -181,7 +181,7 @@
 
    # only load vmci if it's not already loaded
    if [ "`isLoaded "$mod"`" = 'no' ]; then
-      vmwareLoadModule "$mod"
+      vmwareLoadModule "$vmci"
    fi
    vmware_rm_stale_node "$vmciNode"
    if [ ! -e "/dev/$vmciNode" ]; then
@@ -231,7 +231,7 @@
 
    # only unload vmci if it's already loaded
    if [ "`isLoaded "${mod}"`" = 'yes' ]; then
-      vmwareUnloadModule "${mod}"
+      vmwareUnloadModule "$vmci"
    fi
    rm -f "/dev/$vmciNode"
 }
@@ -249,7 +249,7 @@
    mod=$(vmwareRealModName $vsock $vsock_alias)
    # only load vsock if it's not already loaded
    if [ "`isLoaded "$mod"`" = 'no' ]; then
-      vmwareLoadModule "$mod"
+      vmwareLoadModule "$vsock"
    fi
    vmware_rm_stale_node "$vsockNode"
    # Give udev 5 seconds to create our node
@@ -269,7 +269,7 @@
    mod=$(vmwareRealModName $vsock $vsock_alias)
    # only unload vsock if it's already loaded
    if [ "`isLoaded "$mod"`" = 'yes' ]; then
-     vmwareUnloadModule "$mod"
+     vmwareUnloadModule "$vsock"
    fi
    rm -f /dev/vsock
 }

3.Begin patching

1
2
3
4
5
6
7
8
9
10
11
12
root# cd /usr/lib/vmware/modules/source
root# cp /home/username/Downloads/vmware.patch .
root# for i in vmci vmmon vmnet vsock; do tar -xf $i.tar; done
root# patch -p0 -i ./vmware.patch
root# for i in *-only; do tar -cf ${i/-only}.tar $i; done
root# rm -r *-only
root# rm -rf vmware.patch
root# vmware-modconfig --console --install-all
root# cd /etc/init.d/
root# cp /home/username/Downloads/vmware-service.pacth .
root# patch vmware &lt; ./vmware-service.pacth
root# rm -rf vmware-service.pacth

4.Create the server file “vmware.service”

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=VMware daemon
Requires=vmware-usbarbitrator.service
Before=vmware-usbarbitrator.service
 
[Service]
ExecStart=/etc/init.d/vmware start
ExecStop=/etc/init.d/vmware stop
PIDFile=/var/lock/subsys/vmware
RemainAfterExit=yes
 
[Install]
WantedBy=multi-user.target

5.Create the server file “vmware-usbarbitrator.service”

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=VMware USB Arbitrator
Requires=vmware.service
After=vmware.service
 
[Service]
ExecStart=/usr/bin/vmware-usbarbitrator
ExecStop=/usr/bin/vmware-usbarbitrator --kill
RemainAfterExit=yes
 
[Install]
WantedBy=multi-user.target

6.Create the server file “vmware-workstation.service”

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=VMware Workstation Server daemon
Requires=vmware.service
After=vmware.service
 
[Service]
ExecStart=/etc/init.d/vmware-workstation-server start
ExecStop=/etc/init.d/vmware-workstation-server stop
RemainAfterExit=yes
 
[Install]
WantedBy=multi-user.target

7.move the server file to /etc/systemd/system/,and enable the server

1
2
3
4
root# mv vmware-workstation.service vmware-usbarbitrator.service vmware.service /etc/systemd/system/
root# systemctl enable vmware
root# systemctl enable vmware-usbarbitrator
root# systemctl enable vmware-workstation

8.over

Linux安装Nvidia驱动

1. 在NVIDIA官方网站下载最新的驱动,并加上可执行权限
chmod +x NVIDIA-Linux-x86-xxx.xx.run
xxx.xx为驱动的版本号

2.修改boot启动文件,添加nouveau.modeset=0.

3.重启计算机,在grub处按’e‘编辑,在’linux /boot/vmware‘行最后加上’3’,然后按’F10’启动系统进入图形界面.

4.登录系统后启动安装文件,xxx.xx为驱动的版本号.
su -c ‘./NVIDIA-Linux-x86-295.59.run’
按照提示进行安装,跟WINDOWS的’下一步’类似.

5.编辑/etc/modprobe.d/blacklist.conf文件,以阻止nouveau模块的加载.
su -c ‘vi /etc/modprobe.d/blacklist.conf’
在文件最后添加下面字符后保存退出.
blacklist nouveau

6.在终端输入cvt 1280 1024 60得到hsync、 pclk两个值,修改/etc/X11/xorg.conf,把前面得到的值分別修改HorizSynVertRefresh.

Chromium 自动更新 for Linux

Chromium 使用Shell来自动更新.
很方便,不废话直接上代码.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
mkdir -p /tmp/chrome
cd /tmp/chrome
wget http://commondatastorage.googleapis.com/chromium-browser-continuous/Linux/LAST_CHANGE -O LATEST
last=`cat LATEST`
url="http://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux/${last}/chrome-linux.zip"
echo [$url]
wget http://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux/${last}/chrome-linux.zip
cd /tmp/chrome
unzip -o chrome-linux.zip
cp -r chrome-linux/* /opt/Chrome/
rm -rf *
echo "Update OK!"
echo "The version is:${last}"

Linux Office

Linux下有许许多多的OFFICE可以提供选择,
每一个都是具有自己不错的优点。
比较出名,具有人气的有:”openoffice、libreoffice、Koffice、永中Office …”。
这些都是比较重量级的Office,都是非常的不错的。
而这次主要介绍两个轻量级办公软件。
AbiWord
功能:类似windows office的Word。
官网:http://abisource.com/

 

 

Gnumeric
功能:类似windows office的excel。
官网:http://projects.gnome.org/gnumeric/

 

这两个配合起来,基本就是一个轻量级的Office了,基本都已经满足了办公需求。
但是公司的人多数还是使用着windows office,所以兼容问题还是值得深深的考虑。
不要辛苦在自己电脑完成的工作拷贝到公司后却出现了乱子。