Skip to content Skip to main navigation Skip to footer

Linux

Linux:Debian 用户如何安装 FFmpeg 2.2.2

FFmpeg是一个流行的多媒体框架,详细的功能就不多说了,想了解的童靴可以看维基百科。最新版本 ffmpeg 2.2.2 最近已发布。有关发布信息,在官方网站看到公告。

Linux:Debian 用户如何安装 FFmpeg 2.2.2
Linux:Debian 用户如何安装 FFmpeg 2.2.2

本文将教大家如何在 Debian Jessie、Debian Sid 和 Debian Wheezy 系统上安装 FFmpeg 2.2.2。

在Debian Sid上安装

因为有库可用,安装非常方便,打开终端,输入以下命令:

sudo sh -c 'echo "deb http://www.deb-multimedia.org sid main" >> /etc/apt/sources.list'
sudo apt-get update
sudo apt-get install deb-multimedia-keyring
sudo apt-get install ffmpeg

Debian Jessie 用户安装

因为有库源,依然很简单,打开终端,输入以下命令:

sudo sh -c 'echo "deb http://www.deb-multimedia.org jessie main" >> /etc/apt/sources.list'
sudo apt-get update
sudo apt-get install deb-multimedia-keyring
sudo apt-get install ffmpeg

Debian Wheezy用户安装稍微麻烦一些

使用安装源:

sudo sh -c 'echo "deb http://deb-multimedia.org wheezy main non-free" >> /etc/apt/sources.list'
sudo sh -c 'echo "deb-src http://deb-multimedia.org wheezy main non-free" >> /etc/apt/sources.list'

安装deb-multimedia-keyring和更新本地仓库索引:

sudo apt-get install deb-multimedia-keyring
sudo apt-get update

安装依赖包:

apt-get install subversion unzip frei0r-plugins-dev libdc1394-22-dev   libfaac-dev libmp3lame-dev libx264-dev libdirac-dev libxvidcore-dev   libfreetype6-dev libvorbis-dev libgsm1-dev libopencore-amrnb-dev   libopencore-amrwb-dev libopenjpeg-dev librtmp-dev libschroedinger-dev   libspeex-dev libtheora-dev libva-dev libvpx-dev libvo-amrwbenc-dev   libvo-aacenc-dev libaacplus-dev libbz2-dev libgnutls-dev libssl-dev   libopenal-dev libv4l-dev libpulse-dev libmodplug-dev libass-dev   libcdio-dev libcdio-cdda-dev libcdio-paranoia-dev libvdpau-dev   libxfixes-dev libxext-dev libbluray-dev

下载和编译libxavs库:

svn co https://svn.code.sf.net/p/xavs/code/trunk xavs
cd xavs
./configure --enable-shared --disable-asm
make
sudo make install

下载FFMPEG 2.2.2源码包,解压文件并使用CD命令转到解压目录:

wget http://www.ffmpeg.org/releases/ffmpeg-2.2.2.tar.gz
tar -xzvf ffmpeg-2.2.2.tar.gz
cd ffmpeg-2.2.2

配置:

./configure --enable-gpl --enable-nonfree --enable-postproc   --enable-pthreads --enable-x11grab --enable-swscale   --enable-version3 --enable-shared --disable-yasm --enable-filter=movie   --enable-frei0r --enable-libdc1394 --enable-libfaac --enable-libmp3lame   --enable-libx264 --enable-libxvid --enable-libfreetype --enable-libvorbis   --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb   --enable-libopenjpeg --enable-librtmp --enable-libschroedinger   --enable-libspeex --enable-libtheora --enable-libvpx --enable-libvo-amrwbenc   --enable-libvo-aacenc --enable-libaacplus --enable-libxavs --enable-bzlib   --enable-openssl --enable-gnutls --enable-openal --enable-libv4l2   --enable-libpulse --enable-libmodplug --enable-libass --enable-libcdio   --enable-vdpau --enable-libbluray

安装命令:

make
sudo make install

 

Linux:如何在Nexus上实现Ubuntu和Android 4.4.2 双启动

Linux:如何在Nexus上实现Ubuntu和Android 4.4.2 双启动
Linux:如何在Nexus上实现Ubuntu和Android 4.4.2 双启动

现在在手机上测试Ubuntu变得更加简单,可以从Canonical上下载一个程序,它可以安装新的操作系统而不必删除原有的Andorid。能够双启动的系统可以吸引更多的用户关注手机/平板上的新开源平台。

Canonical在它的网站上有一个流程解释了如何在手机上安装Ubuntu,但是这实际上需要删除Android系统才能获得新的操作系统。Ubuntu的开发者已经做了大量的工作,这个新的系统看上去很棒,但是如果你决定退回到Android,你就需要删除Ubuntu并安装Google的Android系统。这意味这你不得不重复设置你的电话,这可能会比较麻烦。

幸运的是,现在有一个称为MultiROM Manager的解决方案,它由Vojtech Bocek开发,现在已经可以在Google Play上下载到了,而且支持Nexus 7 (2012 & 2013)、 Nexus 4 和 Nexus 5。

另一方面,Ubuntu Touch只支持Nexus 4 (mako) 、Nexus 7 (2013) 平板 (flo)和 Nexus 10 平板 (manta),因此除非你有这些设备,否则你可能不能安全地执行这些步骤(它可能能够工作,但是不保证会让你的设备变砖同时/或者失去所有的数据。)

首先,你需要一台解锁的设备,既然你有一台Nexus的设备这应该不是一个问题。你同样还需要root你的Andorid设备,这样你才能在这个应用里安装操作系统。

有很多工具可以完成这个root的工作。首先,你需要安装ADB(Android Debug Bridge), 它随同Canonical的工具一起提供。你需要在终端下运行下面的命令:

sudo add-apt-repository ppa:phablet-team/tools
sudo apt-get update
sudo apt-get install ubuntu-device-flash

现在,你需要下载两个二进制包,TWRP 2.7.0.0SuperSU,它们可以让你实现root。复制SuperSU的二进制zip包到你的电话内存中,运行下面的命令进入bootloader(译注:原文的命令 sudo reboot bootloader,应该是笔误丢失了adb 命令 ):

sudo adb reboot bootloader

在你的电脑上解压TWRP文件,并用下面的命令安装镜像到手机上(用你下载的文件名代替下面的“recovery.img”)(译注:此处的fastboot应该也需要sudo权限才可以执行。)

sudo fastboot flash recovery recovery.img

从bootloader菜单进入recovery,你就会看到TWRP 2.7.0.0。运行TWRP并安装SuperSU二进制包,接着重启。

现在你已经有root访问权限了。安装Multi Manager,应用补丁,并为手机下载Ubuntu。应用会要求root权限,接着安装会顺利进行。当你重启的时候你会看到一个小窗口提示你选择你要运行的系统。选择Ubuntu后你就可以运行了。

是不是新的享受?


via: http://news.softpedia.com/news/Hot-to-Dual-Boot-Android-4-4-2-and-Ubuntu-for-Phones-438840.shtml

译者:geekpi 校对:wxy

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

来源:https://linux.cn/article-3039-1.html

Linux:Ubuntu每日小技巧-Ubuntu One关闭后如何切换到Dropbox或Box云服务

Canonical公司决定关闭Ubuntu One的云服务,你可能正在寻找备份你主机的其他服务器,尽管现在有很多云服务的提供商,但是大服务商中仅有小部分支持包括Ubuntu在内的linux。

Dropbox全面支持Ubuntu,它有一个很好的整合了ubuntu桌面系统和其他通知栏的客户端。Box,官方的Box.net也可以通过WebDav协议支持linux。

这里有一段来自Canonical公司关于Ubuntu One的摘录:

从4月2日开始,就不能访问Ubuntu One中的存储或音乐了。Ubuntu One服务也不会再包含在Ubuntu 14.04 LTS中,而Ubuntu One的应用也将从Ubuntu、Google和Apple的应用商店移除。

也就是说我们在ubuntu中失去了这项有用的服务。另一方面,把你的数据移动到一个更稳定、更好信誉的网盘提供商是一个比较好的选择。

Linux:Ubuntu每日小技巧-Ubuntu One关闭后如何切换到Dropbox或Box云服务
Linux:Ubuntu每日小技巧-Ubuntu One关闭后如何切换到Dropbox或Box云服务

这里简要的说明一下怎样在ubuntu中运行DropBox或者Box云服务。

在ubuntu中安装DropBox云盘

关于这个话题我们已经写了很多,为了在ubuntu中安装DropBox云盘,你需要按照以下步骤去做,这里提供了一个在ubuntu中一步步安装和使用DropBox的步骤。

查看完整步骤,点这里,或者下面的链接:

http://www.liberiangeek.net/2013/03/how-to-install-dropbox-in-ubuntu-13-04-raring-ringtail/

在Ubuntu中使用Box网盘

自从Box不再提供给包括ubuntu在内的linux一个全功能客户端,你就必须使用WebDav协议来访问和存储你账户的东西。

按Ctrl – Alt – T来打开终端,终端被打开后,执行下面的命令来安装包:

sudo apt-get install davfs2

接下来,执行下面的命令来配置davfs2,选择Yes来允许没有权限的用户来挂载WebDav资源。

sudo dpkg-reconfigure davfs2

接下来通过执行下面的命令把davfs2目录复制到你的home目录:

sudo cp -r /etc/davfs2/ $HOME/.davfs2

然后执行下面命令获取文件夹的所有权:

sudo chown -R username $HOME/.davfs2/

用你的用户名代替username

接下来打开密码文件输入你的登录凭证:

gedit ~/.davfs2/secrets

然后键入你的用户名(email地址)和密码,在文件末尾添加下面的行并保存。

https://dav.box.com/dav richard@liberiangeek.net  

用你的账户信息替换上面的email地址和password。

接下来用下面的命令添加你的账户到davfs2组中:

sudo adduser  davfs2

然后用sudo gedit /etc/fstab 打开/etc/fstab在后面添加下面一行并保存:

https://dav.box.com/dav/ /home//box  davfs _netdev,rw,user 0 0

最后创建一个挂载点并挂载Box

mkdir ~/box

重启你的电脑,Box能开机自动挂载了,

享受下吧!


via: http://www.liberiangeek.net/2014/04/daily-ubuntu-tips-ubuntu-one-shuts-down-switch-to-dropbox-or-box-cloud-services/

译者:yujianxuechuan 校对:wxy

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

来源:https://linux.cn/article-3047-1.html

Linux:树莓派进阶学习的五个建议

Linux:树莓派进阶学习的五个建议
Linux:树莓派进阶学习的五个建议

从SSH到端口转发,这些先进的技术将让你的树莓派开发更简单。

当你可以在命令行输入命令时,你就不再是一个新手在做一些新手的设置了。虽然进度不快,但是你的确正在通过你的方式去学习使用这物超所值的、只有信用卡大小的计算机去满足一些DIY想法,这就是树莓派。

然而,从基础跨越到中级还是存在较大距离。当你从“设置你的派”的教程转而学习“创建一个媒体服务器”时,项目开始前的需求就会有一点点挑战。许多中级的Pi教程,包括ReadWrite的一些文章,都会假设你已经对树莓派设置好了一些东西。

并非每一个项目都需要找个教程里的所有建议,但是知道这些步骤可以使项目更顺利地贴合需求。

当你准备脱离小白行列时,做一些树莓派教程的预先准备工作对你非常有用。

1) 使用SSH登录

SSH意思是Secure Shell,它是一种加密网络协议,用于安全地在计算机与树莓派之间传输你的数据。项目中也许需要你通过你的计算机的命令行控制树莓派,而不是通过给树莓派连接显示器和键盘来控制。

现在SSH已经预先安装在树莓派系统 Raspbian 中了,所以如果你安装的是最新版本或较新版本的树莓派都是支持SSH使用的。

要使用SSH,第一,你需要知道你的树莓派的IP地址,在你的树莓派中输入以下命令:

sudo ifconfig

会显示出三个段落。你的IP地址将会在第一段或者第三段显示,这主要看你的树莓派是通过线缆还是通过WIFI适配器连接网络的。如果是通过线缆连接,那请查看第一段,在“eth0”那行开始显示。如果是通过wifi链接,将在第三段“wlan0”开头的地方显示。

无论通过哪种方式,你将会看到以“inet addr”开头后面跟着像192.168.2.2这样类型的IP地址,这是我们在这篇文章中经常引用到的一种默认IP地址格式。

现在你有一个可以连接树莓派与你的电脑的IP地址了,如果你使用的是Mac,你已经有了内置的SSH,启动你的终端应用并输入:

ssh pi@192.168.2.2

连接之后将会要求输入密码,默认情况下,密码一般是“respberry”.如果你修改了默认密码,请输入你的新密码。这样,您将登入了树莓派系统。

如果你在一台PC,还需要附加的一个步骤。

Linux:树莓派进阶学习的五个建议
Linux:树莓派进阶学习的五个建议

下载并运行PuTTY或者其它支持Windows系统的SSH客户端。输入你的IP地址在如上截图中的输入框中。保持默认端口为22不变。然后安心回车,PuTTY将会提示你输入用户名和密码。输入之后,就可以开始在你的树莓派里远程工作了。

2) 使用远程桌面连接到你的树莓派

使用SSH去从命令行远程控制你的Pi是极好的,但是如果你想通过图形界面去管理你的Pi怎么办呢?幸运的是MAC和PC都已经内建了这种方式。

在你的树莓派中的命令行(是的,你可以通过SSH来操作),输入:

sudo apt-get install xrdp

xdrp是一种在可以在后台运行的计算机守护进程,并支持Mac和PC上的微软远程桌面客户端。当树莓派中安装好xrdp之后,你的MAC或者PC就可以通过客户端登录到树莓派中了。

找到你的电脑中一个叫远程桌面的客户端。它本身并不是隐藏起来的,但没有放到应用程序的文件夹中。

Linux:树莓派进阶学习的五个建议
Linux:树莓派进阶学习的五个建议

出现上述提示时输入你的IP地址。接下来会弹出xrdp窗口,提示你输入用户名和密码。

Linux:树莓派进阶学习的五个建议
Linux:树莓派进阶学习的五个建议

如果进展顺利,你的树莓派桌面就会在你的电脑屏幕上的窗口里面显示出来了。

Linux:树莓派进阶学习的五个建议
Linux:树莓派进阶学习的五个建议

来源:https://linux.cn/article-3056-1.html

Linux:保护你的文件,请修改 Linux 中的 Umask 值

Linux:保护你的文件,请修改 Linux 中的 Umask 值
Linux:保护你的文件,请修改 Linux 中的 Umask 值

这篇教程教将指导 Linux 用户如何永久性地更改其系统的 Umask 值。特别建议全新安装的用户学习(想知道为什么的话,请移步下文)

Umask 是什么?解释下,UMASK 代表用户掩码或用户文件创建掩码,它用于新创建的文件和文件夹,是其默认权限的基础。

Linux:保护你的文件,请修改 Linux 中的 Umask 值
Linux:保护你的文件,请修改 Linux 中的 Umask 值

上面的意思可以解释成任何基于 Linux 的操作系统为新建文件(包括文件夹)添加默认权限的规则。出于教育目的,下面列出了一些可以用来设置文件权限的八进制值掩码

0 – 读, 写, 可执行 (rwx)
1 – 读和写 (rw-)
2 – 读和可执行 (r-x)
3 – 只读 (r--)
4 – 写和可执行 (-wx)
5 – 只写 (-w-)
6 – 仅可执行 (--x)
7 – 没有权限 (---)

在几乎所有的 Linux 发行版本中默认 Umask 值是 0022(或022),可以在终端模拟程序中输入 umask 命令来查看。也可以运行 “umask 八进制值掩码” 命令(例如 umask 027)来临时改变这个值。

你也许知道,新创建的文件的默认权限设置原本应该是 0666,文件夹的是 0777。应用上面所说的 umask 值后就得到 644 和 755 权限。

许多意见认为 022 掩码会带来隐私问题,也就是说您所创建的文件对其他用户来说是可随意查看的,一想到这就感到不太爽!

言归正传,用户可以按他们所愿来修改默认的 Umask 值,当然首先要保证修改的值合法。要修改默认值,请在您的 shell 配置文件中或者 /etc/profile 文件中写入一个新的 Umask 值

好了,这就大功告成了!从现在开始,在你的 Linux 系统上新创建的文件或文件夹都会有准确设置的权限。但请注意已经存在的文件或文件夹的权限并不会因为上面的操作而改变。

如果您使用的是命令行,可以在任意目录下运行 ls -lah 命令,就可以看到当前的文件权限。另外,新手也可以很容易地查看到文件权限,在基于 GNOME 桌面的环境中,通过右击文件,选择属性 -> 权限选项卡。

如果你在阅读这篇教程时遇到任何问题,不要犹豫,请留下您的评论。


via: http://news.softpedia.com/news/How-to-Change-Umask-Value-Permanently-in-Linux-435026.shtml

译者:runningwater 校对:Caroline

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

来源:https://linux.cn/article-3065-1.html

Linux:神器!将 Ubuntu 14.04 的所有分支刻录到一张DVD

Ubuntu 有基于不同桌面环境的几个官方版本。默认的 Ubuntu 自带 Unity 桌面,Kubuntu 则是KDE,Lubuntu 用LXDE,Xubuntu 自带Xfce。除此之外,还有一些其它的版本,但这些是最流行的官方桌面版本。

你该如何选择最适合你的 Ubuntu?一种方法是下载 Ubuntu 不同版本的 ISO 镜像并且通过Live CD或者USB实时运行。但是,这将意味着你将会下载多个 ISO 文件,一个个地写入 USB 盘或者 Live CD。有点麻烦,是吧?

这就是Ubuntu AIO(ALL IN ONE)出现的原因。该项目是由Start Ubuntu小组部分成员发起的,Ubuntu 的 AIO DVD 可以让你在一张光盘或者一个U盘中尝试 Ubuntu Unity,Lubuntu,Xubuntu,Kubuntu 和 Ubuntu Gnome 等不同版本。

Linux:神器!将 Ubuntu 14.04 的所有分支刻录到一张DVD
Linux:神器!将 Ubuntu 14.04 的所有分支刻录到一张DVD

当然 Ubuntu AIO 也有一些缺点。首先它体积太大了,有将近4.7GB。所以,它不适合于标准的4GB U盘(你得刻录到光盘,或者虚拟光盘)。而且它只有两个版本,第一个是64位版本,包括有 Ubuntu,Kubuntu 和 Ubuntu Gnome,另外一个,则包含有32位版本的 Xubuntu 和 Lubuntu。尽管有缺点,这是一个不错的项目,可以帮助我们选择恰当的 Ubuntu 版本。

下载 Ubuntu AIO DVD

点此了解更多。

享受 Ubuntu 吧!


via: http://itsfoss.com/ubuntu-aio-dvd-puts-ubuntu-1404-flavors-disk/

译者:MikeCoder 校对:Caroline

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

来源:https://linux.cn/article-3067-1.html

Linux:Linux / Unix:chroot 命令实例讲解

我是一个刚接触 Linux 和 Unix 的新手。我该如何改变一个命令的根目录?我要怎样改变一个进程的根目录呢,比如用 chroot 命令将web服务与文件系统隔离?我要如何使用 chroot 恢复密码或修复基于 Linux/Unix的受损坏的环境?

