分类 技术 下的文章

编辑:在写完这个这篇文章之后,我在树莓派 3 上基于 Debian 开始打造 64 位的系统。你可以在这里找到

树莓派 3 配有 Broadcom BCM2837 64 位 ARMv8 四核 Cortex A53 处理器,它是一个 64 位 CPU。如果你有一块,运行以下命令可能会让你感到惊讶:

uname -a
Linux raspberrypi 4.4.34-v7+ #930 SMP Wed Nov 23 15:20:41 GMT 2016 armv7l GNU/Linux

是的,这是一个 32 位内核。这是因为树莓派基金会还没有为官方的树莓派系统 Raspbian 提供 64 位版本。然而你可以构建一个,多亏了 Electron752 提供的许多补丁。

构建内核

树莓派基金会维护着它们自己的 Linux 内核分支,它为它们的设备特别裁剪过,同时定期地从上游合并。

我们将会遵照这个页面的指导来构建一个 64 位内核

我们不能使用“本地构建”的方法,因为它需要一块 64 位的树莓派,这个我们明显还没有。因此我们需要交叉编译它,Ubuntu 是推荐的系统。我个人没有 Ubuntu,因此我在一个有 2 个 CPU 的 Ubuntu 16.04 Digital Ocean 实例上构建,这应该花费我 $0.03。如果你也想这么做,你可以通过[这个链接](https://m.do.co/c/8ef9c5832a9c)得到 $10 的免费额度。或者你可以通过使用 Virtualbox 中的 Ubuntu VM 作为实例。

首先,我们需要一些构建工具以及** aarch64 交叉编译器**:

apt-get update
apt-get install -y bc build-essential gcc-aarch64-linux-gnu git unzip

接着我们可以下载 Linux 内核源码

git clone –depth=1 -b rpi-4.8.y https://github.com/raspberrypi/linux.git

进入到创建的 git 目录。另外你可以为你的内核添加额外的版本标签,可以通过编辑 Makefile 的开始几行完成:

VERSION = 4
PATCHLEVEL = 8
SUBLEVEL = 13
EXTRAVERSION = +bilal

为了构建它,运行下面的命令:

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
make -j 3 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

第一个应该很快。第二个则会完全不同,我没有精确计时,但是对我来说大概要半个小时。根据你的 CPU 数(nproc * 1.5)调整 -j 标志。

选择一个 Linux 发行版

在内核编译的时候,我们可以开始准备它的 Linux 发行版了。在本教程中为了简单我使用 Raspbian,即使这是一个只有 32 位的发行版。

如果你想要一直用 64 位系统,你应该选一个有 aarch64 支持的发行版,Debian 有一个健壮的 ARM64 移植版。得到它基本有三种方式:

  • 下载一个预构建的根文件系统,这很可能会如页面中提到的那样给你一个过期的版本。
  • 如果你熟悉 debootstrap,用它构建你自己的(这回比较棘手,因为它需要一些手工调整,它最初的目的是在已经运行的主机上进行 chroot,而不是为其他机器构建根文件系统)
  • 我建议使用 multistrap,这里有一个很好的教程:http://free-electrons.com/blog/embdebian-with-multistrap/

回到 Raspbian,我们现在可以下载官方系统,并开始准备了。

打开一个新的 shell 会话并运行下面的命令:

wget -O raspbian.zip https://downloads.raspberrypi.org/raspbian_lite_latest
unzip raspbian.zip

我们用下面的命令审查:

fdisk -l 2016-11-25-raspbian-jessie-lite.img
Disk 2016-11-25-raspbian-jessie-lite.img: 1.3 GiB, 1390411776 bytes, 2715648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x244b8248

Device Boot Start End Sectors Size Id Type
2016-11-25-raspbian-jessie-lite.img1 8192 137215 129024 63M c W95 FAT32 (LBA)
2016-11-25-raspbian-jessie-lite.img2 137216 2715647 2578432 1.2G 83 Linux

我们可以看到它有两个分区。第一个是启动分区,它主要包含了 bootloader、Linux 内核以及少量配置文件。第二个是根分区

我们可以在我们的文件系统上挂载这些分区,从根分区开始:

mount -o loop,offset=70254592 2016-11-25-raspbian-jessie-lite.img /mnt

offset 取决于扇区大小(512):70254592 = 512 * 137216

接着是启动分区

mount -o loop,offset=4194304,sizelimit=66060288 2016-11-25-raspbian-jessie-lite.img /mnt/boot

offset :4194304 = 512 * 8192,sizelimit:66060288 = 512 * 129024 。

树莓派系统现在应该可以在 /mnt 中看到了。我们基本要完成了。

打包内核

内核编译完成后,最后一步包括复制 Linux 内核以及设备树到启动分区中:

cp arch/arm64/boot/Image /mnt/boot/kernel8.img
cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /mnt/boot/

调整 config.txt :

echo “kernel=kernel8.img” >> /mnt/boot/config.txt

安装内核模块 :

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu INSTALL_MOD_PATH=/mnt modules_install
umount /mnt/boot
umount /mnt

就是这样了,用于树莓派 3 的** ARM64 Linux 内核**诞生了!

现在你可以压缩镜像,通过 scp 下载下来,并按照标准的步骤放到你的 SD 卡中。

最后你会得到:

uname -a
Linux raspberrypi 4.8.13+bilal-v8+ #1 SMP Wed Dec 14 14:09:38 UTC 2016 aarch64 GNU/Linux

via: https://devsidestory.com/build-a-64-bit-kernel-for-your-raspberry-pi-3/

作者:Bilal Amarni 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

uCareSystem Core 是一种能够自动执行基本的系统维护活动的轻型实用程序,另一方面它可以通过多种方式减少系统管理员的任务,节省大量时间。它没有任何 GUI,并提供纯粹的命令行界面来执行活动。

Ubuntu 中有几种实用程序来执行系统维护活动。每种工具有它们相应的独特功能和设计。你可以添加一个 cron 任务来自动化这些任务。

uCareSystem Core 会自动刷新发行版仓库、更新可用包列表、卸载包(过期包、孤儿包和旧的 Linux 内核)以及清理取回的包来节省系统磁盘空间。

uCareSystem Core 功能

  • 更新包列表(它将刷新包索引)
  • 下载及安装更新
  • 更新包及系统库到最新版本
  • 移除不需要的、过期的和孤儿包。
  • 移除旧内核(它为了安全保留当前和之前一个内核)
  • 移除不需要的配置文件
  • 清理已下载的临时包

在 Ubuntu/LinuxMint 中安装 uCareSystem Core

因为开发者提供了自己的 PPA,因此我们可以轻易地通过 PPA 在 Ubuntu/LinuxMint 中安装 uCareSystem Core。

$ sudo add-apt-repository ppa:utappia/stable
$ sudo apt update
$ sudo apt install ucaresystem-core

我们已经成功安装了 uCareSystem Core 包,并且在执行 CareSystem Core 命令之前要了解它是否会节省磁盘空间,使用 df -h 命令检查当前磁盘利用率。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            979M     0  979M   0% /dev
tmpfs           200M  6.4M  194M   4% /run
/dev/sda1        38G   19G   17G  54% /
tmpfs           999M  216K  999M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           999M     0  999M   0% /sys/fs/cgroup
tmpfs           200M  112K  200M   1% /run/user/1000

只需在终端中运行 ucaresystem-core 命令,在结束之前它会自动执行而不需要人类交互。

$ sudo ucaresystem-core

_______________________________________________________

            uCareSystem Core v3.0                      
                 ~  ''  ~                              

 Welcome to all-in-one System Update and maintenance   
 assistant app.                                        

 This simple script will automatically               
 refresh your packagelist, download and                
 install updates (if there are any), remove any old    
 kernels, obsolete packages and configuration files    
 to free up disk space, without any need of user       
 interference.                                       
_______________________________________________________

 uCareSystem Core will start in 5 seconds... 
#########################
          Started
#########################

Ign:1 https://wire-app.wire.com/linux/debian stable InRelease
Hit:2 https://wire-app.wire.com/linux/debian stable Release
Hit:4 https://deb.nodesource.com/node_6.x yakkety InRelease
Hit:5 https://repo.skype.com/deb stable InRelease
Hit:6 http://in.archive.ubuntu.com/ubuntu yakkety InRelease
Hit:7 http://archive.canonical.com/ubuntu yakkety InRelease
.
.
.
Removing linux-image-extra-4.8.0-34-generic (4.8.0-34.36) ...
Purging configuration files for linux-image-extra-4.8.0-34-generic (4.8.0-34.36) ...
Removing linux-image-extra-4.8.0-32-generic (4.8.0-32.34) ...
Purging configuration files for linux-image-extra-4.8.0-32-generic (4.8.0-32.34) ...

#####################################
Finished removing unused config files
#####################################

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Del tilix 1.5.6-1~webupd8~yakkety1 [449 kB]
Del tilix-common 1.5.6-1~webupd8~yakkety1 [174 kB]
Del libfreetype6 2.6.3-3ubuntu1.2 [336 kB]
Del terminix 1.5.6-1~webupd8~yakkety1 [13.7 kB]

######################################
 Cleaned downloaded temporary packages
######################################

#########################
          Done
#########################

我可以看见它如预期那样工作。同样也可以发现大概在/ 分区节省了 2GB

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            979M     0  979M   0% /dev
tmpfs           200M  6.4M  194M   4% /run
/dev/sda1        38G   18G   19G  49% /
tmpfs           999M  216K  999M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           999M     0  999M   0% /sys/fs/cgroup
tmpfs           200M  112K  200M   1% /run/user/1000

via: http://www.2daygeek.com/ucaresystem-system-update-and-maintenance-tool-for-ubuntu-linuxmint/

作者:2DAYGEEK 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

boot repair tool repair the most boot related problems

​我们都碰到过启动相关的问题,并且大部分时候都是简单的 GRUB 上的问题。 有时候很多人会觉得、输入一段很长的命令或在论坛中搜索来找到解决方法太麻烦了。今天我要告诉你如何使用一个简单而轻巧的软件来解决大部分的启动相关的问题。这个工具就是著名的 Boot Repair Tool 。好了,话不多说,让我们开始吧。

如何在 Linux 中安装和使用启动修复工具

你需要一个你所安装的操作系统的现场版的 USB 棒或 DVD,这是安装这个应用并使用它的前提条件。 引导到操作系统17 并打开终端并输入以下命令

sudo add-apt-repository -y ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

install boot repair tool in linux

在安装结束以后,你可以从应用菜单或或其它你在系统上启动应用的地方启动你的修复工具。

run boot-repair from apps menu

你可以在菜单栏中看到 Boot Repair。

Picture

​启动它,它就会开始进行一些扫描操作,我们只要等它自己结束就好了。 ​

boot repair app menu to repair system

现在你会看到这个界面,这是基于之前扫描的建议修复。 在底部还可以有一个高级选项,你可以在高级选项里进行各方面的设置。 我建议没有经验的用户使用推荐维修,因为它很简单,在大多数情况下我们都可以这样做。

apply recommended fixes to fix grub issues

选择推荐的更新后,它将开始修复。 等待进一步的处理。

fix the grub menu using boot repair

你现在会看到一个指令界面。 现在是轮到我们操作的时候了。打开终端,逐个复制并粘贴其中高亮的命令到终端中。

download and install grub using the given commands

命令完成后,你会看到一个上面提及的要求确认的界面。 使用箭头键或 Tab 键选择“Yes”,然后按回车键。 现在在 启动修复工具 界面中点击 “forward”。

install grub menu and kernel to fix boot menu

现在你会看到这个界面。 复制在那里提到的命令,并将其粘贴到终端中,然后按回车并让其执行此操作。 需要一段时间所以请耐心等待,它将下载GRUB、内核或任何修复您的引导所需的内容。

install grub

现在你可能会看到一些选项用于配置安装 GRUB 的位置。 选择“yes”,然后按回车,你会看到上面的界面。使用空格键选择选项和按 TAB 以浏览选项。 选择并安装 GRUB 后,可以关闭终端。 现在在启动修复工具屏幕中选择 “forward” 选项。

scan for the boot issues

现在它会做一些扫描操作,并且会询问你一些需要确认的一些选项。 每个选项都选择是即可。

fixed boot issues with boot rescue

它会显示一个成功的确认消息。 如果没有,并且显示失败的消息,则将生成链接。 转到该链接获取更多帮助。

成功后,重启你的电脑。 当你重新启动时,你会看到 GRUB。 现在已成功维修您的电脑。 一切顺利。

引导修复的高级技巧

当我的电脑出现双引导启动画面时,我发现在修复时,它无法识别 安装在另一个分区上的 Windows 7。 这里有一个简单的提示来帮你解决这个问题。

打开终端并安装 os-prober。 它很简单,可以在软件中心或通过终端找到。

os-prober 可以帮助您识别安装在 PC 上的其他操作系统。

install os-prober

os-prober 安装完成后,通过输入 os-prober 在终端运行它。 如果失败了那么试着用 root 账号运行它。 之后运行update-grub 命令。 这就是你可以用于从 GRUB 中启动 Windows 的所需要做的全部。

upgrade-grub in linux

总结

​以上就是全部的内容。现在你已经成功地修复了你的 PC。


via: http://www.linuxandubuntu.com/home/boot-repair-tool-repair-the-most-boot-related-problems

作者:linuxandubuntu 译者:chenxinlong 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

有时,能够知道一个网络里的机器的操作系统(OS)是有一定好处的。当你知道一台机器的操作系统后,因为你可以在网上搜索专门针对该系统的安全漏洞,所以入侵系统也会更加容易。当然,安全漏洞通常都会很快被修补,但安全漏洞存在时你需要知道。

对你自己的网络进行扫描以便发现操作系统类型可以帮助你了解黑客将如何侵入你的网络。

操作系统探测数据库

NAMP 带有一个数据库,它在你安装 NAMP 的时候就会被安装。这个数据库用于操作系统的探测,但是它不会自动更新。

这个数据库位于 /usr/share/nmap/nmap-os-db。进行更新的最简单方式是首先找到数据库的版本号,用文本编辑器打开这个文件,版本号通常位于第二行。我的数据库的第二行是 # $Id: nmap-os-db 35407 2015-11-10 04:26:26Z dmiller $,即这个文件的数据库版本是 35407。

要在网上查找一个可更新版本,可以浏览 https://svn.nmap.org/nmap ,如图 1 所示:

Figure 01.jpg

图 1

你可以从图中看到版本号为 36736,与我的系统上的版本号相比,这个版本号似乎是一个更新的版本。为了对更新的操作系统进行准确的操作系统探测,当然需要对这个数据库进行更新。

保留较旧的数据库版本也是一个不错的主意。我当前和版本是 35407,我将在终端执行下面的命令:

sudo mv /usr/share/nmap/nmap-os-db /usr/share/nmap/nmap-os-db-35407

这个数据库被以包含版本号的方式重命名了,下一步就是从网站上下载新版本的数据库,在终端执行下面命令:

cd /usr/share/nmap
sudo su
wget https://svn.nmap.org/nmap/nmap-os-db

新的数据库即将开始被下载,但是你应该加上版本号,就像你在图 1 中看到的版本号 36736。使用文本编辑器打开这个数据库,然后在第二行加上版本号。当版本号变化后,你可以更新你的数据库,然后在其中加入版本号,以便在再次检查更新时做好准备。

系统探测过程

在我们开始使用实际的命令并执行系统探测之前,我们应该详细介绍扫描过程中将会发生的事情。

会执行五种不同的测试,每种测试由一个或者多个数据包组成,目标系统对每个数据包作出的响应有助于确定操作系统的类型。

五种不同的测试是:

  1. 序列生成 Sequence Generation
  2. ICMP 回显
  3. TCP 显式拥塞通知 Explicit Congestion Notification
  4. TCP
  5. UDP

现在让我们分别看看他们各自在做什么。

序列生成

序列生成测试由六个数据包组成,这六个包是每隔 100 毫秒分开发送的,且都是 TCP SYN 包。

每个 TCP SYN 包的结果将有助于 NMAP 确定操作系统的类型。

ICMP 回显

两个有着不同设置的 ICMP 请求包被送到目标系统,由此产生的反应将有助于实现验证操作系统类型。

TCP 显式拥塞通知 Explicit Congestion Notification

当生成许多包通过路由器时会导致其负载变大,这称之为拥塞。其结果就是系统会变慢以降低拥堵,以便路由器不会发生丢包。

这个包仅为了得到目标系统的响应而发送。因为不同的操作系统以不同的方式处理这个包,所以返回的特定值可以用来判断操作系统。

TCP

在这个测试中会发送六个数据包。

一些带有特定的包设置的包被发送用来到打开的或关闭的端口。结果也将会因为操作系统的不同而不同。

所有 TCP 包都是以如下不同的标志被发送:

  1. 无标志
  2. SYN、FIN、URG 和 PSH
  3. ACK
  4. SYN
  5. ACK
  6. FIN、PSH 和 URG

UDP

这个测试由一个被发送给一个关闭的端口的数据包组成。

如果目标系统上的这个端口是关闭的,而且返回一条 ICMP 端口不可达的信息,那么就说明没有防火墙。

NMAP 操作系统检测命令

现在我们开始实际动手进行系统探测。如果你已经读过一些我写的关于 NMAP 的文章,那么最好不要执行 PING 操作。为了跳过 PING,我们使用参数 Pn。为了看到详细的信息,你应该使用 -v 参数用于动态显示。为了获取系统的信息,需要使用 -O 参数。

为了使命令顺利运行和执行 TCP SYN 扫描,你需要以管理员的身份来执行这个命令。在我的例子中,我将只在一个系统上而不是整个网络上进行扫描,使用的命令是:

sudo nmap -v -Pn -O 192.168.0.63

扫描的结果如图2所示,扫描显示七个开放的端口。

Figure 02.jpg

图 2

开放的端口是:

  1. 21/tcp ftp
  2. 22/tcp ssh
  3. 111/tcp rpcbind
  4. 139/tcp netbios-ssn
  5. 445/tcp microsoft-ds
  6. 2049/tcp nfs
  7. 54045/tcp unknown

系统的 MAC 地址为为:00:1E:4F:9F:DF:7F

后面部分显示系统类型为:

Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.6
Uptime guess: 0.324 days (since Sun Apr 23 08:43:32 2017)

系统当前运行的是 Ubuntu Server 16.04,Linux 内核为 4.8,运行时间猜的较准确。

我在另一个系统了又进行了一次测试,结果如图3所示:

Figure 03.jpg

图 3

这次扫描中开放的端口与上次不同。所猜的系统为 ‘Microsoft Windows 2000|XP’,实际上是 Windows XP sp3。

端口嗅探结果

让我们来看看图 2 所示的第一次扫描中在后台发生了什么。

首先 NMAP 执行一次 TCP 隐秘扫描,在本次系统探测实例中以一个如图 4 所示的数据包 2032 开始。

Figure 04.jpg

图 4

序列生成 Sequence Generation 开始于数据包 2032/2033,第六个数据包是 2047/2048。注意每个都被发送两次,且每隔 100ms 发送下一个数据包。

发送的 ICMP 数据包是 2050 - 2053,2 个数据包重复一遍,实际上是 4 个数据包。

2056-2057 是 TCP 显式拥塞通知数据包。

对 TCP 的 6 个测试是 2059、2060、2061、2063、2065、2067。

最后的 UDP 测试是 2073。

这些就是用于确定目标系统上操作系统的类型的测试。

我希望这将有助于你理解如何更新 NMAP 系统探测数据库和执行对系统的扫描。请注意,你可以和你不在同一个网络中的系统进行扫描,所以可以对互联网上的任何系统进行扫描。


via: https://www.linux.org/threads/nmap-os-detection.4564/

作者:Jarret B 译者:zhousiyu325 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

几天前我们写了一篇关于在 Linux 中 3 种创建交换文件的方法,它们是常见的方法,但是需要人工操作。

今天我发现了一个 Gary Stafford 写的 shell 小脚本(两个 shell 脚本,一个用于创建交换文件,另外一个用于移除交换文件),它可以帮助我们在 Linux 中创建/移除并且自动挂载交换文件。

默认这个脚本创建并挂载 512MB 的交换文件。如果你想要更多的交换空间和不同的文件名,你需要相应地修改脚本。修改脚本不是一件困难的事,因为这是一个容易上手而且很小的脚本。

推荐阅读: Linux 中 3 种简易创建或扩展交换空间的方法

如何检查当前交换文件大小

使用 freeswapon 命令检查已经存在交换空间。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           2.0G        1.3G        139M         45M        483M        426M
Swap:          2.0G        655M        1.4G

$ swapon --show
NAME      TYPE      SIZE   USED PRIO
/dev/sda5 partition   2G 655.2M   -1

上面的输出显示我当前的交换空间是 2GB

创建交换文件

创建 create_swap.sh 文件并添加下面的内容来自动化交换空间的创建和挂载。

$ nano create_swap.sh
#!/bin/sh

# size of swapfile in megabytes
swapsize=1024

# does the swap file already exist?
grep -q "swapfile" /etc/fstab

# if not then create it
if [ $? -ne 0 ]; then
    echo 'swapfile not found. Adding swapfile.'
    fallocate -l ${swapsize}M /swapfile
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    echo '/swapfile none swap defaults 0 0' >> /etc/fstab
else
    echo 'swapfile found. No changes made.'
fi

echo '--------------------------------------------'
echo 'Check whether the swap space created or not?'
echo '--------------------------------------------'
swapon --show

给文件添加执行权限。

$ sudo +x create_swap.sh

运行文件来创建和挂载交换文件。

$ sudo ./create_swap.sh

swapfile not found. Adding swapfile.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=d9004261-396a-4321-a45f-9923e3e1328c
--------------------------------------------
Check whether the swap space created or not?
--------------------------------------------
NAME      TYPE       SIZE   USED PRIO
/dev/sda5 partition    2G 954.1M   -1
/swapfile file      1024M     0B   -2

你可以看到新的 1024M 的 swapfile。重启系统以使用新的交换文件。

移除交换文件

如果不再需要交换文件,接着创建 remove_swap.sh 文件并添加下面的内容来移除交换文件以及它的 /etc/fstab 挂载点。

$ nano remove_swap.sh
#!/bin/sh

# does the swap file exist?
grep -q "swapfile" /etc/fstab

# if it does then remove it
if [ $? -eq 0 ]; then
    echo 'swapfile found. Removing swapfile.'
    sed -i '/swapfile/d' /etc/fstab
    echo "3" > /proc/sys/vm/drop_caches
    swapoff -a
    rm -f /swapfile
else
    echo 'No swapfile found. No changes made.'
fi

echo '--------------------------------------------'
echo 'Check whether the swap space removed or not?'
echo '--------------------------------------------'
swapon --show

并给文件添加可执行权限。

$ sudo +x remove_swap.sh

运行脚本来移除并卸载交换文件。

$ sudo ./remove_swap.sh

swapfile found. Removing swapfile.
swapoff: /dev/sda5: swapoff failed: Cannot allocate memory
--------------------------------------------
Check whether the swap space removed or not?
--------------------------------------------
NAME      TYPE      SIZE   USED PRIO
/dev/sda5 partition   2G 951.8M   -1

via: http://www.2daygeek.com/shell-script-create-add-extend-swap-space-linux/

作者:2DAYGEEK 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Powerline 是 vim、zsh、bash、tmux、IPython、Awesome、bar、fish、lemonbar、pdb、rc、shell、tcsh、wm、i3 和 Qtil 中的一个状态栏插件。它给程序提供了状态栏,并使程序更好看。它用 Python 写成。

它是可扩展的并且功能丰富,它用 Python 写成,非常轻便不需要任何第三方的依赖,只需要一个 Python 解释器。

它的稳定以及可测试的代码库经过完整的测试,并且在 Python 2.6+ 和 Python 3 中工作良好。

最初该状态栏只在 vim 中可用,随后项目进化为许多 Linux 程序如 zsh、bash、tmux、IPython、Awesome、i3 和 Qtil 提供状态栏。

其配置以及配色方案用 JSON 写成。它是一种标准简易的文件格式,可以让用户配置 Powerline 支持的程序。

快速并且轻量级,支持守护进程可以提供更好的性能。

安装预先要求

确保你的系统有下面预先要求的包。如果没有,在安装 powerline 之前先安装它们。

对于 Debian 用户,使用 APT 包管理器或者Apt-Get 包管理器安装需要的包。

$ sudo apt-get install python-pip git

对于 openSUSE 用户,使用 Zypper 包管理器安装需要的包。

$ sudo zypper install python-pip git

对于 Fedora 用户,使用 dnf 包管理器安装需要的包。

$ sudo dnf install python-pip git

对于 Arch Linux 用户,使用 pacman 包管理器安装需要的包。

$ sudo pacman -S python-pip git

对于 CentOS/RHEL 用户,使用 yum 包管理器安装需要的包。

$ sudo yum install python-pip git

如何在 Linux 中安装 Powerline

在本篇中,我们将向你展示如何安装 Powerline。以及如何在基于 Debian 以及 RHEL 的系统中在 Bash、tumx 和 Vim 中使用。

$ sudo pip install git+git://github.com/Lokaltog/powerline

找出 powerline 安装位置以便配置程序。

$ pip show powerline-status
Name: powerline-status
Version: 2.6.dev9999+git.517f38c566456d65a2170f9bc310e6b4f8112282
Summary: The ultimate statusline/prompt utility.
Home-page: https://github.com/powerline/powerline
Author: Kim Silkebaekken
Author-email: [email protected]
License: MIT
Location: /usr/lib/python2.7/site-packages
Requires: 

在 Bash Shell 中添加/启用 Powerline

添加下面的行到 .bashrc 中,它会默认在基础 shell 中启用 powerline。

if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  . /usr/local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh
fi

重新加载 .bashrc 文件使得 powerline 在当前窗口中立即生效。

$ source ~/.bashrc

在 tmux 中添加/启用 Powerline

tmux 是最好的终端仿真程序之一,它提供多窗口以及状态栏,但是相比 powerline 的状态栏看上去不那么好。添加下面的的行到 .tmux.conf 中,它会默认在 tmux 中启用 powerline。如果你没有找到 .tmux.conf 文件,那么创建一个新的。

# vi ~/.tmuc.conf

source "/usr/local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf"

在 Vim 中添加/启用 Powerline

vim 是管理员最爱的文本编辑器之一。添加下面的行到 .vimrc 中,启用 powerline 使 vim 更加强大。注意,在 vim 7.x 中,你可能不会在系统中发现 .vimrc 文件,因此不必担心,创建一个新的文件,并添加下面行。

# vi ~/.vimrc

set  rtp+=/usr/local/lib/python2.7/site-packages/powerline/bindings/vim/
set laststatus=2
set t_Co=256


via: http://www.2daygeek.com/powerline-adds-powerful-statusline-to-vim-bash-tumx-in-ubuntu-fedora-debian-arch-linux-mint/

作者:2DAYGEEK 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出