跳到内容

文章类别:Linux

CentOS编译小飞机R(粉色界面改颜色)

应小伙伴要求给小飞机R改个颜色,从来没搞过,撸起袖子干。

主机为Win10,使用自带的Hyper-V虚拟机,建立二带虚拟机据说性能好一些,关闭安全启动不然无法从ISO文件启动,虚拟机中最小安装,安装CentOS-7-x86_64-Minimal-1611,CentOS具体安装步骤不详细说明,因为我是最小安装,你们照我这篇来搞应该不会缺失什么库之类的,装完更新一下系统:

yum install epel-release -y
yum update -y
yum upgrade -y

安装jdk 1.8.0:

yum install java-1.8.0-openjdk.x86_64
yum install java-1.8.0-openjdk-devel.x86_64

配置java环境变量,在/etc/profile 尾部追加:

#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

应用环境变量:

source /etc/profile

然后运行一下java和javac看看有输出不报错就可以了,自己新建一个目录,把小飞机R源码从github上拖下来:

git clone https://github.com/小飞机R/小飞机R-android.git

拖下来之后进到目录里面下载一下依赖库:

git submodule update --init

下载如果出错则虚拟机需要出墙,再把ssr客户端的源码拖下来:

git clone https://github.com/小飞机R/小飞机R.git

配置什么的不说了,见这里:

https://github.com/小飞机R/小飞机R/tree/manyuser

如果使用chacha20,报错提示“install python-setuptools”,还要安装libsodium:

yum install libsodium

完事还是不行,报错提示“ImportError: No module named cymysql”,还要安装cymysql:

pip install cymysql

完事还是不行,提示报错“pip: command not found”,还要安装pip:

easy_install pip

完事还是不行,提示报错“easy_install: command not found”,还要安装python-setuptools:

yum install python-setuptools

然后再把上边重复一遍就好了,如果还报错“Can’t connect to MySQL server on u’127.0.0.1′ (111)”,那是你用成数据库版了,进子目录运行单用户版。

这里需要从墙外获取文件,下载如果出错需要出墙, git自带了sock5代理功能,由于我是在虚拟机上建的CentOS,然后我再主机上有SSR,我在主机的SSR上打开本地代理,允许来自局域网的链接,直接给虚拟机使用就行了,不用在虚拟机中单独配置一个SSR,懒得配主机防火墙规则了,直接关闭Windows防火墙,反正下载完就不用了,再把防火墙打开:

git config --global http.proxy 'socks5://主机IP:1080'
git config --global https.proxy 'socks5://主机IP:1080'

顺道把CentOS的防火墙也关了:

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

配置SBT 0.13:

curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo
mv bintray-sbt-rpm.repo /etc/yum.repos.d/
yum install sbt

第一次运行sbt超慢,卡在“Getting org.scala-sbt sbt 0.13.13 …”,看日志其实后台在下载东西:

tail -f $HOME/.sbt/boot/update.log

关于这一段,我在网上看到解决方案的时候直接喷了:

This is quite old post and my answer may not be completely relevant. But here is my experience:

  1. I am using sbt 0.13.8
  2. Getting org.scala-sbt sbt 0.13.8 …
  3. I have got this line hanging for some time – between 5 to 10 minutes.
  4. And then it started to download stuff.

So my solution is that you have to wait a bit.

下面的回复也超搞笑:

Thanks! I was “waiting” while looking up the problem and reading this page. Now I checked the window again, and it’s downloading all the jars… sloooowwwlllyyyy 🙂

等了快半个钟终于有反应了……

然后下载android SDK 25,使用curl加代理:

curl -x sock5://主机IP:1080 -O https://dl.google.com/android/repository/tools_r25.2.3-linux.zip

然后配置sdk环境变量,在/etc/profile 尾部追加:

#set android environment
ANDROID_HOME=/root/android_home
PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
export ANDROID_HOME PATH

使之生效:

source /etc/profile

更新sdk:

android update sdk --no-ui

更新的同时不闲着,下载配置ndk和一些运行库:

yum install -y glibc.i686 zlib.i686 libstdc++.i686
curl -x sock5://主机IP:1080 -O https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip

然后配置ndk环境变量,在/etc/profile 尾部追加:

ANDROID_NDK_HOME=/root/android_home/android-ndk-r13b
export ANDROID_NDK_HOME

使之生效:

source /etc/profile

然后生成自己的key:

keytool -genkey -v -keystore xxxx.jks -keyalg RSA -keysize 2048 -validity 10000 -alias xxxx

剩下的根据github上的说明进行操作,前面有些设置环境变量或者文件位置目录的,你们根据自己的进行设置。