在 Linux和类 Unix 系统下每一个进程/命令的当前工作目录称之为进程/命令的根目录(译注:译者以为此处有误,实际上没有进行过chroot的进程,其根目录是系统的根目录,而不是其工作目录)。你可以使用 chroot 命令改变一个命令的根目录,这最终将会改变当前运行的进程及其子进程的根目录。

如果一个进程/命令运行在一个不能访问外部根目录文件的已修改环境中。这种修改环境通常被称为”监禁目录”(jail)或是”chroot 监禁”。只有特权进程和根用户才能使用 chroot 命令。然而这通常是很有用的:

  1. 将特权分配给无特权的进程,例如 Web 服务或 DNS 服务。
  2. 建立测试环境。
  3. 不使程序或系统崩溃下,运行旧程序或 ABI 兼容的程序。
  4. 系统恢复。
  5. 重新安装引导装载程序,例如 Grub 或 Lilo。
  6. 密码找回,重置一个已丢失的密码等。

用途

chroot 命令 改变其当前目录,并将根目录变为指定目录,然后如果提供了命令则运行命令,也可以运行一个用户的交互式shell的副本(译注:即bash等。)。请注意并不是每一个程序都可以使用 chroot 命令。

语法

基本语法如下:

chroot /path/to/new/root command

或者

chroot /path/to/new/root /path/to/server

或者

chroot [options] /path/to/new/root /path/to/server

chroot 命令实例

在这个例子中,建立了一个”迷你监狱”用来测试一个只有 ls 命令的 Bash shell。首先用 mkdir 命令设定好 jail “监狱” 路径。

$ J=$HOME/jail

在 $J 内创建目录:

$ mkdir -p $J
$ mkdir -p $J/{bin,lib64,lib}
$ cd $J

cp 命令将/bin/bash 和 /bin/ls 复制到 $J/bin/ 路径下:

$ cp -v /bin/{bash,ls} $J/bin

将所需库文件拷贝到$J。可以用 ldd 命令找到 bash 所依赖的共享库。

$ ldd /bin/bash

输出样例:

linux-vdso.so.1 =>  (0x00007fff8d987000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000032f7a00000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000032f6e00000)
libc.so.6 => /lib64/libc.so.6 (0x00000032f7200000)
/lib64/ld-linux-x86-64.so.2 (0x00000032f6a00000)

直接拷贝上面输出中的库文件到 $J 目录:

$ cp -v /lib64/libtinfo.so.5 /lib64/libdl.so.2 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2 $J/lib64/

输出样例:

`/lib64/libtinfo.so.5' -> `/home/vivek/jail/lib64/libtinfo.so.5'
`/lib64/libdl.so.2' -> `/home/vivek/jail/lib64/libdl.so.2'
`/lib64/libc.so.6' -> `/home/vivek/jail/lib64/libc.so.6'
`/lib64/ld-linux-x86-64.so.2' -> `/home/vivek/jail/lib64/ld-linux-x86-64.so.2'

复制 ls 命令所需的库文件到 $J 目录下。用 ldd 命令打印出 ls 命令依赖的共享库:

$ ldd /bin/ls

输出样例:

linux-vdso.so.1 =>  (0x00007fff68dff000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00000032f8a00000)
librt.so.1 => /lib64/librt.so.1 (0x00000032f7a00000)
libcap.so.2 => /lib64/libcap.so.2 (0x00000032fda00000)
libacl.so.1 => /lib64/libacl.so.1 (0x00000032fbe00000)
libc.so.6 => /lib64/libc.so.6 (0x00000032f7200000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000032f6e00000)
/lib64/ld-linux-x86-64.so.2 (0x00000032f6a00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000032f7600000)
libattr.so.1 => /lib64/libattr.so.1 (0x00000032f9600000)

你可以一个个的复制库文件,为了更高效的作业,我们也可以使用bash shell 的循环指令实现:

list="$(ldd /bin/ls | egrep -o '/lib.*.[0-9]')"
for i in $list; do cp  -v "$i" "${J}${i}"; done

输出样例:

`/lib64/libselinux.so.1' -> `/home/vivek/jail/lib64/libselinux.so.1'
`/lib64/librt.so.1' -> `/home/vivek/jail/lib64/librt.so.1'
`/lib64/libcap.so.2' -> `/home/vivek/jail/lib64/libcap.so.2'
`/lib64/libacl.so.1' -> `/home/vivek/jail/lib64/libacl.so.1'
`/lib64/libc.so.6' -> `/home/vivek/jail/lib64/libc.so.6'
`/lib64/libdl.so.2' -> `/home/vivek/jail/lib64/libdl.so.2'
`/lib64/ld-linux-x86-64.so.2' -> `/home/vivek/jail/lib64/ld-linux-x86-64.so.2'
`/lib64/libpthread.so.0' -> `/home/vivek/jail/lib64/libpthread.so.0'
`/lib64/libattr.so.1' -> `/home/vivek/jail/lib64/libattr.so.1'

最后,chroot 到你的新jail:

$ sudo chroot $J /bin/bash

尝试浏览一下 /etc 或 /var:

# ls /
# ls /etc/
# ls /var/

改变了根目录的 bash 和 ls 程序现在被监禁在$HOME/$J这个特殊目录中,而且不能再访问外部的目录树,这个目录可以看做是它们的”/”(root)目录。如果配置正确的话,这会极大增强安全性。我通常用这种技术锁定以下的应用程序。

  1. Apache – Red Hat / CentOS: Chroot Apache 2 Web Server
  2. Nginx – Linux nginx: Chroot (Jail) Setup
  3. Chroot Lighttpd web server on a Linux based system
  4. Chroot mail server.
  5. Chroot Bind DNS server 等等

如何退出 chroot 监禁呢?

键入 exit 即可

$ exit

上述会话样例如下:

Linux:Linux / Unix:chroot 命令实例讲解
Linux:Linux / Unix:chroot 命令实例讲解

Gif 动画01: Linux / Unix: Bash Chroot ls 命令演示

查找服务是否存在于 chrooted 监禁内

你可以用下面两个命令[轻松的找出 Postfix 邮件服务是否已经 chrooted]:

pid=$(pidof -s master)
ls -ld /proc/$pid/root

从基本Linux服务中输出样例:

lrwxrwxrwx. 1 root root 0 Mar  9 11:16 /proc/8613/root -> /

PID 8613 指向了 / (root) 也就是说这个程序的根目录并没有被改变或是被 chroot。这个方法非常的快速而又直接,不需要打开配置文件。下面是从已经 chroot 的 ngnix 服务中得到的另一个例子:

pid=$(pidof -s master)
ls -ld /proc/$pid/root

输出样例:

lrwxrwxrwx 1 nginx nginx 0 Mar  9 11:17 /proc/4233/root -> /nginxjail

程序的根目录已经改为 /nginxjail。

来源:https://linux.cn/article-3068-1.html

Linux:让 Ubuntu 上的 Unity 在线搜索功能见鬼去吧!

无论何时,你开始在 Unity Dash 搜索计算机中的应用程序或文件时,你的检索词将被自动发送给第三方,如亚马逊,并且第三方将依据您的搜索词显示相关结果(主要是广告)。如果你不喜欢这个功能,感觉真的打扰到你,你可以禁用它。

例如,当我在 Unity Dash 中输入 “Terminal” 时,将显示 “Terminal” 应用和 web 上其他第三方的东东(我要发狂了!我不想要这些!)。

Linux:让 Ubuntu 上的 Unity 在线搜索功能见鬼去吧!
Linux:让 Ubuntu 上的 Unity 在线搜索功能见鬼去吧!

正如上面的截图所见,Unity显示内置的 Terminal 应用、引用链接、天气链接和其他第三方的推荐,如电影等。这是非常恼人的并且在 Unity Dash 上看起来很糟。同时,它显示了太多的搜索结果,并使我迷惑。

如果你像我一样不需要这个功能,在你的终端输入以下命令:

wget -q -O - https://fixubuntu.com/fixubuntu.sh | bash

上述脚本的内容如下:

#!/bin/bash
GS="/usr/bin/gsettings"
CCUL="com.canonical.Unity.lenses"
# Figure out the version of Ubuntu that you're running
V=`/usr/bin/lsb_release -rs`
# The privacy problems started with 12.10, so earlier versions should do nothing
if awk "BEGIN {exit !($V < 12.10 || $V >= 14.10)}"; then
  echo "Good news! This version of Ubuntu is not known to invade your privacy."
else
  # Check Canonical schema is present. Take first match, ignoring case.
  SCHEMA="`$GS list-schemas | grep -i $CCUL | head -1`"
  if [ -z "$SCHEMA" ]
    then
    printf "Error: could not find Canonical schema %s.n" "$CCUL" 1>&2
    exit 1
  else
    CCUL="$SCHEMA"
  fi
  # Turn off "Remote Search", so search terms in Dash don't get sent to the internet
  $GS set $CCUL remote-content-search none
  # If you're using earlier than 13.10, uninstall unity-lens-shopping
  if [ $V < 13.10 ]; then
    sudo apt-get remove -y unity-lens-shopping
  # If you're using a later version, disable remote scopes
  else
    $GS set $CCUL disabled-scopes
      "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope',
      'more_suggestions-populartracks.scope', 'music-musicstore.scope',
      'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope',
      'more_suggestions-skimlinks.scope']"
  fi;
  # Block connections to Ubuntu's ad server, just in case
  if ! grep -q "127.0.0.1 productsearch.ubuntu.com" /etc/hosts; then
    echo -e "n127.0.0.1 productsearch.ubuntu.com" | sudo tee -a /etc/hosts >/dev/null
  fi
  echo "All done. Enjoy your privacy."
fi

再次,我进入到 Unity dash 的终端。现在 Unity 只显示终端应用,而不是无用的垃圾,现在 Unity Dash 看起来还不错。

Linux:让 Ubuntu 上的 Unity 在线搜索功能见鬼去吧!
Linux:让 Ubuntu 上的 Unity 在线搜索功能见鬼去吧!

全部搞定,让那些杂乱的东西再也不要回来了。

欢呼~!

更新:这一招只适用Unity desktop。如果你使用其他的比如GNOME,LXDE或Xfce,你不用这么做。同时,这个在线搜索功能将不会包含在Ubuntu 14.10和即将推出的版本中。

Source & Reference: Fixubuntu


via: http://www.unixmen.com/disable-unity-online-search-feature-ubuntu-14-04-lts-older-versions/

译者:tenght 校对:Caroline

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

来源:https://linux.cn/article-3073-1.html

Linux:解决Ubuntu 14.04 Unity桌面环境登录后冻结问题

如果你把Ubuntu从13.10更新到14.04,你也许会遇到用Unity桌面环境登录时冻结的现象。引导进入Ubuntu14.04,输入验证信息,系统会挂起,冻结在那里。如果你稍微幸运些,你还能看到鼠标光标、桌面背景,仅此而已。没有Unity触发器,也没有顶部面板等等。你的ubuntu基本上不可用了。

Linux:解决Ubuntu 14.04 Unity桌面环境登录后冻结问题
Linux:解决Ubuntu 14.04 Unity桌面环境登录后冻结问题

缺少Unity触发器和面板以及系统冻结的问题,可以通过重新安装Unity来解决。让我们看看怎么做:

重新安装14.04的Unity 以解决系统冻结的问题

好吧,如果你正被困在一个冻结的系统上,按下Ctrl+Alt+F2。这会让你进入一个命令行界面而不是默认的用户桌面界面。切换到命令行界面后,输入用户名和密码登录之后,使用下面的命令重装Unity桌面环境:

sudo apt-get update
sudo apt-get install --reinstall ubuntu-desktop
sudo apt-get install unity
sudo shutdown -r now

最后一个命令是重启系统,重启之后,你的Unity应该就变好了。

解决Nvidia显卡的Unity冻结问题

我没有使用过Nvidia的显卡,但是我找到了别人解决这个问题的方法。尽管上面的技巧对我来说有效,但是我没有过验证下面的命令。使用Nvidia的用户,请告诉我下面的步骤是否工作:

和上面一样使用Ctrl+Alt+F2登录到命令行界面,输入下面的命令:

sudo apt-get update
sudo apt-get install --reinstall ubuntu-desktop
sudo apt-get install unity
sudo apt-get remove --purge nvidia*
sudo shutdown -r now

如果重启之后Unity恢复了,记得重新安装你的Nvidia显卡的驱动,因为你已经卸载了它。

我希望这些技巧能够帮助你从冻结的unbuntu 14.04中恢复。最后,任何的问题和建议都欢迎来提。


via: http://itsfoss.com/fix-unity-freezes-after-login-ubuntu-14-04/

译者:ggaaooppeenngg 校对:wxy

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

来源:https://linux.cn/article-3074-1.html

Linux:十个开源的静态站点生成器

本文是从StaticGen网站整理出来的静态站点生成器排行榜。俗话说,不管白猫黑猫,抓到老鼠就是好猫,所以这里整理出来的生成器不分先后,只要是合适的就是最好的。

1. Jekyll

主页|托管地址

Jekyll是一个静态Blog站点生成器,不管是用在个人、项目还是组织站点,都是很棒的,你可以把Jekyll想象成一个基于文件的CMS,没什么复杂性!Jekyll首先会获得你的内容,然后开始渲染Markdown 和 Liquid 模板,接下来会生成一个完整的可以被用在 Apache、Nginx 或者是其它Web服务器上的静态网站。Jekyll 是 GitHub Pages 后面的驱动器,你可以使用这个驱动器托管来自你的 GitHub 仓库的站点。

2. Pelican   

主页|托管地址

Pelican是一个使用Python编写的静态站点生成器。

Pelican目前支持: 

  • Blog文章和页面
  • 通过一个外部服务器(Disqus)进行评论
  • 主题支持
  • 文章和页面可以生成PDF格式
  • 可以通过多种语言出版文章
  • 代码语法高亮显示
  • 可以从 WordPress、Dotclear 或 RSS上传文章
  • 根据内容缓存和选择性输出写作而快速重建时期

3. Middleman   

主页|托管地址

Middleman 这个静态站点生成器使用了各种快捷方式和工具,这些工具也应用在现代Web开发当中。Middleman 为独立开发者提供了除了各种各样的工具以外很多东西,这就是为什么别人这个独立的框架,而放弃Ruby on Rails的原因。

Linux:十个开源的静态站点生成器
Linux:十个开源的静态站点生成器

4. DocPad   

主页|托管地址

DocPad的最大贡献就是将Web开发的程序简化了,并帮助缩小了专家和初学者之间的距离。各大企业已经使用DocPad将近2年了,而且现在正在利用DocPad创造更加高效、快捷的Web站点和App。

几乎大多数的开发者都比较喜欢DocPad,从第一次使用DocPad的Web开发者到企业领导和专家。

Linux:十个开源的静态站点生成器
Linux:十个开源的静态站点生成器

5. Hexo   

主页|托管地址

Hexo是一个快速的、强大的Blog框架,主要是由 Node.js 构建出来的。同时支持多线程生成,上百个文件只需要花数秒中就能生成。他还支持GitHub Flavored Markdown 和所有的 Octopress 插件和 高兼容 Jekyll/Octopress。

Linux:Java中8个顶级开源NoSQL数据库!

Linux:Java中8个顶级开源NoSQL数据库!
Linux:Java中8个顶级开源NoSQL数据库!

NoSQL正在崛起。许多企业和用户已经将MySQL数据库替换成了NoSQL数据库。NoSQL使分析非结构化的数据变得更容易,因此开发者必须意识到存在于NoSQL世界中的趋势和工具。

1.Terrastore

新的文档存储技术可以提供先进的伸缩性和弹性而不必牺牲一致性。Terrastore基于Trrracotta,它依赖于一个业界公认的,快速的(而且又酷)集群技术。

2.Neo4j

开源的图形数据库,用Java实现。开发者将Neo4j描述为“嵌入式,基于磁盘,完全事务的Java持久引擎,将数据结构化存储在图中而不是在二维表格中”

3.Voldemort

分布式键值存储系统。本质上说是一个大型,分布式,持久的,容错哈希表。对于应用,它可以使用类似active-record或者hibernate的O/R映射工具,这些可以提供水平扩展和更高的可用性,但是会损失巨大的便利性。

4.HBase

Apache HBase是Google的Chang et al开发的,是继其开发的分布式存储系统Bigtable之后的另一个开源的、分布式、版本化的、非关系型数据库。

5.InfoGrid

带有很多额外的软件组件的Web图形数据库,使在图形数据库基础上开发Rest-ful的web应用变得很容易。

6.HyperGraphDB

通用的、可扩展、便携、嵌入式、开源数据存储机制。它是一个特别为人工智能和web语义项目设计的图形数据库,同样可以用于不同大小项目的嵌入式面向对象数据库。

7.Perst

Perst是McObject的开源实现,双许可证,面向对象的嵌入式数据库系统(ODBMS)。它的一个版本是用Java开发的嵌入式数据库,另外一个用C#实现(对于Microsoft .NET Framework的应用而言)。

8.NeoDatis ODB

一个简单的运行在Java、.Net、 Google Android、 Groovy 和 Scala上的对象数据库。


via: http://www.efytimes.com/e1/fullnews.asp?edid=138992

译者:geekpi 校对:wxy

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

来源:https://linux.cn/article-3077-1.html

Linux:图形数据库和NOSQL

简介

众多不同的数据模型里,关系数据模型自80年代就处于统治地位,而且有不少实现,如OracleMySQLMSSQL,它们也被称为关系数据库管理系统(RDBMS)。然而,最近随着关系数据库使用案例的不断增加,一些问题也暴露了出来,这主要是因为两个原因:数据建模中的一些缺陷和问题,以及在大数据量和多服务器之上进行水平伸缩的限制。两个趋势让这些问题引起了全球软件社区的重视:

  1. 用户、系统和传感器产生的数据量呈指数增长,其增长速度因大部分数据量集中在象Amazon、Google和其他云服务这样的分布式系统上而进一步加快。
  2. 数据内部依赖和复杂度的增加,这一问题因互联网、Web2.0、社交网络,以及对大量不同系统的数据源开放和标准化的访问而加剧。

在应对这些趋势时,关系数据库产生了更多的问题。这导致大量解决这些问题某些特定方面的不同技术的出现,它们可以与现有RDBMS相互配合或代替它们 – 亦被称为混合持久化(Polyglot Persistence)。数据库替代品并不是新鲜事物,它们已经以对象数据库(OODBMS)、层次数据库(如LDAP)等形式存在很长时间了。但是,过去几年间,出现了大量新项目,它们被统称为NOSQL数据库(NOSQL-databases)

本文旨在介绍图形数据库(Graph Database)在NOSQL运动里的地位,第二部分则是对Neo4j(一种基于Java的图形数据库)的简介。

NOSQL环境

NOSQL(Not Only SQL,不限于SQL)是一类范围非常广泛的持久化解决方案,它们不遵循关系数据库模型,也不使用SQL作为查询语言。

简单地讲,NOSQL数据库可以按照它们的数据模型分成4类:

  1. 键-值存储库(Key-Value-stores)
  2. BigTable实现(BigTable-implementations)
  3. 文档库(Document-stores)
  4. 图形数据库(Graph Database)

VoldemortTokyo Cabinet这类键/值系统而言,最小的建模单元是键-值对。对BigTable的克隆品来讲,最小建模单元则是包含不同个数属性的元组,至于象CouchDBMongoDB这样的文档库,最小单元是文档。图形数据库则干脆把整个数据集建模成一个大型稠密的网络结构。

 

在此,让我们深入检阅NOSQL数据库的两个有意思的方面:伸缩性和复杂度。

1. 伸缩性

CAP: ACID vs. BASE

为了保证数据完整性,大多数经典数据库系统都是以事务为基础的。这全方位保证了数据管理中数据的一致性。这些事务特性也被称为ACIDA代表原子性、C表示一致性、I是隔离性、D则为持久性)。然而,ACID兼容系统的向外扩展已经表现为一个问题。在分布式系统中,高可用性不同方面之间产生的冲突没有完全得到解决 – 亦称CAP法则:

  • 一致性(C):所有客户端看到的数据是同一个版本,即使是数据集发生了更新 – 如利用两阶段提交协议(XA事务),和ACID,
  • 可用性(A):所有客户端总能找到所请求数据的至少一个版本,即使集群中某些机器已经宕机,
  • 分区容忍性(P):整个系统保持自己的特征,即使是被部署到不同服务器上的时候,这对客户端来讲是透明的。

CAP法则假定向外扩展的3个不同方面中只有两个可以同时完全实现。

Linux:图形数据库和NOSQL
Linux:图形数据库和NOSQL

为了能处理大型分布式系统,让我们深入了解所采用的不同CAP特征。

很多NOSQL数据库首先已经放宽了对于一致性(C)的要求,以期得到更好的可用性(A)分区容忍性(P)。这产生了被称为BASE基本(B)可用性(A)软状态(S)最终一致性(E))的系统。它们没有经典意义上的事务,并且在数据模型上引入了约束,以支持更好的分区模式(如Dynamo系统等)。关于CAP、ACID和BASE的更深入讨论可以在这篇介绍里找到。

2. 复杂度

Linux:图形数据库和NOSQL
Linux:图形数据库和NOSQL

蛋白质同源网络(Protein Homology Network),感谢Alex Adai:细胞和分子生物学院 – 德州大学

数据和系统的互联性增加产生了一种无法用简单明了或领域无关(domain-independent)方式进行伸缩和自动分区的稠密数据集,甚至连Todd Hoff也提到了这一问题。关于大型复杂数据集的可视化内容可以访问可视化复杂度(Visual Complexity)

关系模型

在把关系数据模型扔进故纸堆之前,我们不应该忘记关系数据库系统成功的一个原因是遵照E.F. Codd的想法,关系数据模型通过规范化的手段原则上能够建模任何数据结构且没有信息冗余和丢失。建模完成之后,就可以使用SQL以一种非常强大的方式插入、修改和查询数据。甚至有些数据库,为了插入速度或针对不同使用情况(如OLTP、OLAP、Web应用或报表)的多维查询(星形模式),对模式实现了优化。

这只是理论。然而在实践中,RDBM遇到了前面提到的CAP问题的限制,以及由高性能查询实现而产生的问题:联结大量表、深度嵌套的SQL查询。其他问题包括伸缩性、随时间的模式演变,树形结构的建模,半结构化数据,层级和网络等。

关系模型也很难适应当前软件开发的方法,如面向对象和动态语言,这被称为对象-关系阻抗失配。由此,象Java的Hibernate这样的ORM层被开发了出来,而且被应用到这种混合环境里。它们固然简化了把对象模型映射到关系数据模型的任务,但是没有优化查询的性能。尤其是半结构化数据往往被建模成具有许多列的大型表,其中很多行的许多列是空的(稀疏表),这导致了拙劣的性能。甚至作为替代方法,把这些结构建模成大量的联结表,也有问题。因为RDBMS中的联结是一种非常昂贵的集合操作。

图形是关系规范化的一种替代技术

看看领域模型在数据结构上的方案,有两个主流学派 – RDBMS采用的关系方法和图 – 即网络结构,如语义网用到的。

尽管图结构在理论上甚至可以用RDBMS规范化,但由于关系数据库的实现特点,对于象文件树这样的递归结构和象社交图这样的网络结构有严重的查询性能影响。网络关系上的每次操作都会导致RDBMS上的一次”联结”操作,以两个表的主键集合间的集合操作来实现 ,这种操作不仅缓慢并且无法随着这些表中元组数量的增加而伸缩。

属性图形(Property Graph)的基本术语

在图的领域,并没有一套被广泛接受的术语,存在着很多不同类型的图模型。但是,有人致力于创建一种属性图形模型(Property Graph Model),以期统一大多数不同的图实现。按照该模型,属性图里信息的建模使用3种构造单元:

  • 节点(即顶点)
  • 关系(即边) – 具有方向和类型(标记和标向)
  • 节点和关系上面的属性(即特性)

更特殊的是,这个模型是一个被标记和标向的属性多重图(multigraph)。被标记的图每条边都有一个标签,它被用来作为那条边的类型。有向图允许边有一个固定的方向,从末或源节点到首或目标节点。属性图允许每个节点和边有一组可变的属性列表,其中的属性是关联某个名字的值,简化了图形结构。多重图允许两个节点之间存在多条边。这意味着两个节点可以由不同边连接多次,即使两条边有相同的尾、头和标记。

下图显示了一个被标记的小型属性图。

Linux:图形数据库和NOSQL
Linux:图形数据库和NOSQL

TinkerPop有关的小型人员图

图论的巨大用途被得到了认可,它跟不同领域的很多问题都有关联。最常用的图论算法包括各种类型的最短路径计算测地线(Geodesic Path)、集中度测量(如PageRank、特征向量集中度、亲密度、关系度、HITS等)。然而,在很多情况下,这些算法的应用仅限制于研究,因为实际中没有任何可用于产品环境下的高性能图形数据库实现。幸运的是,近些年情况有所改观。有几个项目已经被开发出来,而且目标直指24/7的产品环境:

下图展示了在复杂度和伸缩性方面背景下的主要NOSQL分类的位置。

Linux:图形数据库和NOSQL
Linux:图形数据库和NOSQL

关于“规模扩展和复杂度扩展的比较”的更多内容,请阅读Emil Eifrem的博文

摘录自: http://www.infoq.com/cn/articles/graph-nosql-neo4j 

Linux:戴文的Linux内核专题:22 配置内核 (18)

Linux:戴文的Linux内核专题:22 配置内核 (18)
Linux:戴文的Linux内核专题:22 配置内核 (18)

你好!准备好阅读下一篇文章了么?在本篇中,我们将会讨论辅助显示。辅助显示是一些小的LCD屏幕;大多数小于或等于128×64。接着,我们会讨论用户空间IO驱动,一些虚拟驱动,Hyper-V,开发中驱动,IOMMU,和其他一些内核特性。

第一个配置辅助显示的驱动是”KS0108 LCD Controller”。KS0108 LCD Controller是由三星制造的图形控制器。

下面可以设置LCD并口地址(Parallel port where the LCD is connected)。第一个并口地址是0x378,下一个是0x278,第三个是0x3BC。这些不是地址唯一的选择。大多数人不需要改变这个。shell命令”cat /proc/ioports”会列出可用的并口和地址。

内核可以设置KS0108 LCD 控制器的写入延时到并口(Delay between each control writing (microseconds))。默认的值大部分是正确的,因此一般不需要更改。

“CFAG12864B LCD”屏幕是一块128×64,双色LCD屏幕。这块屏幕依赖于KS0108 LCD控制器。

可以改变这些LCD屏幕的刷新率(Refresh rate (hertz))。通常上,更高的刷新率会导致更多的CPU活动。这意味着一个缓慢的系统需要一个更低的刷新率。

设置完辅助显示后,接着设置”Userspace I/O drivers”。用户空间系统允许用户的应用和进程访问内核中断和内存地址。启用了它,一些驱动可以放在用户空间。

“generic Hilscher CIF Card driver”用于Profibus卡和Hilscher CIF卡。

“Userspace I/O platform driver”在用户空间创建通用驱动系统。

下一个驱动和上面的相同,但是增加IRQ处理(Userspace I/O platform driver with generic IRQ handling)。

下面的驱动又像前面的一个,但是增加了动态内存支持(Userspace platform driver with generic irq and dynamic memory)。

下面,是一些供应商/设备特性的驱动。

接着是一些通用PCI/PCIe卡驱动(Generic driver for PCI 2.3 and PCI Express cards)。

下面的驱动用于”VFIO support for PCI devices”。VFIO代表Virtual Function Input/Output(虚拟功能输入/输出)。VFIO允许设备直接以安全方式访问用户空间。

“VFIO PCI support for VGA devices”允许VGA通过VFIO被PCI支持。

接下来是virtio驱动。virtio是一个IO虚拟化平台。这个虚拟软件用于操作系统虚拟化。这在Linux系统上的虚拟机上运行一个操作系统时需要。

我们第一个可以配置的virtio驱动是”PCI driver for virtio devices”。这允许虚拟访问PCI

“Virtio balloon driver”允许虚拟系统的内存根据需要扩展或减少。通常上,没有人希望在需要内存的时候,虚拟系统保留它可能不会使用的内存。

下面的驱动允许内存映射到virtio设备(Platform bus driver for memory mapped virtio devices)。

如果Linux内核需要运行在微软的Hyper-V系统上,那么启用这个驱动(Microsoft Hyper-V client drivers)。这允许Linux能够成为Hyper的访客/客户端系统。

Linux:戴文的Linux内核专题:22 配置内核 (18)
Linux:戴文的Linux内核专题:22 配置内核 (18)

下面,我们会配置处于开发阶段的驱动。这些驱动正在开发当中,可能会变化很快,或者还没到Linux内核的质量标准。这个分类中的驱动只有Android驱动(在内核3.9.4中)。是的,Andorid使用Linux内核,这使得Andorid变成了一个Linux系统。然而,这仍然有争议。如果内核是用于Android,那么最好启用所有的驱动。

“Android Binder IPC Driver”提供了对于Binder的支持,它允许Andorid系统进程间相互通信。

下面可以启用ashmen驱动(Enable the Anonymous Shared Memory Subsystem)。Ashmem代表”Anonymous SHared MEMory”(虚拟内存共享)或者”Android SHared MEMory”(Andorid共享内存)。

“Android log driver”提供了完整的Andorid日志系统。

“Timed output class driver” 和 “Android timed gpio driver”允许Andorid系统操作GIP引脚并在超时后取消操作。

“Android Low Memory Killer”会在需要更多内存关闭进程。这个特性会杀死不再使用或活跃的任务。

“Android alarm driver”使内核在设定的间隔后唤醒。

在配置完开发阶段的驱动后,下面的驱动用于X86平台。这些驱动是 X86 (32-bit)的供应商/设备特定硬件。

下一个驱动是”Mailbox Hardware Support”。这个框架控制邮箱队列和硬件邮箱系统的中断信号。

“IOMMU Hardware Support”链接内存到能够使用DMA的设备上。IOMMU增强了DMA。IOMMU映射地址并阻止故障设备访问内存。IOMMU同样允许硬件访问比没有IOMMU更多内存。

“AMD IOMMU support”提供了对AMD设备更好的IOMMU支持。

对于AMD IOMMU支持存在调试特性(Export AMD IOMMU statistics to debugfs)。

存在一个对于AMD硬件的更新版本的IOMMU驱动(AMD IOMMU Version 2 driver)。

Linux内核同样支持对Intel设备的IOMMU驱动支持(Support for Intel IOMMU using DMA Remapping Devices)。

一些设备可能会接受不同的电压和时钟频率。这个驱动允许操作系统控制设备的电压输出和时钟频率(Generic Dynamic Voltage and Frequency Scaling (DVFS) support)。启用了这个驱动,可以启用下面的那些对于电源/性能管理特性。

“Simple Ondemand”就像上面的,但是只会基于设备活动改变时钟频率。通常上,更多的活动意味着设备需要更快的时钟速率来使用更多的资源需求。

“Performance”允许系统设置最高支持的时钟速度以满足最好的性能。这会增加电源消耗。

“Powersave”会设置时钟频率到最低以节约电源。

“Userspace”允许用户空间设置时钟频率。

“External Connector Class (extcon) support”使得用户空间可以监视外部连接器如USB和AC口。这允许应用了解是否插入了线缆。用户几乎都希望启用这个。如果任何人由于某个合理的理由禁用了它,请告诉我们为什么这么做。

“GPIO extcon support”驱动就像上面的驱动,但是它只对于GPIO管脚。

接下来是不同的供货商/设备特定的内存控制器(Memory Controller drivers)。内存芯片控制器可能是独立的设备或者内置在内存芯片上。这些控制器管理这输入和输出的数据流。

“Industrial I/O support”驱动提供了标准的传感器接口而不管总线的类型(像PCIe、spi、GPIO等等)。IIO是”Industrial I/O support”(工业IO)的通用缩写。

Linux内核提供了大量不同的加速器、放大器模数转换器、惯性测量单元、光敏传感器、磁场传感器和其他许多传感器和转换器的支持。

“Intel Non-Transparent Bridge support”驱动支持连接到系统的PCIe硬件桥。所有到映射内存的写入会镜像到两个系统中。

“VME bridge support”和上面的相同除了桥使用的是VME,这是一个不同的总线标准。

“Pulse-Width Modulation (PWM) Support”通过调节从这些设备收到的平均功率调节背光灯和风扇速度。

“IndustryPack bus support”提供了对IndustryPack总线标准的支持。

下一篇文章,我们会继续配置固件驱动。谢谢!


via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-18.4896/

译者:geekpi 校对:wxy

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

来源:https://linux.cn/article-3081-1.html

Linux:教你6步定制你的Ubuntu桌面

Linux:教你6步定制你的Ubuntu桌面
Linux:教你6步定制你的Ubuntu桌面

对于那些想要一个易于使用的界面的用户,Ubuntu是一个很好的Linux发行版,并且对于一个Linux新手也可以说是最好的Linux发行版。不过这产生了一些副作用,那就是,对于界面和外观,Canonical公司已经为用户做了很多设定,尤其是Unity桌面环境。

然而这些不是一成不变的。下面是一些关于怎样让你更加舒心地使用Ubuntu的技巧。看过上面的截图中我对Ubuntu的设定,你可以看到我的的Unity桌面,相比于默认设定的桌面有何不同。

下面让我们分步来实现定制Ubuntu桌面。

1. 安装Unity Tweak Tool

在你能对Ubuntu外观做任何有效地修改之前,你不得不安装Unity Tweak Tool。这是一个Unity桌面环境下特殊设置管理软件,并且通过它你可以实现替换系统图标和主题。你可以从Ubuntu软件中心下载该软件,如果你更加偏爱terminal终端的话,你也可以使用下面的命令:

sudo apt-get install unity-tweak-tool

如果你正在使用Gnome桌面环境,那么你可能需要尝试Gnome Tweak Tool这款软件。你也可以从Ubuntu软件中心和使用以下命令来安装该软件:

sudo apt-get install gnome-tweak-tool

2. 安装GTK主题

对于Ubuntu有很多定制的主题,这些主题可以影响应用和窗口的外观。我正在使用的主题是Numix GTK+。你可以在http://numixproject.org/找到关于Numix主题和图标的更多信息。你可以通过打开终端并输入以下命令来安装Numix主题:

sudo add-apt-repository ppa:numix/ppa
sudo apt-get update && sudo apt-get install numix-gtk-theme

为了使该主题生效,我们需要打开Unity Tweak Tool,选择“外观标题”下的“主题”选项,然后在“已有主题”一栏中选择该主题。只要相应的软件仓库名字一致,对于其他主题,你可以重复该过程来应用。你可以访问Gnome-Look.org获得更多的主题。另一个和Numix主题很相似的主题是Moka,你可以在http://mokaproject.com/获得更多关于Moka主题的信息。

3. 安装图标

以上截图中使用的图标是来自Numix主题的Numix圆形图标。你可以通过在终端输入以下命令来安装该图标集:

sudo apt-add-repository ppa:numix/ppa
sudo apt-get update
sudo apt-get install numix-icon-theme-circle

为了使该图标集生效,我们需要在Unity Tweak Tool中选择“图标”选项,然后选择该图标集。再一次声明,这个方法对于任何图标集是可行的。Moka也提供给你的桌面带来多彩的、一致性设计的图标集。

4. 安装conky系统监视软件

Conky是一个轻量级桌面系统监视软件。该软件本身是非常简单的,不过它是可定制的,这样一来它就可以显示很多的有用的信息。你可以通过在终端输入以下命令来安装Conky:

sudo apt-get install conky conky-all

你将会需要curl这个软件,你可以通过以下这个命令来安装该软件:

sudo apt-get install curl

上面截图中使用的conky主题是Harmattan,它可以以15种不同的样式来显示时间、天气、以及系统进程。要安装该主题,你可以从deviantART下载zip文件,然后解压。将.conky-weather文件夹和位于主题文件夹的.conkyrc文件(你可能需要按Ctrl+H来显示这些隐藏文件)移动到你的home文件夹。Conky有很多的主题。尝试这些主题,你所需要做的就是用所要使用主题的.conkyrc文件替换在home文件夹的.conkyrc文件。

5. 安装一些指示器程序

有很多第三方的指示器程序,通过这些程序你可以监视你的桌面信息,例如天气、系统性能等。我所使用的指示器程序相当简单。因为天气和系统性能已经在conky中显示,所以我没有安装这些指示器。不过你可以在终端输入以下命令来安装他们:

sudo apt-get install indicator-weather
sudo apt-get install indicator-multiload

我所使用的两个指示器程序是大小写指示程序以及触摸板控制器,这是因为我的笔记本没有大小写指示灯和控制触摸板开关的热键。你可以通过以下命令来安装这两个软件:

sudo add-apt-repository ppa:tsbarnes/indicator-keylock
sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install indicator-keylock
sudo apt-get install touchpad-indicator

你可能需要注销并重新登录来使用这些应用。

6. 通过Compiz设置管理器深度定制你的桌面

如果对于你来说Unity Tweak Tool不够强大,那么你可以尝试Compiz设置管理器.

警告: 

如果错误的设置被应用的话,Compiz设置管理器可能会损害到你的系统。所以使用时要格外小心。你可以看到Ubuntu系统中隐藏的各种设置。你可以在Ubuntu软件中心获取该软件或者终端输入以下命令来安装:

sudo apt-get install compiz compizconfig-settings-manager compiz-fusion-plugins-extra compiz-fusion-plugins-main compiz-plugins

现在你的Ubuntu桌面变得具有超棒了!所有的这些步骤都有成千上万种选择,所以折腾是无极限的。还在等什么?还不赶紧去享受你的新Ubuntu桌面!


via: http://www.muktware.com/2014/05/customize-ubuntu-desktop-6-steps/26750

译者:JonathanKang 校对:wxy

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

来源:https://linux.cn/article-3082-1.html

Linux:从U盘运行Linux操作系统的三种方法

usb_linux_0

你或许听说过在U盘上运行live Linux操作系统,但你知不知道可以永久的保存运行时的数据,或者直接将Linux安装到U盘?本文将介绍把Linux装进口袋(U盘)的三种方法,挑一种你最喜欢的方法吧!