git submodule update –init

# Build native binaries
./build.sh

# Build the apk
sbt clean android:package-release

【尼玛,我博客不会因为这篇给墙了吧】

让命令后台运行并在前后台切换

在命令结尾加”&”符号可以让命令在后台运行,

这时可以看到一个命令号和命令,后面是Running,表示正在运行,

输入fg即可将后台命令调回前台,

但如果有多个命令在后台运行,就需要jobs命令,

jobs命令可以列出所有在后台运行的命令及运行状态,

这时使用fg空格后接命令号即可将对应的命令调回前台,

如果一个命令已经在前台运行,又不想结束他,

按Ctrl+Z即可将命令移至后台,

但这是可以看到该命令的状态是Stopped,

这时可以使用bg空格后接命令号将命令置于Runing状态.

上面的方法虽然可以让命令在后台运行,

但是退出登录或者关闭终端,后台的命令也会结束,

如果不想让命令结束就需要nohup了,

在退出后仍想继续运行的命令前面加上nohop空格借命令即可.

挂载NTFS文件系统与设置开机自动挂载

虽然大部分Linux已经可以自动挂载NTFS分区,还是有一些不能自动挂载,

一种简单的解决方法是使用开源软件ntfs-3g

使用下列命令安装ntfs-3g

yum install ntfs-3g

然后用下面的命令可以查看分区信息

fdisk -l

然后使用下面的命令即可挂载:

mount -t ntfs-3g /dev/你的分区 /你想挂载到的目录

建议将分区挂载到/mnt下面

至于自动挂载,可以修改/etc/fstab文件,

在下面按如下格式添加想要自动挂载的分区,每行一个分区,

/dev/你的分区 /mnt/你的目录 ntfs-3g defaults 0 0

更详细参数可以参考man手册

如不进行设置,详细挂载参数使用下面的命令查看:

less /proc/mounts

在CentOS上安装Nvidia显卡驱动

最近忙着投简历,文章更新落下了,补几篇吧

在比较新的版本上安装英伟达驱动时会提示下面的错误:

“ERROR: The Nouveau kernel driver is currently in use by your system. This driver is incompatible with the NVIDIA driver, and must be disabled before proceeding. Please consult the NVIDIA driver README and your Linux distribution’s documentation for details on how to correctly disable the Nouveau kernel driver.”

Nouveau是一个开源项目用来替代Nvidia的驱动,通用行好一些,性能方面自然还是Nvidia好一些.

因为要重做内核,我们需要安装必须的工具:

yum groupinstall "Development Tools"

下面的dkms包可以避免每次升级内核都要重新安装Nvidia驱动,

yum install kernel-devel kernel-headers dkms

使用下面的命令获取显卡型号:

lspci | grep VGA

到下面的网址下载驱动:

http://www.nvidia.com/Download/index.aspx

然后将下面的语句加入到 /etc/modprobe.d/blacklist.conf 中

blacklist nouveau

然后执行下面的命令

mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

然后运行下面的命令,关闭Xwindow进入命令行界面,安装Nvidia驱动,

(请您看完本文再执行命令,因为您一旦执行就无法再回到这里看接下来的命令,除非您再次启动Xwindow)

sbin/init 3

亲测

硬链接和软链接(符号链接)

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).

默认情况下,ln命令产生硬链接.

ln sourcs destination //建立硬链接
ln -d sourcs destination //建立目录的硬链接
ln -s sourcs destination //建立软链接

【硬连接】

硬连接指通过索引节点来进行连接.

在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,

称为索引节点号(Inode Index).

在Linux中,多个文件名指向同一索引节点是存在的.

一般这种连接就是硬连接.

硬连接的作用是允许一个文件拥有多个有效路径名,

这样用户就可以建立硬连接到重要文件,以防止“误删”的功能.

其原因如上所述,因为对应该目录的索引节点有一个以上的连接.

只删除一个连接并不影响索引节点本身和其它的连接,

只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放.

也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除.

硬连接的2个限制:

不允许普通用户对目录作硬连接

只有在同一文件系统中的文件之间才能创建链接.

即不同硬盘分区上的两个文件之间不能够建立硬链接.

这是因为硬链接是通过结点指向原始文件的,而文件的i-结点在不同的文件系统中可能会不同.

【软连接】

另外一种连接称之为符号连接(Symbolic Link),也叫软连接.

软链接文件有类似于Windows的快捷方式.它实际上是一个特殊的文件.

在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息.

这就允许符号链接(经常简写为symlinks)指向位于其他分区,甚至是其他网络硬盘上的某个文件