将ISO映像烧录到U盘

usb_linux_1

把一个Linux发行版的Live ISO映像烧录到U盘中已 经变的极其容易了。从这里你可以在任意一台支持从U盘启动的PC上启动你的Linux系统。然而,这种方法有一个缺点:当你关机后,你所有“修改”过的数 据都会丢失。这是因为作为一个Live环境,所有的数据都保存在RAM中而不是U盘上。当你关机的时候,所有修改过的数据都会丢失。

如果你在日常使用的时候需要修改安装到U盘的Linux系统(例如安装、更新软件或者修改文档),那么这种方法显然不可行。但是,如果你打算将其用作安全通信(例如网银或者需使用TOR的场合)和确保不保存敏感的信息,那这种方法无疑是最适合的。

永久性保存数据

Linux:从U盘运行Linux操作系统的三种方法
Linux:从U盘运行Linux操作系统的三种方法

如果你是Ubuntu用户,那么你可以选择在U盘上永久保存修改后的ISO映像。这样你就可以在U盘上安装应用程序和保存新创建或修改的文档。

缺点:Live系统运行时通常自动使用Live账号进入系统。这个账号是没有密码的,任何人都可以登陆系统,使得其变得不安全。在更新软件的时候也 需要特别小心。因为如果Linux内核被更新了,bootloader将有可能损坏。比起在硬盘上安装的系统,这种方法很不灵活。因为 bootloader需要被启动的内核与安装ISO映像的内核版本相同才可以启动。

完全安装到U盘

Linux:从U盘运行Linux操作系统的三种方法
Linux:从U盘运行Linux操作系统的三种方法

最后,你可以选择将系统完全安装到U盘。你需要用光盘或者另外一个U盘来存储安装的ISO映像。这样方法可以将整个系统完整的安装到U盘中,且和在硬盘上安装的系统一样灵活。

优点很明显:它和在硬盘上安装的系统没有什么区别,而且非常便携。但这种方法也有缺点:首先你的U盘要足够大——至少8G以上;其次,系统本身会认 为它是安装在硬盘上的,所以它会针对当前运行的硬件进行优化,但是这种优化可能会使得当你遇到未来的其它硬件时,系统无法工作。

这主要涉及到安装私有驱动程序。为了保持系统最大的兼容性,请不要使用这种驱动程序。我在使用这种系统安装方式的时候没有使用私有驱动程序,所以没有遇到任何与兼容性相关的问题。

总结

惊讶么?你不应该感到惊讶才对——Linux系统本身就非常灵活,所以它可以满足各种不同的需求。你现在已经了解在U盘上运行Linux系统的三种方法,那么选择那种最适应你的方法也变得非常容易。也或许由于你了解了几种不同的安装方法,选择起来反而变得犹豫不决。

 

转载自:http://www.geekfan.net/7810/

Linux:漂亮的启动器工具 Duck Launcher 0.64.5

Duck Launcher 是一款开源的应用程序启动器,使用 Python 和 QT 编写,支持最流行的 Linux 系统,该启动器让用户更容易地打开自己喜欢的文件和文件夹,以及启动应用程序。其中,Duck Launcher 有一个菜单的搜索栏和一个集成的文件管理器。可以组织应用程序归成目录。可用的最新版本应用程序 0.64.5,最近已发布。

Linux:漂亮的启动器工具 Duck Launcher 0.64.5
Linux:漂亮的启动器工具 Duck Launcher 0.64.5
Linux:漂亮的启动器工具 Duck Launcher 0.64.5
Linux:漂亮的启动器工具 Duck Launcher 0.64.5

安装,有PPA可用,几乎支持所有 Ubuntu 版本及衍生系统,打开终端,输入命令:

sudo add-apt-repository ppa:the-duck/launcher
sudo apt-get update
sudo apt-get install duck-launcher

移除 duck launcher 命令:

sudo apt-get remove duck-luncher

 

转载自IMCN漂亮的启动器工具 Duck Launcher 0.64.5

Linux:Linux下修改引导器的工具:Boot-Repair

Boot-Repair 是一款用于修复 Ubuntu 可能遇到的一些启动问题的工具软件,如你在安装 Windows 或其他 Linux 发行版时,或者当你安装 Ubuntu 后无法启动 Windows 时,或者当你开机后 Ubuntu 启动时 GRUB 经常不显示,或者一些升级破坏了 GRUB 等,可使用这个工具软件进行修复。

Linux:Linux下修改引导器的工具:Boot-Repair
Linux:Linux下修改引导器的工具:Boot-Repair
Linux:Linux下修改引导器的工具:Boot-Repair
Linux:Linux下修改引导器的工具:Boot-Repair

Boot-Repair 让你的修复非常简单,图形界面操作,只需进行鼠标点击操作就可完成。

Boot-Repair 还拥有先进的选项来备份表分区,备份bootsectors ,创建一个引导信息,或更改默认的维修参数:配置 GRUB,添加内核选项,清除GRUB ,更改默认的操作系统,还原Windows兼容的MBR ,修复一个破碎的文件系统,指定要安装GRUB的磁盘等。

Boot-Repair 是一款开源自由软件,使用 GNU GPL 许可。Boot-Repair 应该很快就会进入到 Ubuntu 的官方软件仓库中。

Ubuntu 用户安装 Boot-Repair

因为有 PPA 可用,打开终端,运行以下命令:

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

 

转载自IMCNBoot-Repair 工具 – 修复频繁的启动问题

Linux:Ubuntu 的开发者准备开发一个仅基于 Unity 8的新风格

Linux:Ubuntu 的开发者准备开发一个仅基于 Unity 8的新风格
Linux:Ubuntu 的开发者准备开发一个仅基于 Unity 8的新风格

Ubuntu 的开发者提出将开发一个单独使用 Unity 8的新风格,以帮助他们自由的实验而不必担心搞乱操作系统稳定。

如果你的环境满足安装需要的话,现在可以在Ubuntu 14.04 LTS中安装体验下 Unity 8 桌面环境的预览版了。现在,新的桌面还不能在专有驱动下运行,因为它依赖于 Mir,而这玩意儿还没有获得 NVIDIA 和 AMD 的官方支持。

无论如何,有一个新的 Ubuntu 风格对于开发者在新的生态环境中测试他们的创意都会有巨大的帮助,而且从 USB Stick 里启动十分方便还能体验大多数的移植性应用。

“桌面环境开发组很希望为 Ubuntu 增加一个新的风格(嘘~,我们并不是计划现在就发行一个正式的版本),这个风格将包括为触屏项目开发的Unity 8桌面和新的应用。最初的意图是提供一个产品使得开发人员可以在做一个基于该软件的桌面产品的时候可以估算出所需要的的工作量,并建立一个可以由实验来找出所需的最佳结合方式的空间。”

“我们仍将计划融合当前的桌面环境,但是我们不希望给用户带来不安稳和造成不便,而且希望并行的发展这个新风格可以使我们真正实现在软件已经准备就绪的时候再迁移,而不是迁移后再解决用户的原有软件的兼容问题。” Ubuntu 的开发者 Iain Lane说。

Ubuntu 14.04 LTS 现在默认使用 Unity 7,而且可能这至少将持续到下一个版本 Ubuntu 14.10。Ubuntu 开发者的目标是最迟在下一个 LTS:Ubuntu 16.04 中让 Unity 8 和 Mir 成为默认的配置,但是如果事情进展的顺利,我们可能会在此之前就能成功。

这个新风格的名字是什么还不清楚,但是如果地位确定的话,我们可能在接下来的几个月就可以得到ISO文件。这将会使得用户更容易地测试 Unity 8 ,而且可以在它成为默认配置之前体验一把。

当 Canonical 用 Unity 替换旧的 GNOME 2 的时候,这个转换引起的震动是如此之大,以至于直到今天在论坛中还时不时的被人提及。有一个专门的 Unity 8 风格可能会缓解这个问题。


via: http://news.softpedia.com/news/Ubuntu-Developers-Propose-a-New-Flavor-Based-Only-on-Unity-8-442262.shtml

译者:crowner 校对:wxy

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

来源:https://linux.cn/article-3091-1.html

Linux:CentOS上配置主DNS服务器的简易指南

任何运作中的域名至少有两台DNS服务器,一台称为主域名服务器(比如叫做ns1),而另一台称为从域名服务器(比如叫做ns2)。这些服务器通常用于故障转移:如果一台宕机,另外一台就激活成为DNS服务器(译注:此处译者有不同意见,事实上两个或更多的DNS服务器是共同工作的,并不是第一台停止服务后,第二台才接替工作。解析器是随机选择一个DNS服务器进行询问,如果超时则会询问下一个,这是多个DNS的故障容错机制)。也可以实现包括负载均衡、防火墙和集群在内的更为复杂的故障转移机制。

一个域的所有DNS条目都会被添加到主域名服务器,从服务器只会根据主服务器上的SOA记录的序列号参数从主服务器同步所有信息。

此教程将会讲述如何创建一台在CentOS上运行的主DNS服务器。请注意,本教程中提到的DNS服务器将会是一台开放DNS服务器,这也就是说该服务器将会回应来自任何IP地址的查询。对于DNS服务器的访问控制将在此教程中讨论(译注:开放的DNS服务器是一个安全隐患)。

Linux:CentOS上配置主DNS服务器的简易指南
Linux:CentOS上配置主DNS服务器的简易指南

在开始之前,我想要提一下的是,DNS可以在chroot环境中配置,也可以在非chroot环境中配置。chroot环境将DNS服务器限制在系统中某个特定目录中,以避免让服务器具有系统级的访问权限。在此环境中,任何DNS服务器的安全漏洞不会导致整个系统的破坏。将DNS服务器置于chroot环境中,对于部署测试也很有用。

目标

我们将在基于域名example.tst的测试环境中配置一台DNS服务器,这个域名是虚假的(并不真实存在的)。这样,我们就不会意外干扰到其它真实的域名。

在该域中,有以下三台服务器。

服务器 IP地址 托管的服务 完全限定域名(FQDN)
Server A 172.16.1.1 Mail mail.example.tst
Server B 172.16.1.2 Web, FTP www.example.tstftp.example.tst
Server C 172.16.1.3 Primary DNS server ns1.example.tst

我们将会配置一台主域名服务器,并添加上表中必要的域和DNS记录。

设置主机名

所有的主机名必须以完全限定域名的方式正确定义,可以通过以下方法完成设置。

# vim /etc/sysconfig/network 

 

HOSTNAME=ns1.example.tst

注:该文件中指定的主机名参数在服务器启动后才会启用(译注:或者网络服务重启后),因此,该设置不会马上生效。下面的命令可以立刻临时性地修改主机名。

# hostname ns1.example.tst

一旦设置,主机名可以通过以下命令验证。

# hostname ns1.example.tst

在进入下一步之前,请确保上述三台服务器上的主机名已经设置正确。

安装软件包

我们将使用bind来配置DNS服务,该软件可以很方便地通过yum来安装。

不使用chroot环境的:

# yum install bind bind-chroot

使用chroot环境的:

# yum install bind bind-chroot

准备配置文件

正如前面提到的,bind可以在chroot环境下配置,或者在非chroot环境下配置,配置文件的路径会因为是否安装chroot包而不同。

  配置文件路径 区域文件路径
不带有 chroot /etc/ /var/named/
带有 chroot /var/named/chroot/etc/ /var/named/chroot/var/named/

可以使用默认提供的named.conf配置文件,但是为了更方便使用,我们将使用另外一个简单的配置文件模板。

非chroot环境:

# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /etc/named.conf

chroot环境:

# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /var/named/chroot/etc/named.conf

现在来备份并修改配置文件。

非chroot环境:

# vim /etc/named.conf

chroot环境:

# vim /var/named/chroot/etc/named.conf

添加/修改以下行:

options {
## 区域文件存放目录 ##
directory "/var/named";
## 对于非本地权威域的请求转发到 Google 的公开 DNS 服务器 ##
forwarders { 8.8.8.8; };
};
## 申明一个本地域 example.tst ##
zone "example.tst" IN {
        type master;
        file "example-fz"; ## 存储文件名,放在 /var/named ##
        allow-update { none; };
};
## 为IP段 172.16.1.0 提供反向解析 ##
zone "1.16.172.in-addr.arpa" IN {
        type master;
        file "rz-172-16-1"; ## 存储文件名,放在 /var/named ##
        allow-update { none; };
};

准备区域文件

那些默认的区域文件会自动创建到/var/named 或者/var/named/chroot/var/named (chroot环境)。如果在这些地方找不到这些文件,/usr/share/doc/bind目录中提供了模板文件,可以从这里拷贝。

假设默认区域文件没有提供,我们可以从/usr拷贝模板文件。

非chroot环境:

# cp /usr/share/doc/bind-9.8.2/sample/var/named/named.* /var/named/

chroot环境:

# cp /usr/share/doc/bind-9.8.2/sample/var/named/named.* /var/named/chroot/var/named

很好!由于现在默认的区域文件已经准备好,我们可以为example.tst和172.16.1.0网络创建区域文件了,以下要点必须时刻谨记。

  • 区域文件中的特殊字符‘@’意味着空。(译注:意即代表本域。)
  • 所有的完全限定域名必须以点‘.’结束。如:example.tst.如果没有这个点,你会发生问题。(译注:即会被当做当前@所代表的域的子域。)

1. 转发区域(本地权威域)

转发区域包含了名称到IP地址的映射。对于公开的域,域名托管提供商的DNS服务器存储了转发区域文件。(译注:转发区域即本地的权威域,由这个服务器自身提供权威的解析数据)

非chroot环境:

# vim /var/named/example-fz

chroot环境:

# vim /var/named/chroot/var/named/example-fz

$TTL 1D
@       IN SOA  ns1.example.tst. sarmed.example.tst. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
IN NS      ns1.example.tst.
IN A       172.16.1.3
mail        IN A        172.16.1.1
        IN MX 10    mail.example.tst.
www     IN A        172.16.1.2
ns1     IN A        172.16.1.3
ftp     IN CNAME    www.example.tst.

说明:在区域文件中,SOA是开始授权(Start Of Authority)的意思。它的值的第一段是授权名称服务器的完全限定域名。完全限定域名后面跟着的是电子邮件地址。由于不能在sarmed@example.tst这样的格式中使用‘@’符号(译注:@有特定意义,代表本域。),我们将电子邮件地址重写成sarmed.example.tst.这样的格式。

以下是典型的常用DNS记录类型:

  • NS:域名服务器
  • A: 地址记录,记录主机名到IP地址的映射(译注,此处原文有误。)
  • MX: 邮件交换记录。这里我们只用了一个邮件交换记录,设置其优先级为10。如果有多个邮件交换记录,我们可以使用多个数值优先级,数字小的优先级最高。例如,MX 0比MX 1优先级更高。
  • CNAME: 标准名。如果在一台单一服务器上托管了多个服务,也很可能将多个名称解析到某个单一服务器。CNAME指定了一台服务器可能有的其它名称,并且将它们指向具有实际A记录的名称。

2. 反向区域

反向区域包含了IP地址到名称的映射。这里,我们为172.16.1.0网络创建反向区域。在正式的域中,公共IP区块的拥有者拥有的DNS服务器存储反向区域文件。(某些服务,如邮件服务,要求IP地址具备正确的反向解析才能正常工作。而IP的反向解析,通常是由IP的拥有者如接入商或IDC来负责解析。)

非chroot环境:

# vim /var/named/rz-172-16-1

chroot环境:

# vim /var/named/chroot/var/named/rz-172-16-1

$TTL 1D
@       IN SOA  ns1.example.tst. sarmed.example.tst. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
IN NS      ns1.example.tst.
1       IN PTR  mail.example.tst.
2       IN PTR  www.example.tst.
3       IN PTR  ns1.example.tst.

说明:除了下面的参数外,反向区域文件中的大多数参数和转发区域文件中的相同。

  • PTR: IP反向解析记录,指向一个反向限定域名。

结束工作

既然区域文件已经准备好,我们接下来调整它们的权限。

非chroot环境:

# chgrp named /var/named/*

chroot环境:

# chgrp named /var/named/chroot/var/named/*

现在,我们为DNS服务器设置IP地址。

# vim /etc/resolv.conf 

 

nameserver 172.16.1.3

最后,我们可以启动DNS服务,并确保将它添加到启动服务中。

# service named restart
# chkconfig named on

DNS服务器起动后,建议关注一下日志文件/var/log/messages,这里头包含了后台运行的一些有用信息。如果没有发现错误,我们可以开始测试DNS服务器。

测试DNS

我们可以使用dig或者nslookup来测试DNS。首先,我们需要安装必要的软件包。

# yum install bind-utils

1. 使用dig测试转发区域

使用dig来测试时,必须时刻关注状态信息:“NOERROR”,任何其它值都表明存在问题。

# dig example.tst

;; ->>HEADER<<- opcode: QUERY,  status: NOERROR, id: 31184
;; QUESTION SECTION:
;example.com.                   IN      A
;; ANSWER SECTION:
example.com.            86400   IN      A       172.16.1.3
;; AUTHORITY SECTION:
example.com.            86400   IN      NS      ns1.example.com.
;; ADDITIONAL SECTION:
ns1.example.com.        86400   IN      A       172.16.1.3

2. 使用dig测试PTR记录

使用dig来测试时,必须时刻关注状态信息:“NOERROR”,任何其它值都表明存在问题。(译注,也可用 dig 1.1.16.172.in-addr.arpa. ptr 来测试。)

# dig -x 172.16.1.1

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27415
;; QUESTION SECTION:
;1.1.17.172.in-addr.arpa.       IN      PTR
;; ANSWER SECTION:
1.1.16.172.in-addr.arpa. 86400  IN      PTR     mail.example.tst.
;; AUTHORITY SECTION:
1.16.172.in-addr.arpa.  86400   IN      NS      ns1.example.tst.
;; ADDITIONAL SECTION:
ns1.example.tst.        86400   IN      A       172.16.1.3

3. 使用dig测试MX记录

# dig example.tst mx

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35405
;; QUESTION SECTION:
;example.tst.                        IN      MX
;; ANSWER SECTION:
example.tst.         14366   IN      MX     10  mail.example.tst.

排错提示

  1. 我已经把SELinux关闭。
  2. 保证防火墙没有阻挡UDP 53端口
  3. 万一出错,可在/var/log/messages中查看到有用的信息
  4. 确保区域文件的属主为‘named’
  5. 确保DNS服务器的IP地址是/etc/resolv.conf中的第一条目
  6. 如果你使用example.tst作为实验环境,确保将服务器从互联网断开,因为example.tst是一个不存在的域。

最后小结,该教程关注的是实验环境中配置example.tst域用作为演示。请注意,该教程中创建了一台公共DNS服务器,此服务器会回应来自任何源IP地址的查询。如果你是在配置DNS生产服务器,请确保检查与公共DNS相关的策略。其它教程涵盖了创建从DNS服务器, 限制对DNS服务器的访问以及部署DNSSEC。

希望此教程对您有所帮助。


 

via: http://xmodulo.com/2014/04/primary-dns-server-using-centos.html

译者:GOLinux 校对:wxy

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

来源:https://linux.cn/article-3092-1.html

Linux:如何在CentOS中创建辅域名服务器

上篇教程里,我们为一个测试域exmample.tst创建了一个主域名服务器(ns1)。在本篇中,我们会在CentOS中使用bind包为相同的域创建一个辅域名服务器(ns2)。

Linux:如何在CentOS中创建辅域名服务器
Linux:如何在CentOS中创建辅域名服务器

当创建一个辅DNS服务器的时候,下面的因素需要仔细考虑。

  • 在辅域名服务器中,你不需要手动创建正向和反向区域文件。这些区域文件会定期从主域名服务器上面同步。
  • 当主域名服务器上的任何区域文件被修改的时候,’serial’参数也应当被更新。只有当主服务器上面区域文件的serial被修改之后,辅DNS服务器才会进行同步。

我们假设辅DNS服务器的IP地址是172.16.1.4。让我们来进行安装。

设置主机名

就像主域名服务器一样,辅域名服务器的主机名也应当是一个完全限定域名(FQDN)。

# vim /etc/sysconfig/network

 

HOSTNAME=ns2.example.tst

注意,在该文件中设置的主机名在服务器启动的时候会被使用。因此,如果你在系统启动之后修改该文件,修改结果不会立刻生效。下面的命令可以用来在系统运行的时候修改并及时生效。

# hostname ns2.example.tst

设置之后,可以用下面的命令来查看主机名称。

# hostname

ns2.example.tst

在进行下面的步骤之前,确保所有三台服务器的主机名称已经被正确设置。

安装软件包

就像主服务器一样,配置一台辅域名服务器可以使用chroot或者不用。必须的软件包可以使用yum轻松安装。

不使用 chroot:

# yum install bind

使用 chroot:

# yum install bind-chroot

为区域文件的传输准备配置文件

在CentOS中使用bind创建域名服务器后,默认设置允许所有的区域文件被任意服务器同步。安全起见,我们需要配置主域名服务器,只允许它允许辅域名服务器进行同步。

1. 主域名服务器

不使用chroot:

# vim /etc/named.conf

使用chroot:

# vim /var/named/chroot/etc/named.conf

zone "example.tst" IN {
    type master;
    file "example-fz"; ## 文件example-fz在主域名服务器上 ##
    allow-update { none; };
    allow-transfer {172.16.1.4; }; ## 允许辅域名服务器进行传输 ##
};
zone "1.16.172.in-addr.arpa" IN {
    type master;
    file "rz-172-16-1"; ##文件rz-172-16-1在主域名服务器上##
    allow-update { none; };
    allow-transfer {172.16.1.4; }; ## 允许辅域名服务器进行传输 ##
};

2. 辅域名服务器

软件安装后提供的默认配置文件就可以用来配置辅域名服务器。但是,我们使用会使用另外一个实例配置文件来进行配置,因为这样便于调整。

不使用chroot:

# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /etc/named.conf

使用chroot:

# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /var/named/chroot/etc/named.conf

当执行完上面的命令进行文件拷贝后,添加下面的内容到刚才那个拷贝后的文件中。

options {
        directory "/var/named";
        forwarders {8.8.8.8; };
};
zone "example.tst" IN {
        type slave;  ## 该主机为辅域名服务器 ##
        file "example-fz"; ## 这个文件会被自动创建 ##
        //allow-update { none; };
        allow-transfer {172.16.1.3; };  ## 定义必要时进行从其传输的主域名服务器 ##
        masters {172.16.1.3; }; ## 定义主域名服务器 ##
};
zone "1.16.172.in-addr.arpa" IN {
        type slave; ## 该主机被定义为辅域名服务器 ##
        file "rz-172-16-1"; ## 这个文件会被自动创建 ##
//      allow-update { none; };
        allow-transfer {172.16.1.3; };  ## 定义主域名服务器 ##
        masters {172.16.1.3; };
};

结束工作

为了确保没有权限相关的问题,我们需要做如下调整。

不使用chroot:

chmod 770 /var/named/

使用chroot,你需在named服务启动后按照下面的命令修改权限。

# chmod 770 /var/named/chroot/var/named

现在万事俱备,我们可以重启named服务。或者,确保named服务已经被加到了开始列表中。

# service named restart
# chkconfig named on

如果不出意外,辅域名服务器应该会向主域名服务器请求一个区域的传输,并且产生自己的/var/named目录。日志文件/var/log/messages会包含一些named服务的有用信息,包括区域文件传输过程中的信息。

测试一个辅域名服务器

我们可以使用dig或者nslookup进行DNS测试操作。在本篇教程中我们会使用nslookup来进行演示。必要的软件包可以通过yum进行安装。

# yum install bind-utils
# nslookup

> server 172.16.1.4
Default server:     172.16.1.4
Address:            172.16.1.4#53
> example.tst
Server:             172.16.1.4
Address:    172.16.1.4#53
Name:       example.tst
Address:    172.16.1.3
> set type=mx
> example.tst
Server:             172.16.1.4
Address:            172.16.1.4#53
example.tst         mail exchanger = 10 mail.example.tst.
> exit

排错提示

  1. 我们无需在辅域名服务器上创建任何区域文件。所有的区域文件都会与主域名服务器进行同步。

  2. 辅域名服务器上的named服务会定期与主服务器进行同步。如果你想来一次及时的同步,可以使用命令”rncd retransfer “。如下:

    # rndc retransfer example.tst
    
  3. 只有当主服务器上区域文件的serial数字被修改变大的时候,辅域名服务器才会进行更新。

  4. 确保用户named可以对文件夹/var/named或者/var/named/chroot/var/named(使用chroot的情况下)进行写操作。

  5. /var/log/messages会包含有用的信息。

  6. 我已经将SELinux关闭了。

  7. 确保防火墙对UDP53端口开放。

希望这个可以帮到你。


via: http://xmodulo.com/2014/04/secondary-dns-server-centos.html

译者:zzlyzq 校对:wxy

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

来源:https://linux.cn/article-3093-1.html

Linux:戴文的Linux内核专题:23 配置内核 (19)

Linux:戴文的Linux内核专题:23 配置内核 (19)
Linux:戴文的Linux内核专题:23 配置内核 (19)

欢迎进入Linux内核系列文章的下一篇!我们正在接近配置过程的终点。在这篇文章中,我们将会讨论固件驱动和文件系统驱动。

这个分类中的第一个驱动是寻找启动盘(BIOS Enhanced Disk Drive calls determine boot disk)。有时,Linux不会知道哪个盘是启动盘。这个驱动允许内核询问BIOS。Linux接着在sysfs上存储信息。Linux需要知道这些来设置bootloader。

即使BIOS EDD服务被编译进了内核,这个选项可以设置这些服务不激活(Sets default behavior for EDD detection to off )。EDD代表的是”Enhanced Disk Drive”(增强磁盘驱动器)。

当使用kexec加载不同的内核时,性能可以通过固件提供的内存映射提升(Add firmware-provided memory map to sysfs)。

“Dell Systems Management Base Driver”通过sysfs接口提供了Linux内核对于Dell硬件的更好的控制。

启用这个驱动可以通过/sys/class/dmi/id/访问硬件的信息(Export DMI identification via sysfs to userspace)。DMI代表的是Desktop Management Interface(桌面管理接口)。DMI管理硬件的组件和访问硬件的数据。BIOS中数据的接口和硬件由SMBIOS(System Management BIOS)规范调节。

从DMI得到的原始数据表可以通过这个驱动访问(DMI table support in sysfs)。

为了从iSCSI驱动器中启动,启用这个驱动(DMI table support in sysfs)。

最后的驱动是一组”Google Firmware Drivers”。这些驱动用于Google特定的硬件。除非你为Google工作并且需要在硬件上使用Linux或者你在为一台从Google偷来的电脑编译内核,否则不要启用它。

下面,我们可以配置内核的文件系统支持。

“Second extended fs support”驱动用于EXT2文件系统。http://www.linux.org/threads/ext-file-system.4365/

Linux:戴文的Linux内核专题:23 配置内核 (19)
Linux:戴文的Linux内核专题:23 配置内核 (19)

“Ext2 extended attributes”提供了原生文件系统不支持的额外的元数据的使用。

“Ext2 POSIX Access Control Lists”增加了额外的非原生的权限模型。

“Ext2 Security Labels”增强了由SELinux提供的安全性。

启用”Ext2 execute in place support”允许可执行文件在当前的位置执行而不必在页缓存中执行。

这个驱动提供EXT3文件系统(Ext3 journaling file system support)。 http://www.linux.org/threads/ext-file-system.4365/

“Default to ‘data=ordered’ in ext3″驱动设置数据的排序模式为”Ordered”。这种处理方式为日志和写入工作。数据排序在这篇文章中解释 – http://www.linux.org/threads/journal-file-system.4136/

“Ext3 extended attributes”提供了原生文件系统不支持的额外的元数据使用。再说一次,接下来的EXT3的驱动/特性与EXT2相同 – “Ext3 POSIX Access Control Lists” 和 “Ext3 Security Labels”。同样,对接下来的EXT4也是相同的 – “Ext4 POSIX Access Control Lists”、”Ext4 Security Labels” 和 “EXT4 debugging support”。

EXT3和EXT4支持日志块设备调试(JBD debugging support),(JBD2 debugging support)。

下面的驱动提供Reiser文件系统支持(Reiserfs support)。 http://www.linux.org/threads/reiser-file-system-reiser3-and-reiser4.4403/

Reiser文件系统也有调试(Enable reiserfs debug mode)。

内核可以存储ReiserFS统计在/proc/fs/reiserfs (Stats in /proc/fs/reiserfs)。

下面的Reiser驱动/特性与EXT2/3/4相同 – ReiserFS extended attributes”, “ReiserFS POSIX Access Control Lists” 和 “ReiserFS Security Labels”.

Linux内核同样支持JFS,同时也包含了不同的特性 “JFS filesystem support”、 “JFS POSIX Access Control Lists”、”JFS Security Labels”、”JFS debugging” 和 “JFS statistics”. http://www.linux.org/threads/journaled-file-system-jfs.4404/

再说一次,XFS可以通过启用这些驱动/特性支持 – “XFS filesystem support”、”XFS Quota support”、”XFS POSIX ACL support”、”XFS Realtime subvolume support” 和 “XFS Debugging support”。 http://www.linux.org/threads/xfs-file-system.4364/

“Global FileSystem 2″可以被内核支持(GFS2 file system support)。这个文件系统用于在集群中共享存储。

“GFS2 DLM locking”驱动提供了GFS2的分布式锁管理(DLM)

“Oracle Cluster FileSystem 2″被内核支持(OCFS2 file system support)。这个文件系统用于在集群中共享存储。

“O2CB Kernelspace Clustering”提供了OCFS2文件系统的不同服务。

“OCFS2 Userspace Clustering”允许集群栈在用户空间执行。

“OCFS2 statistics”驱动允许用户得到关于文件系统的统计信息。

像大多树Linux内核一样,OCFS2提供日志(OCFS2 logging support)。这可能被用来监视错误或者调试目的。

“OCFS2 expensive checks”驱动以性能为代价提供了存储一致性检测。一些Linux用户建议只有在调试目的在才启用它。

Linux内核同样包含了新的B树文件系统;这个驱动提供了磁盘格式化程序(Btrfs filesystem Unstable disk format)。BTRFS仍在开发中并被计划某天变的比EXT4更流行。http://www.linux.org/threads/b-tree-file-system-btrfs.4430/

“Btrfs POSIX Access Control Lists”提供了额外的原生BTRFS没有提供的权限模型。

下面,是一个BTRFS检测工具(Btrfs with integrity check tool compiled in (DANGEROUS))。由于BTRFS是一个最新在开发中的文件系统,大多数相关软件还并不稳定。

Linux系统也支持NIL-FileSystem(NILFS2 file system support)。http://www.linux.org/threads/new-implementation-of-a-log-structured-file-system-nilfs.4547/

为了支持一些文件系统使用到的flock()系统调用,启用这个驱动(Enable POSIX file locking API)。禁用这个去的那个会减少11KB的内核大小。这个驱动提供了文件锁定。文件锁定是一个允许进程在某刻读取文件的过程。这通常用于网络文件系统,就像NFS。

“Dnotify support”驱动是一个古老的文件系统通知系统,它提醒文件系统上的事件的用户空间。它和它的继承者被用于监控应用的文件系统。某个应用告诉守护进程需要监视哪些事件。不然,每个用户空间应用需要它们自己完成这个任务。

记住,Dnotify是一个古老的系统,那么什么是新的通知系统?它就是由这个驱动提供的Inotify (Inotify support for userspace)。

一个可选的通知系统是fanotify (Filesystem wide access notification)。Fanotify与Inotify一样,但是fanotify比Inotify传递更多的信息到用户空间中。

用这个驱动Fanotify可以检测权限(fanotify permissions checking)。

对于用户想要划分存储空间的系统需要 “Quota support”。 http://www.linux.org/threads/atomic-disk-quotas.4277/

接下来的驱动允许通过netlink报告磁盘配额警告和信息(Report quota messages through netlink interface)。netlink是一个用于与内核通信的用户空间的套接字接口。

配额信息同样可以发送到控制台(Print quota warnings to console (OBSOLETE))。

这个驱动允许配额系统执行额外的完整性检查(Additional quota sanity checks)。在计算机技术中,完整性检查是检测由于不良编程导致的错误。文件和输出都被检查来确保数据正确而不是以奇怪的方式构造。

一些旧的系统使用老的配额系统但希望在升级新内核时保留旧的配额系统。可以通过启用这个来容易解决(Old quota format support)。许多读者可能想要知道为什么一些人想要保留旧的配额系统而不是更新新的。好的,想想一下你是一家很大公司的IT部门的经理,公司有许多服务器运行着非常重要的任务。当你可以继续使用现在工作的很好的系统,你想要创建并配置一个新的(也可能很大)的文件系统么? 通常上,对于计算机,坚持下面的原则 – 如果它没有坏或者不会导致安全问题,不要去修复它。

用这个驱动,新的配额系统支持32位UID和GID(Quota format vfsv0 and vfsv1 support)。

为了自动挂载远程存储单元,启用这个驱动(Kernel automounter version 4 support)。

这个驱动支持FUSE文件系统(FUSE (Filesystem in Userspace) support)。用户空间文件系统(FUSE)支持任何用户创建他们自己的文件系统并在用户空间内使用。

一个特殊的FUSE扩展可以用于在用户空间使用字符设备Character device in Userspace support)。

下一篇文章中,我们会继续讨论缓存,光盘文件系统,Linux上的FAT32和其他有趣的文件系统话题。谢谢!


via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-19.4929/

译者:geekpi 校对:wxy

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

来源:https://linux.cn/article-3099-1.html

Linux:戴文的Linux内核专题:24 配置内核 (20)

欢迎进入Linux内核系列文章的下一篇!本篇我们继续配置文件系统。

首先,我们启用”General filesystem local caching manager”,它允许内核存储文件系统缓存。这可以增加在存储空间开销上的性能。

为了调试目的,缓存系统可以通过统计信息监控(Gather statistical information on local caching)。通常上,这个特性应该只在你计划调试的时候启用。

下面的特性很像上面的,但是这个特性存储延迟信息(Gather latency information on local caching)。再说一次,这是个调试特性。

“Debug FS-Cache”提供了很多其他的缓存系统的调试功能。

下面的缓存调试工具会保存文件系统缓存对象的全局列表(任何进程可以访问这个列表)(Maintain global object list for debugging purposes)。

为了增强网络文件系统的速度,启用接下来的驱动(Filesystem caching on files)。这个特性允许整个本地文件系统被用于远程文件系统和存储单元的缓存。Linux内核会管理这个分区。

有两种不同的用于调试的驱动可用于本地缓存系统和远程文件系统,它们是(Debug CacheFiles)和(Gather latency information on CacheFiles)。

大多数通常的光盘文件系统是ISO 9660标准的ISO-9660,故名(ISO 9660 CDROM file system support)。这个驱动用于读/写主流的光盘。

当读取光盘中的长Unicode文件名或者这类文件时,需要这个驱动(Microsoft Joliet CDROM extensions)。这是ISO-9660文件系统的扩展。

“Transparent decompression extension”允许数据以压缩形式写入并以透明方式解压读出。这允许光盘上存放更多的数据。

“UDF file system support”允许内核读/写UDF文件系统的可重写光盘。UDF被设计用来管理增量写入。UDF允许光盘思想闪存盘那样使用。系统可以比常规ISO-9660文件系统写入的光盘更快地写入以及更新。然而,这并不比使用闪存快。

如你所知,Windows是一个很流行的系统。有很多存储器使用FAT文件系统。万幸的是,Linux支持这样的文件系统。这会明显地增加内核的大小,但是既然FAT文件系统是如此的通用,那么这点开销也是值得的。

为了支持FAT文件系统,启用这个驱动(VFAT (Windows-95) fs support)。在写本篇的时候。驱动还不支持FAT64(通常成为exFAT)。

代码页的大小可以在这里设置(Default codepage for FAT)。

在此之后,可以设置FAT文件系统的默认字符集(Default iocharset for FAT)。

NTFS文件系统在这个驱动提供支持(Default iocharset for FAT)。驱动提供了只读特性。为了写入NTFS,启用这个驱动(NTFS write support)。

Linux内核提供了NTFS文件系统的调试工具(NTFS debugging support)。

要在root根目录下有个proc目录,必须启用这个特性(/proc file system support)。一些其他相似的驱动依赖于这个,包括(/proc/kcore support)、(/proc/vmcore support)和 (Sysctl support (/proc/sys))。proc系统(“process”的缩写)使用的proc文件系统有时称作procfds。这个文件系统在硬件的内存中,并在启用时创建。因此,当你在浏览proc中的文件时,用户仿佛像在其他存储单元上那样浏览内存。proc扮演一个用户空间和内核空间之间接口的角色。proc是在内核空间。

“Enable /proc page monitoring”提供了一些文件监视进程的内存利用。

“sysfs file system support”创建/sys文件加。sys文件系统在内存中并提供了内核对象的接口。

tmp目录被许多应用需要,包括Linux自己,因此强烈建议启用这个驱动(Tmpfs virtual memory file system support (former shm fs))。tmp文件系统可能存储在硬盘或者内存中,并只被用于存储临时文件。

Tmpfs POSIX Access Control Lists”驱动tmpfs虚拟文件系统额外的文件权限特性。

“Tmpfs extended attributes”提供了通常的tmpfs更多的属性。

“HugeTLB file system support”驱动提供了基于ramfs的hugetlbfs文件系统。这个虚拟文件系统包含了HugeTLB页。

configfs文件系统是一个以文件系统形式存在的内核对象管理器(Userspace-driven configuration filesystem)。强烈建议启用这个驱动。ConfigFS很像sysfs。然而,ConfigFS被用于创建和删除内核对象,而sysfs被用于浏览和修改内核对象。

下面,我们可以回到”真正”的文件系统了。那就是用户用来存放他们个人文件的文件系统。下面,内核能够读取ADFS文件系统(ADFS file system support)。

AFDFS文件系统写入被一个独立且不稳定的驱动提供 (ADFS write support (DANGEROUS))。ADFS代表Advanced Disc Filing System(高级光盘归档系统)。

Linux同样支持Amiga快速文件系统(Amiga FFS file system support)。 http://www.linux.org/threads/amiga-fast-file-system-affs.4429/

“eCrypt filesystem layer support”提供了POSIX兼容的加密文件系统层。这个eCrypt可以 用于任何文件系统无论驻留的文件系统分区表是什么。http://www.linux.org/threads/intro-to-encryption.4376/

eCrypt层可以有一个设备文件如果启用了这个驱动(Enable notifications for userspace key wrap/unwrap)。设备路径是/dev/ecryptfs。

Linux同样支持HFS和HFS+(Apple Macintosh file system support)和(Apple Extended HFS file system support)。http://www.linux.org/threads/hierarchical-file-system-hfs.4480/http://www.linux.org/threads/hierarchical-file-system-plus-hfs.4493/

BeFS可以在Linux上作为只读文件系统使用(BeOS file system (BeFS) support (read only))。通常上,编写读取特性比编写写入能力简单。

特殊的BeFS调试特性(Debug BeFS)。

EFS是另外一个Linux只读不写的文件系统。 (EFS file system support (read only)). http://www.linux.org/threads/extent-file-system-efs.4447/

一些闪存可能使用JFFS2文件系统(Journalling Flash File System v2 (JFFS2) support)。下面,可以设置调试层 (JFFS2 debugging verbosity)。 http://www.linux.org/threads/journaling-flash-file-system-version-2-jffs2.4495/

为了在NAND和NOR闪存上使用JFFS2,需要这个驱动(JFFS2 write-buffering support)。

下面的驱动提供了更好的错误保护(Verify JFFS2 write-buffer reads)。

启用”JFFS2 summary support”可以更快挂载JFFS文件系统。这个驱动存储文件系统的信息。

像其他的文件系统的扩展/额外属性驱动一样,JFFS2也有这种驱动(JFFS2 XATTR support)。

JFFS2文件系统支持不同的透明压缩系统。这允许JFFS2系统上的文件更小,并且在读取时不需要用户任何特殊的操作。 (Advanced compression options for JFFS2)、 (JFFS2 ZLIB compression support)、(JFFS2 LZO compression support)、(JFFS2 RTIME compression support) 和 (JFFS2 RUBIN compression support)。默认的压缩格式定义在下面的选项中(JFFS2 default compression mode)。

JFFS2的继任者也被Linux内核支持(UBIFS file system support)。无排序块图像文件系统(Unsorted Block Image File System (UBIFS)) 同样与LogFS竞争。

Linux内核同样支持LogFS(LogFS file system)。

基于ROM的嵌入式系统需要CramFS的支持(Compressed ROM file system support (cramfs))。

此外,嵌入式系统可以使用SquashFS,这是一种只读压缩文件系统(SquashFS 4.0 – Squashed file system support)。Linux内核也支持SquashFS的扩展属性(Squashfs XATTR support)。

SquashFS支持三种不同的压缩格式 (Include support for ZLIB compressed file systems)、(Include support for LZO compressed file systems) 和 (Include support for XZ compressed file systems)。SquashFS的块大小可以设置为4KB (Use 4K device block size?)。同样,可以设置缓存大小(Additional option for memory-constrained systems)。

Linux内核支持 FreeVxFS (FreeVxFS file system support (VERITAS VxFS(TM) compatible))、 Minix (Minix file system support)、 MPEG filesystem (SonicBlue Optimized MPEG File System support)、 HPFS (OS/2 HPFS file system support)、 QNX4 (QNX4 file system support (read only))、 QNX6 (QNX6 file system support (read only)) 和 ROM 文件系统 (ROM file system support)。 http://www.linux.org/threads/qnx-file-systems.4577/ and http://www.linux.org/threads/minix-mini-unix-file-system.4545/

“RomFS backing stores (Block device-backed ROM file system support)”提供了ROMfs不同额外的属性和能力的列表。

“Persistent store support”驱动提供对pstore文件系统的支持,这允许访问平台级的持久性存储。

pstore文件系统可以存储内核日志/消息(Log kernel console messages)。

当内核崩溃时(相当于Windows中的蓝屏死机),”Log panic/oops to a RAM buffer”会在RAM中存储日志。

下面一个驱动提供对Xenix、 Coherent、Version 7 和 System V 文件系统的支持(System V/Xenix/V7/Coherent file system support)。

Linux内核同样支持UFS(UFS file system support (read only))、 (UFS file system write support (DANGEROUS)) 和 (UFS debugging)。

内核也支持exofs(exofs: OSD based file system support)。

flash友好型文件系统(Flash-Friendly FileSystem)是一种对于闪存设备的特殊文件系统(F2FS filesystem support (EXPERIMENTAL))、 (F2FS Status Information )、 (F2FS extended attributes) 和 (F2FS Access Control Lists). http://www.linux.org/threads/flash-friendly-file-system-f2fs.4477/

下篇文章我们将配置网络文件系统。谢谢!


via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-20.4957/

译者:geekpi 校对:wxy

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

来源:https://linux.cn/article-3100-1.html

Linux:Linux Shell脚本的10个有用的“面试问题和解答”

首先致上每日问候。Linux的浩瀚无垠,使人总能每次都提交与众不同的内容。我们“The-Tecmint-Team”的工作是给我们的读者提供一些独特的内容,这些内容不仅对他们的职业生涯很有用,同时也让他们增长知识。在此,我们就尝试这么去做,至于能取得多大的成功,就由我们的读者朋友们来判断吧。

Linux:Linux Shell脚本的10个有用的“面试问题和解答”
Linux:Linux Shell脚本的10个有用的“面试问题和解答”

我们为各类用户提供了关于Shell脚本语言和面试问题的很多教程,可以访问以下链接去阅读这些文章。

在此,作为shell脚本的附加内容,在本文中我们将从面试的角度解读与Linux Shell相关的问题。

1. 在shell脚本成功执行前,如何中断脚本执行?

解答:我们需要使用‘exit’命令来实现以上描述的情境。‘exit’命令被强制输出非0值时,脚本会报错并退出。在Unix环境下的shell脚本中,0值表示成功执行。因此,在脚本终止前执行一个不带引号的‘exit -1’命令将使脚本中止。

例如,创建以下一个名为“anything.sh”的脚本。

#!/bin/bash
echo "Hello"
exit -1
echo "bye"

保存文件并执行。

# sh anything.sh
Hello
exit.sh: 3: exit: Illegal number: -1

从上面的脚本中可以清楚地看到,在exit -1命令前,脚本执行得很好。

2. 如何使用Linux命令来移除文件头?

解答:当我们需要删除文件中的指定行时,‘sed’命令可以用来解决该问题。

这个是用来删除文件头(文件的首行)的正确命令。

# sed '1 d' file.txt

上面命令的问题是,它会在标准输出设备上输出不带首行的文件内容。为了保存输出到文件,我们需要使用重定向操作符,它将帮助你将输出重定向到文件。

# sed '1 d' file.txt > new_file.txt

好吧,其实sed命令内建的‘-i’开关就可以干这活,就不需要重定向符了吧。

# sed -i '1 d' file.txt

3. 你怎么检查一个文本文件中某一行的长度?

解答:‘sed’命令也可以用来查找文本文件中的某一行或者检查其长度。

sed -n ‘n p’ file.txt’可以解决,这里‘n’表示行号,‘p’打印出匹配内容(到标准输出),该命令通常与-n命令行选项连用。那么,怎样来获取长度计数呢?很明显,我们需要通过管道输出给‘wc’命令来计算。

# sed –n 'n p' file.txt | wc –c

要得到文本文件‘tecmint.txt’的第五行的长度,运行如下命令:

# sed -n '5 p' tecmint.txt | wc -c

4. 可以在Linux系统上查看到所有非打印字符吗?你是怎么做到的?

解答:可以。可以在Linux中查看所有的非打印字符。要实现上面所讲的方案,我们需要‘vi’编辑器的帮助。 怎样在‘vi’编辑器中显示非打印字符?

  • 打开vi编辑器。
  • 先按[esc]键,然后按‘:’进入到vi编辑器的命令模式。
  • 最后,从‘vi’编辑器的命令界面输入set list命令并执行。

: 这种方式可以查看文本文件中的所有非打印字符,包括ctrl+m(^M)

5. 假如你是一个员工组的团队领导,为xyz公司工作。公司要求你创建一个‘dir_xyz’目录,让该组成员都能在该目录下创建或访问文件,但是除了文件创建者之外的其他人不能删除文件,你会怎么做?

解答:这真是个有趣的工作方案。好吧,上面所讲的方案,我们需要通过下面的步骤来实施,这简直就是小菜一碟。

# mkdir dir_xyz
# chmod g+wx dir_xyz
# chmod +t dir_xyz

第一行命令创建了一个目录(dir_xyz),上面的第二行命令让组(g)具有‘写’和‘执行’的权限,而上面的最后一行命令——权限位最后的‘+t’是‘粘滞位’,它用来替换‘x’,表明在这个目录中,文件只能被它们的拥有者、目录的拥有者或者是超级用户root删除。

6. 你能告诉我一个Linux进程经历的各个阶段吗?

解答:一个Linux进程在它的一生中,通常经历了四个主要阶段。

这里是Linux进程要经历的四个阶段。

  • 等待:Linux进程等待资源。
  • 运行:Linux进程当前正在执行中。
  • 停止:Linux进程在成功执行后或收到杀死进程信号后停止。
  • 僵尸:如果该进程已经结束,但仍然留在进程表中,被称为‘僵尸’。

7. Linux中cut命令怎么用?

解答:‘cut’是一个很有用的Linux命令,当我们要截取文件的指定部分并打印到标准输出,当文本区域以及文件本身很大时,这个命令很有用。

例如,截取‘txt_tecmint’文件的前10列。

# cut -c1-10 txt_tecmint

要截取该文件中的第二,第五和第七列。

# cut -d;-f2 -f5 -f7 txt_tecmint

8. ‘cmp’和‘diff’命令的区别是什么?

解答:‘cmp’和‘diff’命令用来获取相同的东西,但各有侧重。

diff’命令输出为了使两个文件一样而应该做的修改。而‘cmp’命令则将两个文件逐字节对比,并报告第一个不匹配的项。

9. 可以用‘echo’命令来替换‘ls’命令吗?

解答:可以的。‘ls’命令可以用‘echo’命令来替代。‘ls’命令列出目录内容,从替换上述命令的角度讲,我们可以使用‘echo *’,两个命令的输出完全一样。

10. 你可能听过inode吧。你能简要描述一下inode吗?

解答:‘inode’是一个‘数据结构’,在Linux上用于文件标识。每个文件在Unix系统上有一个独立的‘inode’和一个‘唯一的’inode号。

到此为止吧。在下一篇文章中,我们将讨论另外一些有趣味性而又有知识性的面试问题。到那时,别跑开,请上Tecmint.com,别忘了在下面的评论部分给我们提供一些有价值的反馈哦。


via: http://www.tecmint.com/interview-questions-on-shell-scripting/

译者:GOLinux 校对:wxy

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

来源:https://linux.cn/article-3101-1.html

Linux:Ubuntu Touch 和 Android 双系统安装官方指南

(译注:本文译自Ubuntu官方维基

Ubuntu 双系统安装器是作为技术预览版本发布给开发者的,可以使得开发者同时在一台手机上安装 Ubuntu 系统和 Android 系统。该软件现阶段或最终的目标用户并非普通用户。开发者应该熟悉 Ubuntu 和 Android 系统的分区布局并且在出现问题的时候有能力手动刷回分区。

Ubuntu 双系统安装器是一些工程师花了一点时间内做出的一个内部臭鼬项目(译注:管理层不知的研究项目)。由于项目进展良好,所以决定向开发者社区发布预览版以供大家测试、学习或者完善。

双系统启动不是常规 Ubuntu 发布版本中的一部分。

Linux:Ubuntu Touch 和 Android 双系统安装官方指南
Linux:Ubuntu Touch 和 Android 双系统安装官方指南

安装后可实现以下功能

  • 一台可以在全功能的 Android 和 Ubuntu 系统之间切换的手机
  • Android 系统上:一个 Ubuntu Installer 应用,用来安装 Ubuntu 系统和切换到 Ubuntu 系统
  • Android 系统上:一个 SuperUser 超级用户管理器,用来为 Ubuntu 安装器授予权限
  • Ubuntu 系统上:一个 Ubuntu Dual Boot 应用,用来启动到 Android 系统
  • 尚不支持在 Ubuntu 系统下的更新,但可以通过 Android 下的应用程序来进行系统更新

必要条件

安装双系统启动,你需要:

  • 一台Nexus 4 手机 (其他 支持的 Nexus 手机 理论上也能安装,但是现在还没有经过测试。)
  • 手机安装 Android 4.4.2 或者更高的系统版本 ,基于原厂固件或者 CyanogenMod 和 AOSP 的固件。
  • 手机上需要有 2.7GB 剩余存储空间 用来安装Ubuntu。
  • 桌面电脑上需要运行 ADB 工具
  • 手机应该 解锁 bootloader 并打开 USB 调试选项。按照安装步骤1到3来实现。如果你的手机已经解锁过 bootloader 并且打开了 USB 调试选项了,这一步可以跳过>

步骤 1 – 桌面电脑设置

为了连接手机并刷机,在电脑桌面上依照以下几步操作。

设置Touch开发者预览工具(Touch Developer Preview Tools)的 PPA

这些 PPA 是一个迷你库,其中包含安装过程中需要的一些额外软件。以下描述如何去启用和使用它。

这些 PPA 的包含工具和依赖库支持各个 Ubuntu 发行版,包括 12.04, 12.10, 13.04, 13.10 和 14.04等。 将以下的源地址列表加入 /etc/apt/sources.list 文件中来添加 Ubuntu Touch PPA。

在你的机器上按 Ctrl+Alt+T 开启终端窗口,运行以下命令。

sudo add-apt-repository ppa:phablet-team/tools

在 Ubuntu 12.04系统上,还需要运行以下命令:

sudo add-apt-repository ppa:ubuntu-sdk-team/ppa

然后运行:

sudo apt-get update
sudo apt-get install ubuntu-device-flash

步骤 1.5 – 备份Android(可选)

  • 确认开启开发者模式。点击 设置 -> 关于手机 -> 版本号 (点击七次)
  • 确认开启 USB 调试模式。点击 设置 -> 开发者选项 -> USB 调试
  • 在你的电脑上执行(译注:自然这是在Linux下,如Ubuntu里面执行的)

    $ adb backup -apk -shared -all
    

这样就将你的操作系统、应用程序和所有的数据备份为 backup.ab 文件了。以后在重新刷回 android 系统(或root、解锁等)的时候可以使用 $ adb restore backup.ab 命令恢复你所有的数据。

步骤 2 – 手机解锁

如果手机已经解锁,那么跳过步骤 3。以下几步将擦除手机上所有的个人数据。

  1. 关机,同时按住手机的开机键+音量上+音量下开机。
  2. 手机将开机到bootloader界面。
  3. 使用 USB 数据线将手机和电脑连接。
  4. 在电脑上按 Ctrl+Alt+T 打开一个终端。 键入 sudo fastboot oem unlock 并回车。
  5. 在手机上,接受解锁条款。
  6. 按开手机开机键开机。(屏幕上 Start 的箭头所向)

恢复手机出厂设置

如果解锁 bootloader 后不断重启的话… 可以使用以下方法解决:

  1. 在重启的过程中,同时按住 电源键+音量上+音量下 使得手机重返 fastboot 模式。
  2. 在 fastboot 模式下,使用音量键选择到 Recovery 选项后,按下开机键选中。
  3. 在 Recovery 模式下(Android 机器人 背景是个红色三角) 同时按住音量上键和开机键进入stock recovery 模式。再次强调,不要按住按钮不放,只是同时按他们。保证你按了正确的音量按钮。应该是右边的音量按钮的向上键。
  4. 一旦进入 Recovery 模式,恢复出厂设置并清空数据,然后重启平板,现在应该可以看到欢迎屏幕了。

步骤 3 – 初始化手机指南

按照以下步骤初始化手机

  1. 如果没有启动,启动手机进 Android 系统
  2. 启用手机的 USB 调试模式
    • 在冰激凌三明治 (版本 4.0) 上打开 USB 调试(设置 > 系统 > 开发者选项 > USB 调试)
    • 在果冻豆 (版本 4.1 和 4.2) 上打开 USB 调试,需要进 设置, 关于 [手机|平板] 菜单且点击版本号7次才能进入开发者选项。
    • 在 4.2.2, (设置 > 关于 > 点击版本号7次激活开发者选项菜单)
    • 在其他版本的 Android 系统中,你通过 设置 > 开发者选项 > USB 调试来启用 USB 调试模式。您也需要接受手机上的主机密钥。
    • 在工作站中 -> adb kill-server; adb start-server
  3. 将手机和电脑通过USB数据线连接起来。
    • 根据 Android 版本的不同,会弹出一个主机密匙的框,需要确认才能和电脑通信。
    • 注意,adb devices 命令不应该显示为手机 ‘offline’ 。如果显示手机离线,在超级用户模式下运行adb(sudo adb kill-server; sudo adb start-server),然后将手机再次连接。
    • 在某些情况下,手机仍然显示为离线,如果USB连接模式为 ‘MTP’ (一些手机或版本的Android的默认模式)的话,就不会弹出主机密匙提示对话框。取消所有的USB连接模式选项的勾选(设置 -> 存储 -> 菜单 -> USB连接 -> MTP, PTP)也许能解决adb连接问题。
  4. 记下现有手机镜像版本号,Android 系统,恢复系统时使用。可以使用 设置 > 关于手机 > 版本号码 查看版本号。

最新版的 Nexus 10s 开启开发者模式后并没有完全启动。如果是这种情况的话,启动到 bootloader 后运行 “fastboot -w” 然后进入下一步。

双系统启动安装和更新说明

双系统新安装和升级在这部分过程实际上是相同的。

在 Android 系统中安装 Ubuntu 安装器

注意:如果手机中有一个以前版本的 Ubuntu 双启动,更新前请首先使用 Android 应用程序卸载掉 Ubuntu 系统。推荐保存用户数据,只卸载掉基本的系统。

  1. 在电脑上下载双系统安装脚本到你的家目录。http://humpolec.ubuntu.com/latest/dualboot.sh
  2. 使用 Ctrl+Alt+T 组合键打开电脑终端。
  3. 运行以下命令赋予安装脚本可执行权限。

    chmod +x dualboot.sh
    
  4. 保证你的手机

    • 正常启动进入 Android 用户界面
    • 启用 USB 调试选项
    • 已经解锁了 bootloader
  5. 使用 USB 数据线连接手机和电脑

  6. 在终端里运行以下命令安装双系统启动:

    ./dualboot.sh
    

安装完成后,手机会重启数次。完成后,系统会启动到 Android 系统,你可以在手机的应用程序里面找到双启动应用程序 (“Ubuntu Dual Boot”) 。

或者,可以使用安装脚本的另一个替代方法,可以参考安装手册 >

现在按照以下说明在 Android 下安装 Ubuntu。

Android 下安装 Ubuntu

注意:Ubuntu 安装需要手机上具有2.7GB以上的剩余内存空间。

Linux:Ubuntu Touch 和 Android 双系统安装官方指南
Linux:Ubuntu Touch 和 Android 双系统安装官方指南
  1. 如果需要,也可以在手机和电脑USB连接状态下,终端运行以下命令来释放空间。(接受手机上的授权询问)

    adb shell "su sh rm -rf /cache/*"
    
  2. 在手机上,点击 apps 按钮打开 app 列表

  3. 查看列表找到 Ubuntu Dual Boot 图标并启动它

  4. 应用程序启动后按 Choose channel to install 并选择一个频道下载(推荐 utopic 频道),请确保您勾选了“bootstrap”选项

  5. 下载完成后需要授权 SU 权限给应用程序。提示授权的时候,选择 Grant 按钮

  6. Reboot to Ubuntu 按钮重启手机进入Ubuntu

  7. 标准手机重启过程后会启动到Android系统中

注意:

  • Ubuntu 安装器支持所有手机平板刷机工具(phablet-flash)支持的频道
  • 选择了一个 Ubuntu 频道后,bootstrap 复选框可以让你选择清空 Ubuntu 的用户数据,如果不选中的话,用户数据将一直保留。第一次安装的话,选不选是没什么区别的
  • 选中一个 Ubuntu 频道后,取消 latest version 复选框后可以选择一个特定版本号的镜像,否则,默认安装最新的镜像。
  • 如果在安装过程下载镜像过程中,手机锁屏或者 Ubuntu 安装器在后台运行的话,安装按钮会变成 Resume install (恢复安装)。点击这个按钮会恢复到超级权限提示前的状态。

来源:https://linux.cn/article-3104-1.html

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

不要相信任何人,自己建立一个VPN服务器来加密Web数据从而躲过他人的窥视

虽然免费、未加密的无线AP遍地都是,但是你不应该连接这些AP来登陆你的网银账户,除非你对他人的窥视毫不在意。那么对此的解决方案是什么呢?一个虚拟专用网,也就是VPN(virtual private network)。

一个VPN可以使你的私有网络拓展至公共场所,因此即使你连接着星巴克的 Wi-Fi,你的网络浏览仍然保持着安全的加密。

有很多方法来建立VPN,包括免费以及付费的服务,但是每个解决方案都有其的优点以及缺点,这取决于VPN服务商运作的方式和服务商提供的VPN选项。

最简单及最方便的保证数据安全的方法就是完全抛弃公共Wi-Fi。但是这个解决方案对于我来说有点极端了,一部分原因是在家里建立一个VPN服务器相对容易以及划算,你只需要一个便宜的($35)小型的树莓派。

我的树莓派与智能手机差不多大小,并且它拥有一个VPN服务器所有应有的功能。这意味着不管我在哪里,我可以通过安全的网络来连接在家里的电脑和家里的内网来访问共享的文件以及媒体。这个服务器在我最近去波士顿的旅途中使生活变得十分美好,在旅途中我仍然可以观看储存在家里台式机上的视频。

在这部分文章中,说实话我希望直接带给你们一个设置树莓派VPN的教程。问题是这个优秀教程并不存在,至少目前没有一个适合大部分电脑用户的优秀教程。虽然有无数关于如何搭建树莓派VPN的教程,但极少的教程会解释这么做的目的。

我阅读了不少教程,并把好的部分整合入了这半篇教程中,来教授读者如何搭建树莓派VPN服务器。这个教程甚至连我都能理解,并完成如何搭建和为何搭建的学习。最重要的是,我认为Eric Jodoin的VPN教程更适合那些专家,但它使我的大脑直接宕机了…

那么跟随我钻进加密法的兔子洞并且开始学习吧,无论你有多么多疑,提出了创造VPNs的那个人更正是如此。

材料

硬件

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

Raspberry Pi Model B:以及使其工作所需要的所有硬件-一个常规电源供电器和一个放置的小盒子。小盒子可以避免树莓派硬件意外短路而损坏-这个盒子甚至可以是一个自己折叠的纸板箱。

SD card:我建议8GB及以上的容量,只是来保证你有必要的储存空间。像所有树莓派项目一样,SD卡上应该要预装上NOOBS。

五类网线:这根网线将连接树莓派的以太网接口和你的路由器的以太网接口。

软件

Open VPN:这是一个开源VPN服务软件,我们今天就要安装它。

开始项目之前的准备

1) 你需要准备好NOOBS并且安装完Raspbian。我在"鱼缸管理"项目中对此做过一个一步步的教程。因此你也可以在那里查看。

2) 你需要为树莓派设置一个在你家内网中的静态IP地址。这一步骤取决于你路由器的型号,因此你可能需要阅读你的路由器的说明书来完成这一步。如果你还没有完成这一步,你可以参照ReadWrite的教程

3) 你需要启用SSH。我们需要通过SSH与树莓派进行连接,这是一个使我们能够从另一台电脑连接树莓派的工具。通过这种方法,我们在这个项目中不需要再为树莓派单独设置一个显示屏以及无线键盘。再提一下,看看ReadWrite的教程

4) 你需要将路由器的1194端口映射至树莓派的内网IP地址采用UDP协议,完成这一步的方法也决定于你路由器的型号,所以阅读路由器说明书吧。如果你想用另一个端口或TCP协议,没问题,只要将此教程中提及”UDP”的地方换为”TCP”,1194端口改为你需要的端口就行了。想必你也猜到了,ReadWrite为此也写了一篇教程

你可以从上文看出,我们现在在建立一些树莓派的基础概念,这也是为什么在树莓派上搭建VPN对初学者的第一个项目来说并不是适合。

简单的一些警告

我曾经喜欢直接拷贝网上教程中的代码,但是当我自己测试这篇教程时,我发现直接的复制粘贴代码会导致一些错误,原因是复制粘贴中出现的空行以及格式变化。如果你发现在此篇教程在实际操作时出现了一些问题,我的建议是先手动输入代码试试!

第一步

1) 启动并修改树莓派的密码。如果你还在使用树莓派的默认用户名(pi)和密码(respberry),那么接下来的安全教程就完全没有什么意义了。

打开一个terminal/PuTTY 窗口输入:

sudo passwd

将用户名以及密码修改地既好记并难猜(微软对此有一些建议),不然的话为什么要自找麻烦搭建一个私人网络呢?

2) 为了树莓派的安全来进行软件包的升级。输入如下两条命令:

sudo apt-get update
sudo apt-get upgrade

这应该不会花太多时间,而且为我们排除了之后可能会产生的问题。

3) 接下来我们需要这个开源软件(OpenVPN)了。输入:

sudo apt-get install openvpn
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

树莓派会询问确认,因为这用掉一点点储存空间。但是由于我们已经准备了一张8GB及以上的SD卡,我们对此完全没问题。

生成密钥

4) 你当然不想让任何发现你的VPN的人就可以连接,因此我们会为这个安全的地址准备一个来验证身份的密钥。这就像为你的家门准备一把锁一样。

OpenVPN自带了Easy_RSA,一个轻量并容易的使用RSA加密方法的包。发明于1977年,RSA是第一个沿用至今仍旧可用的加密系统。加密的密钥是公开的,解密的密钥是保密的。如果你听说过比特币的工作原理,这些对你来说应该十分熟悉。

通过使用Easy_RSA,你可以使用软件带有的算法来生成一个独一无二的密钥。

首先获得树莓派的系统权限,就是将命令提示符中的”pi@raspberrypi”转换成”root@raspberrypi”。

sudo -s

这句命令在现有的终端中再次创建了一个拥有root权限的终端实例。我们需要获得root权限的原因是,如果我们没有root权限,树莓派将不会允许我们创建密钥。

接下来,输入:

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0  /etc/openvpn/easy-rsa

在这句命令中,”cp”代表"复制",”r”代表递归。这说明我们让电脑执行:复制这个目录以及此目录下的所有文件结构及文件。

/2.0/etc中间的空格表示我们将第一个目录地址的文件(一个实例文件)拷贝至第二个目录地址,就是你让OpenVPN寻找密钥的地址。

cd /etc/openvpn/easy-rsa

5) 接下来,我们需要”cd”,改变所在目录(change directory),来放置我们生成的Easy_RSA文件。一旦完成这步,我们需要打开文件/etc/openvpn/easy-rsa/vars来编辑。我们可以使用nano: nano /etc/openvpn/easy-rsa/vars,由于我们已经在此目录下了,我们可以使用简写:

nano vars

Nano是Raspbian中内置的文件编辑工具,当然也有其他工具提供给屌丝们,不过我们将在此教程中只使用nano。

现在,将你的 EASY_RSA 变量改为:

export EASY_RSA="/etc/openvpn/easy-rsa"

对我的环境来说,这是在第13行。

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

为什么要修改这个变量呢?其实这是你在回答计算机的问题"你想让文件生成在哪里?"。在这个情况下,我们想要将其生成在我们保存key的同一个目录,在这里是easy-rsa文件树的顶层。

在vars文件中我们还可以做一件事,如果你对黑衣众们阅读你的邮箱这件事十分在意的话,你可以将加密方法从1024-bit改至2048-bit。在vars文件中,它明显的指出,"偏执狂请将此改为2048!"。

但是因为这个方法大大增长了生成密钥的时间,我们不会在这个教程中使用它。保持下面这个样子:

export KEY_SIZE=1024

按下Control+X来保存修改并退出nano。

加密

6) 现在该搭建CA证书和Root CA证书了。

在加密学中,一个授权机构(certificate authority (CA))是一个颁布电子证书的存在。电子证书来证明公钥的所有者。

你可能一直在使用它只是你自己不知道而已。举个例子,当我登陆我的网银账户时,我可以在网页地址前看到HTTPS字符。当我点击HTTPS前的锁时,我会看到一个叫做GeoTrust的公司验证了我网银页面的合法性,因此我知道这不是一个钓鱼欺诈网站。(当然最近的Heartbleed漏洞指出HTTPS并不是我们想得那么安全)。

在树莓派这个例子中,我作为我自己的授权机构,自己为OpenVPN签字,而不是通过一个第三方公司。

cd /etc/openvon/easy-rsa

现在我们又改变了所在目录,将下面命令一行接一行输入终端:

source ./vars → 这个”source”加载你之前修改的文件(vars)。

./clean-all → 这会删除之前所有的密钥文件,如果有的话。如果在这个文件目录下有你不想删除的密钥文件(比如这是你第二次尝试这篇教程),跳过这条命令。

./build-ca → 最后一条来生成你的授权机构。

再输入第三条命令之后,树莓派会弹出一堆选项,你可以填写这些选项如果你愿意的话--国家名字,州名或省名,位置名,机构名,机构单位和电子邮件地址。如果你不想填写,只要在每个选项出现时按”enter”就行了,树莓派会使用默认值。下面的截屏展现了这些选项的长相:

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

现在你可以为你的服务器命名了。我很“创新”地将其命名为”Server”。你可以取任意的名字,不过别忘记输入:

./build-key-server [Server_Name]

再次,树莓派会给出一系列的选项,请随便输入,但注意以下几个选项:

Commom Name 必须是你为服务器取的名字。

A challenge password? 必须啥也不输,回车即可。

Sign the certificate? [y/n] 废话,你必须输入”y”。

你接下来会看到一段消息说你的证书会在接下来的3650天中有效的信息。因此,如果你打算长期使用这个VPN的话,你必须在十年后重新走这个流程。

1 out of 1 certificate requests certified, commit? [y/n] 明显,输入”y”。

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

6) 服务器端就这么设置好了。现在该为各位用户生成密钥了,或者说”客户”。我为家里的计算机,平板,手机各生成了一个密钥,总共有5个。不要以为在所有客户端使用同样的密钥就可以节省时间,这样的话,一次只能有一个设备能访问VPN。

./build-key-pass UserName

我发现采用用户名 Client1, Client2, Client3…十分方便

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

在这之后,更多信息会弹出!

Enter PEM pass phrase 设置其为你记得住的密码!他会让你输入两次,不会有几率输入错误。

A challenge password? 必须留空!

Sign the certificate? [y/n] 同样签十年。

cd keys
openssl rsa -in Client1.key -des3 -out Client1.3des.key

留意我们使用des3加密生成的字符串文件,des3是一个复杂加密算法会在每一个数据块上运行3次,来防止骇客的暴力破解。OpenSSL 代表开源的加密套接字实现,是一个建立安全连接的标准方法。你需要为你生成的每一个客户端运行这一步。

有人会说这一步完全没有必要,你可以跳过这一步。但是如果你通过Android或者iOS设备连接OpenVPN,那么你必须要做这一步,不然的话目前版本在解析你的密钥时会有一些困难产生。

Enter pass phrase for Client1.key

说实话,我用了和以前一样的密码。再输入一遍,就想说的那样。

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

现在我们已经创建了服务器证书以及至少一个客户端证书,输入以下命令:

cd /etc/openvpn/easy-rsa/

或者

cd ..

两种方法都会将你的所在目录带会/easy-rsa/。

7) 现在该生成Diffie-Hellman key exange了。这是使你的VPN工作的关键代码,一个使两个没有先前信息的双方通过服务器交换密钥的协议。像RSA一样,这是现有的最早发明的加密系统。

./build-dh

这一步会花一些时间,甚至比2048-bit加密还要慢。而且没有任何方法可以预测它运行的时间,因为这个算法使用的是随机数并寻找一些特定的关系。事实上,在我写这篇教程时,1024-bit加密只花了我5分钟。

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

8) 最后,我们要实现OpenVPN内建的服务阻断攻击(Denial of Service — DoS)防护。你可能已经知道服务阻断攻击是骇客找到你的服务器地址后很有效的攻击手段,这种攻击通过生成大量的访问请求来使你的服务器崩溃。

输入以下代码来生成静态的HMAC(hash-based message authentication code)密钥:

openvpn --genkey --secret keys/ta.key

最后收尾

9) 我们已经生成了密钥以及来签名的授权机构。剩下的只是如何告诉OpenVPN如何配置这个服务器了。

因为我们在树莓派上使用在没有图形用户界面的Linux操作系统,我们需要生成一个.conf (configuration) 文件来告诉OpenVPN如何配置服务器,而不是通过图形界面的选择。用nano打开.conf文件:

nano /etc/openvpn/server.conf

我们在这个目录下打开.conf文件的理由是,编辑完此文件会直接生成在/etc/openvpn的目录中。但是你刚刚打开的这个文件是空的。将如下的配置复制入编辑器。在配置中我用大写字符注释了你必须要更改的地方,具体可以看注释。按下 Control+X 来保存文件。

local 192.168.2.0 # SWAP THIS NUMBER WITH YOUR RASPBERRY PI IP ADDRESS
dev tun
proto udp #Some people prefer to use tcp. Don't change it if you don't know.
port 1194
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Server.crt # SWAP WITH YOUR CRT NAME
key /etc/openvpn/easy-rsa/keys/Server.key # SWAP WITH YOUR KEY NAME
dh /etc/openvpn/easy-rsa/keys/dh1024.pem # If you changed to 2048, change that here!
server 10.8.0.0 255.255.255.0
# server and remote endpoints
ifconfig 10.8.0.1 10.8.0.2
# Add route to Client routing table for the OpenVPN Server
push "route 10.8.0.1 255.255.255.255"
# Add route to Client routing table for the OpenVPN Subnet
push "route 10.8.0.0 255.255.255.0"
# your local subnet
push "route 192.168.2.0 255.255.255.0" # SWAP THE IP NUMBER WITH YOUR RASPBERRY PI IP ADDRESS
# Set primary domain name server address to the SOHO Router
# If your router does not do DNS, you can use Google DNS 8.8.8.8
push "dhcp-option DNS 192.168.2.1" # This should already match your router address and not need to be changed.
# Override the Client default gateway by using 0.0.0.0/1 and
# 128.0.0.0/1 rather than 0.0.0.0/0. This has the benefit of
# overriding but not wiping out the original default gateway.
push "redirect-gateway def1"
client-to-client
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
cipher AES-128-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log 20
log /var/log/openvpn.log
verb 1

10) 让我们快速地编辑一下另一个配置文件。在默认配置下树莓派并不会转发网络流量,我们需要另一个配置文件来使树莓派启用对我们新建网络中的网络流量的转发。

nano /etc/sysctl.conf

在文档开头处有注释:"取消下一行的注释来启用IPv4中的数据包转发。"(“Uncomment the next line to enable packet forwarding for IPv4。”)。我在下面的截图中高亮了这部分。

Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

删除那一行前面的 # 来取消注释这一行。这告诉树莓派要对IPv4的数据包进行映射。当你取消注释了这一行,树莓派就拥有了作为互联网的中继而不是单单的接受者的权限,可以既接受并发送数据包。

按下 Control+X 来保存修改。通过以下命令启用此配置:

sysctl -p

sysctl命令表示"在运行中改变内核配置参数"。-p 告诉计算机重新加载你刚刚修改的配置文件。

11) 到这一步我们以及配置完了一个拥有互联网访问权限的工作中的服务器。但是我们还不能用它,用为树莓派有内置的防火墙来限制传输入的网络连接。

Raspbian的防火墙会在来路不明的互联网源头中保护你的树莓派。我们仍然需要防火墙来保护我们,但是我们要在防火墙中挖一个OpenVPN样子的洞,使OpenVPN的连接可以顺利通过。

此外,Raspbian的防火墙会在重启后默认进行重置。我们需要创建一个简单的脚本使树莓派记住每次重启时对OpenVPN的连接进行允许。

nano /etc/firewall-openvpn-rules.sh

这是一个空文件,输入以下内容:

#!/bin/sh
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.XX.X

不要忘记将默认IP地址改为你树莓派的IP地址!

解释下这条命令: 10.8.0.0 是客户端连接树莓派VPN后树莓派的默认地址。 “eth0″代表以太网接口。 如果你使树莓派用无线连接互联网的话将其改为”wlan0″, 当然我不建议你这么做。 按下 Control+X 保存编辑。

为了安全考虑, 我们要改变/etc/firewall-openvpn-rules.sh的所有者,使此文件默认不可被运行。 首先将权限设定为700 (所有者可以读、写、执行)。 然后,我们会将此脚本的所有者改为root,,在Linux标准系统中,root代表系统管理员。

chmod 700 /etc/firewall-OpenVPN-rules.sh
chown root /etc/firewall-OpenVPN-ruels.sh

12) 我们已经创建了一个在防火墙中开出OpenVPN形状的洞,我们现在只需要将这个脚本插入到网络interface初始化的代码中,然后它就会在每次开机时运行了。

nano /etc/network/interfaces

找到带有”iface eth0 inet dchp”的那一行。 我们需要在这行之后的缩进中加上一行。 下面是这两行,一行新加入,一行原来就存在,在完成之后它应该差不多像这样:

iface eth0 inet dhcp
    pre-up /etc/firewall-openvpn-rules.sh
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?
Linux:在树莓派上建立VPN(一):如何以及为何建立一个VPN服务器?

按下 Control+X 保存更改 (当你在使用nano的时候都应该这么做)。

最后,再最后, 再最最后:重启树莓派。

sudo reboot

恭喜你!!vpn服务器就这么搭建完成了,当然如果没有客户端连接服务器的话,服务器也没什么用,因此你应该牢记你在第6步创建生成的用户名及密钥。 接下来你可以继续阅读这篇教程的第二部分来学习如何创建加密的客户端。

树莓派的照片来自 Tors。 其他所有的截屏来自Lauren Ordini。 教程展示于ReadWrite。


via: http://readwrite.com/2014/04/10/raspberry-pi-vpn-tutorial-server-secure-web-browsing

译者:ThomazL 校对:wxy

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

来源:https://linux.cn/article-3105-1.html

Linux:每日 Ubuntu 小技巧——以色辨夹

这篇简短的文章将教会你如何在Ubuntu 14.04或者其先前版本中使用美化工具来实现通过颜色分辨文件夹。这个工具就是Folder Color,它允许用户改变 Nautilus 文件浏览器中文件夹的颜色,这样就可以让用户很容易地识别并区分它们。

这个工具的开发者设计初衷是与 Nautilus 配合使用,其实它也可以与Ubuntu上其它的图标主题配合使用。这是一个很好的工具,轻量级,不会影响你的系统的性能。

这个软件安装起来方便,让下面这个简短的教程告诉你如何做吧。

假如你想将重要的文件夹设置成红色的,或者将文档文件夹设置为黄色,你可以用Folder Color轻松地更改它们的颜色。

接下来教你来安装这个工具。

在Ubuntu 中Ctrl – Alt – T打开终端。添加下面的PPA源。

sudo add-apt-repository ppa:costales/folder-color

然后运行下面的命令更新你的系统并安装Folder Color。

sudo apt-get update && sudo apt-get install folder-color

这样安装就可以了。现在你要做的就是注销登录然后再次登入系统或者重新启动Nautilus 。打开Nautilus,在你想改变颜色的文件夹上右键单击选择你想要的颜色。这些是预先定义的颜色,或许无法满足你的需要,但是对于大多数用户来说这足够了。

如果你想卸载它,运行下面的命令移除PPA源。

sudo add-apt-repository -r ppa:costales/folder-color

最后,运行下面的命令移除Folder Color 。

sudo apt-get update && sudo apt-get remove folder-color

使用愉快!

Linux:每日 Ubuntu 小技巧——以色辨夹
Linux:每日 Ubuntu 小技巧——以色辨夹

via: http://www.liberiangeek.net/2014/04/daily-ubuntu-tips-identify-folders-by-colors-in-ubuntu/

译者:Linchenguang 校对:Caroline

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

来源:https://linux.cn/article-3108-1.html

Linux:在树莓派上建立VPN(二):建立加密客户端

Linux:在树莓派上建立VPN(二):建立加密客户端
Linux:在树莓派上建立VPN(二):建立加密客户端

你已经成功搭建了一个工作中的VPN服务器! 现在该干什么了?

欢迎来到ReadWrite的树莓派VPN搭建教程的第二部分!

到现在为止,显然我们已经搞定了将你的树莓派变成了一个虚拟私人网络这个工作。随着未来安全漏洞对互联网生活的妥协,你会觉得在你的身边拥有一个安全的服务器越来越有必要了。只有这样,你才可以不用担心有人在你的电脑和互联网之间传输信息时被拦截,可以自由自在地写邮件以及传输数据了。

如果你看过此教程的第一部分,你应该已经在你的树莓派上配置好了一个全功能的VPN服务器了。你可以在使用免费WiFi时用这个服务器来传输加密信息了。你也可以访问保存在你家里网络中共享的文件以及媒体。

不过,你现在还无法访问。我们现在已经为客户端(计算机和移动设备)创建了访问的密钥,但是我们还没有告诉客户端服务器的访问地址、如何连接、以及用什么密钥访问。

你应该记得,我们已经为需要连接VPN的不同客户端创建了不同的密钥。我们将客户端命名为 Client1、 Client2 和 Client3等。

但是为每个客户端从零单独生成一个配置文件会造成很多不必要的麻烦,这就是为什么我们需要使用SANS institute的Eric Jodoin写的巧妙的脚本。这个脚本会帮助我们生成那些配置文件。

跟随脚本

这个脚本会访问我们的默认设置,从而为每一个客户端生成各自的配置文件。我们需要做的第一件事是,创建一个空的文本文档并写入我们的默认配置,以便脚本读取。

nano /etc/openvpn/easy-rsa/keys/Default.txt

在空白文件中写入如下配置:

client
dev tun
proto udp
remote <你的公网ip地址> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ns-cert-type server
key-direction 1
cipher AES-128-CBC
comp-lzo
verb 1
mute 20

这个文档应该看起来和下面的截屏差不多,除了你应该填入你自己的公网ip地址之外。你注意到了我已经把我的公网ip删除了,当然这是为了保护我的隐私。相对而言,每个人的本地静态ip则都差不多,他们通常都以 “192.168.” 起头。

Linux:在树莓派上建立VPN(二):建立加密客户端
Linux:在树莓派上建立VPN(二):建立加密客户端

如果你没有一个静态的公网ip的话,你需要使用动态DNS服务来给你自己一个域名来代替公网ip。我建议你使用免费服务DNS Dynamic,它允许你取一个自己选择的名字。然后在你的树莓派上,你需要运行DDclient来自动更新你的DDNS注册信息。我在这里写过一篇完整的教程。

同样,按 Control+X 来保存文件并推出nano。

接下来,我们需要创建一个要用到的脚本。这个可执行脚本通常从shell中启动,可以自动化一些我们需要做的工作。

nano /etc/openvpn/easy-rsa/keys/MakeOPVN.sh

这里是脚本文件,它由Jodoin编写。将内容复制粘贴至编辑器(注意一下复制粘贴中产生的问题)。

你需要将执行权限赋予给这个脚本。首先改变所在目录:

cd /etc/openvpn/easy-rsa/keys/

然后只让root有访问权限。如果你还记得第一部分教程的内容的话,Linux中的权限管理由不同的3位数字代表。700表示”所有者可以读、写、执行”。

chmod 700 MakeOPVN.sh

最后,执行文件:

./MakeOPVN.sh

在脚本运行途中,他会要求你输入现有的客户端名称。例如: “Client1″。注意只输入已经存在的客户端名称。

如果一切正常的话,你应该会看到下面这行字弹出:

Done! Client1.opvn Successfully Created.

为剩下的客户端都重复执行这一步。

最后要做的事是将客户端连上树莓派,然后你就可以让客户端下载这些配置文件了。你需要使用一个SCP (Secure Copy Protocol)客户端来实现它。在Windows中,我推荐WinSCP。而我在mac中一直使用Fugu

注意:如果你没有连接SCP客户端的权限,你需要为自己授权在此文件夹的读/写的权限。回到树莓派中输入:

chmod 777 -R /etc/openvpn

注意在你复制完文件后要取消这一步,以防止其他人从这里下载文件!完成之后将权限改为600, 仅让 用户 pi 能读/写文件:

chmod 600 -R /etc/openvpn

完成后回到客户端.

使用客户端软件

好了,困难的部分都结束了。从这里开始我们需要将之前生成的脚本输入到客户端的图形用户界面。对PC、Android或者iOS手机来说,你可以下载OpenVPN Connect。但是这个软件没有mac版,所以我尝试了TunnelblickViscosity

Tunnelblick 是免费的,但是Viscosity在免费30天试用之后需要9美刀来购买。不管怎么样,我们来尝试下将mac连入我们的服务器吧。

在我的情况下,mac是我第5个连接VPN的客户端,所以我生成的文件名叫做client5.opvn。

下载可以在你的OS X版本下运行的Tunnelblick。我在使用Mavericks,所以我下载了beta版。虽然这个软件有很多我看起来搞笑的对话框弹出,但是我下载的可不是盗版。

Linux:在树莓派上建立VPN(二):建立加密客户端
Linux:在树莓派上建立VPN(二):建立加密客户端

接着它会问你是否有了配置文件,我当然已经有了:Cientt.opvn。

Linux:在树莓派上建立VPN(二):建立加密客户端
Linux:在树莓派上建立VPN(二):建立加密客户端

然后它会问你,你的配置文件是.opvn或.tblk。如果你选择了.opvn它会帮你将文件格式转换成Tunnelblick自己的格式。我把Client5.opvn放到Tunnelblick指定的文件夹,然后把文件夹的名字改为了Client5.tblk。

好啦,你已经可以连接了。点击屏幕右上方Tunnelblick的标志然后选择Client5。

Linux:在树莓派上建立VPN(二):建立加密客户端
Linux:在树莓派上建立VPN(二):建立加密客户端

它会让你输入密码,这个密码就是上篇中我们生成各个客户端时使用的密码。

Linux:在树莓派上建立VPN(二):建立加密客户端
Linux:在树莓派上建立VPN(二):建立加密客户端

如果你密码输入正确,看起来就会如上图。

尝试在咖啡厅, 图书馆或任何有免费WiFi的地方连接VPN。通过使用VPN,即使你连接的是公共网络,你的数据仍然是安全的。

插图和截屏来自于ReadWrite。


via: http://readwrite.com/2014/04/11/building-a-raspberry-pi-vpn-part-two-creating-an-encrypted-client-side

译者:ThomazL 校对:wxy

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

来源:https://linux.cn/article-3109-1.html

Linux:20个最受欢迎的Linux命令,你同意么?

本文根据commandlinefu网站的历史排名,筛选出了前20个得票最高的Linux命令。看看你都能熟练使用了吗? 

Linux:20个最受欢迎的Linux命令,你同意么?
Linux:20个最受欢迎的Linux命令,你同意么?

1. 以 root 帐户执行上一条命令

sudo !!

2. 利用 Python 搭建一个简单的 Web 服务器

可通过 http://$HOSTNAME:8000访问        

python -m SimpleHTTPServer

3. 切换到上一次访问的目录 

cd -

4. 将上一条命令中的 foo 替换为 bar,并执行  

^foo^bar

5. traceroute + ping   

mtr google.com

6. 快速调用一个编辑器来编写一个命令 

ctrl-x e

7. 执行一个命令,但不保存在命令历史记录中 

command

8. 重新初始化终端

reset

9. 调出上次命令使用的参数 

'ALT+.' or ' .'

10. 以更加清晰的方式显示当前系统挂载的文件系统

mount | column -t

11. 在给定的时间执行命令 

echo "ls -l" | at midnight

12. 通过DNS控制台查询维基百科 

dig +short txt .wp.dg.cx

13. 从80端口向你本地的2001端口开启隧道

ssh -N -L2001:localhost:80 somemachine

14. 快速访问ASCII表  

man ascii

15. 获取你的外部IP地址 

curl ifconfig.me

16. !! 表示重复执行上一条命令,并用 :gs/foo/bar 进行替换操作

!!:gs/foo/bar

17. 输出你的麦克风到远程机器的扬声器 

dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

18. 挂载一个临时的内存分区 

mount -t tmpfs tmpfs /mnt -o size=1024m

19. 以SSH方式挂载目录/文件系统 

sshfs name@server:/path/to/folder /path/to/mount/point

20. 通过curl更新Twitter 

curl -u user:pass -d status="Tweeting from the shell" http://twitter.com/statuses/update.xml

via : http://code.csdn.net/news/2819566

Linux:Arduino 与 Raspberry Pi: 哪个是更适合你的DIY平台?

Linux:Arduino 与 Raspberry Pi: 哪个是更适合你的DIY平台?
Linux:Arduino 与 Raspberry Pi: 哪个是更适合你的DIY平台?

你想做硬件DIY吗?它们哪个更适合你?

如果你很熟悉电子DIY,那么应该听过ArduinoRaspberry Pi(树莓派)的特点对比。你也许甚至会猜测到,像我之前认为的,它们两个是处理相似问题的相互竞争的硬件平台。

实际上,Arduino和树莓派非常不一样。对于初学者来说,树莓派是一台完整功能的计算机,而Arduino只是一个微控制器,它仅仅是组成计算机的一个模块。

这里有一些指引来帮助你区分Arduino和树莓派,然后确定这两个DIY设备中的哪个更适合你的需求。

概述

树莓派和Arduino最开始都被设计成教育工具,这也是它们现在这么流行的原因,它们两个都非常容易学习使用。

树莓派来自英国。开始的时候,发明者Eben Upton和他在剑桥大学计算机实验室的同事对学生数量的逐渐减少和差劲的技能感到非常懊恼,于是想办法解决这个问题。他们设计的树莓派是一台便宜的方便修改的计算机,目的是提高动手能力。Upton在2006年设计了树莓派的原型,在2012年4月的时候第一次可以在市场上买到。

另一个,Arduino诞生于意大利。它是根据发明者Massimo Banzi和合伙人想到这个点子的一个酒吧的名字命名的。Banzi是伊夫雷亚互动设计学院的一名教师,他想为他学设计的学生做一个简单的硬件原型制作工具。

作为教育工具,Arduino和树莓派都适合初学者。而在了解了它们的硬件和软件特点之后,很明显它们会应用到完全不同的项目中。

硬件和软件

这里大概列出了两者规格上的最大差异

 

Arduino Uno

树莓派Model B

价格

$30

$35

体积

7.6 x 1.9 x 6.4 cm

8.6cm x 5.4cm x 1.7cm

内存 

0.002MB

512MB

主频

16 MHz

700 MHz

集成网络接口

没有

10/100M以太网RJ45

多任务支持

没有

输入电压

7到12伏

5伏

Flash存储

32KB

SD卡(2到16G) 

USB 

一个,仅做为输入

两个,可扩展外围设备

操作系统

没有

Linux发行版

集成开发环境

Arduino

Scratch, IDLE, Linux支持的任何环境

它们两个的价格和体积都差不多,我们已经知道树莓派和Arduino都很小巧很便宜,只是它们所包含的东西决定了它们的不同。树莓派在时钟速度上比Arduino快40倍。而更打击Arduino的是,树莓派拥有其128,000倍的内存。树莓派是一台独立的计算机,可以运行实际的Linux操作系统,支持多任务,支持两个USB端口,还可以无线连接到因特网。总之,它足够强劲,完全可以作为个人电脑(但是还不足以与Mac或PC比较)。

也许看起来树莓派比Arduino高级,但那仅仅是软件应用。Arduino的简单让它在单纯的硬件项目中表现更好。

我采访了Limor Fried,她是Adafruit的创办者,Adafruit是一个DIY电子商店,提供Arduino和树莓派的部件和工具,询问了她关于这两者之间不同的专业意见。作为一个从MIT毕业的工程师,立志要教所有级别的电子技术的高手,Fried比其他人更懂这两个平台。

“Arduino有处理’实时’和’模拟电路’的能力,这是树莓派没有的,这种灵活性让它可以匹配各种传感器或芯片”Fried这样说,“树莓派就没有这样灵活,比如,要读取模拟传感器就需要额外的硬件协助。有成千上万的教程教你把Arduino挂到几乎所有的设备上。另一方面,树莓派可以受益于多年的Linux软件积累,所以它们两个都是很棒的选择!”

Arduino的集成开发环境明显比Linux容易太多了。比如,如果你在树莓派上想写个程序让LED闪烁,你需要安装一个操作系统以及各种代码库,而这还仅仅只是开始。而在Arduino上,你可以用仅仅8行代码来让LED闪烁。而且,Arduino并没有设计成运行操作系统或是大量软件,你可以仅仅把它插到板子上,它就开始工作了。

树莓派可以支持多个任务进程,它可以在后台运行多个程序。比如,我有一台树莓派同时用作打印服务器和VPN服务器

另一方面,你可以让Arduino插在板子上去长时间执行单一的任务,而当你想停止的时候把它拔出来就好了。这也是为什么Fried建议初学者在玩树莓派之前先玩Arduino:

“Arduino更简单,更难’变砖’或’损坏’,而且有更多的适合初学者的学习资源。”Fried这样说,“而要玩树莓派,你不但要学习编程比如Python,还要学习Linux。Arduino可以在任意电脑上工作,而且可以用电池供电,你可以任意时候随时开关都很安全。而树莓派在没有合适关机的情况下断电可能会损坏。”

树莓派在软件应用上大放光芒,而Arduino让硬件项目变得更简单。所以问题变成你先确定你想做什么。

一起使用

选择树莓派或是Arduino的终极答案是:“为什么要选择?”如果你想学习一些电子知识,它们中任意一个可以教你不同的内容。

按照Fried的意见,树莓派和Arduino是互补的。她提供了一种场景,Arduino是传感器工场,而树莓派负责分发指令:

“它们在一起工作会更好”Fried说,“Arduino非常适合驱动马达,读取传感器数据,控制LED,等等。而同时你可以用一个连接到因特网的树莓派来驱动Arduino,一台迷你电脑可以轻松地用来播放视频,音乐或是发送邮件。”

作者Simon Monk,他曾经写过大量关于树莓派和Arduino的书,在博客里写了篇教程用一点点代码就可以连接树莓派和Arduino。它用到了Python的库,PySerial,这也是Arduino基地推荐的连接电脑和Arduino的最容易的方式。

只要你做到了这个,那几乎就有无限可能了。你可以自制啤酒,用Arduino控制传感器,而用树莓派来处理主要流程。你还可以建立一个制造机器人的平台,比单独的Arduino或是树莓派机器人强大多了。

社区

不管树莓派还是Arduino,都有很多大型的、活跃的社区。这些论坛不仅仅是在学校和大学里使用,世界范围的极客们也都在里面。

下面这些地方你可以去看看,里面会有树莓派的支持和一些项目创意:

下面是关于Arduino的:

图片来源:Simon Monk


via: http://readwrite.com/2014/05/07/arduino-vs-raspberry-pi-projects-diy-platform#feed=/hack&awesm=~oEFMq68riarQK2

译者:zpl1025 校对:wxy

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

来源:https://linux.cn/article-3112-1.html

Linux:在Ubuntu 14.04上安装 Webmin

Linux:在Ubuntu 14.04上安装 Webmin
Linux:在Ubuntu 14.04上安装 Webmin

Webmin是一个开源的基于网页的Unix/Linux系统管理工具。通过使用Webmin,你可以在浏览器上设置和安装所有的系统服务,包括:DNS、DHCP、Apache、NFS和Samba等等。因此,有了这个,你就再也不需要去记住所有的修改配置的命令了。

使用官方软件源在Ubuntu 14.04 LTS上安装Webmin

添加webmin的官方仓库:

修改 /etc/apt/sources.list,

sudo vi /etc/apt/sources.list

添加如下内容:

deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

添加GPG密钥:

sudo wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc

更新软件源:

sudo apt-get update

通过如下命令安装webmin:

sudo apt-get install webmin

如果你想从远程系统访问webmin的控制台,就在防火墙里开启webmin的默认端口“10000”

sudo ufw allow 10000

访问Webmin控制界面

打开浏览器并访问URL** https://ip-address:10000/**。应该会出现如下的场景。在此输入用户名和密码来登录webmin的控制台。

Linux:在Ubuntu 14.04上安装 Webmin
Linux:在Ubuntu 14.04上安装 Webmin

这是我的Webmin面板。

Linux:在Ubuntu 14.04上安装 Webmin
Linux:在Ubuntu 14.04上安装 Webmin

就是这样。现在,你就可以管理和配置你的Ubuntu服务器图形。享受吧!


via: http://www.unixmen.com/install-webmin-ubuntu-14-04/

译者:MikeCoder 校对:wxy

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

来源:https://linux.cn/article-3113-1.html