<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I am LAZY bones ? &#187; CLI软件</title>
	<atom:link href="http://luy.li/category/cli/feed/" rel="self" type="application/rss+xml" />
	<link>http://luy.li</link>
	<description>all linux</description>
	<lastBuildDate>Fri, 21 Oct 2011 03:38:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>一个dump DVD到mp4的脚本</title>
		<link>http://luy.li/2011/05/15/dump_dvd/</link>
		<comments>http://luy.li/2011/05/15/dump_dvd/#comments</comments>
		<pubDate>Sun, 15 May 2011 13:34:37 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[CLI软件]]></category>

		<guid isPermaLink="false">http://luy.li/?p=1795</guid>
		<description><![CDATA[注意：此脚本只是一个对我来说刚刚够用的脚本，并不是一个通用的方案，如果你的源DVD里有多语言、多字幕之类的，很可能需要修改参数才能正常运行，另外输出文件的码率、画面长宽、声音采样率等，也需要按实际情况修改。 给儿子买了12张巧虎的DVD，但是这年头，已经很少见DVD播放器了，电视机都是直接插U盘的，所以打算把DVD里的内容dump到U盘里（mp4格式），再进行播放。我的盘是按故事分段的，所以我也按段分成不同的mp4文件，一个盘的内容放在一个目录里。 用到的几个命令： lsdvd命令可以取得DVD的标题、语言、字幕、分段等信息。 mencoder是个强大得一塌糊涂的视频/音频编码工具。 eject命令可以弹出光盘，放在脚本最后最合适了。 上脚本： #!/bin/sh &#160; DIR=&#34;/media/sda1/qiaohu&#34; DVD=`lsdvd` title=&#34;`echo &#34;$DVD&#34; &#124; grep &#34;^Disc Title:&#34; &#124; cut -d &#34;:&#34; -f2-`&#34; title=${title:1} chapters=&#34;`echo &#34;$DVD&#34; &#124; grep &#34;^Title&#34; &#124; awk -F&#34;[ ,]+&#34; '{print $6}'`&#34; echo &#34;$title &#124; $chapters&#34; T=&#34;$DIR/$title&#34; if &#91; -d &#34;$T&#34; &#93; ; then i=1 while &#91; -d &#34;$T$i&#34; &#93; ; do &#40;&#40;i++&#41;&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>注意：此脚本只是一个对我来说刚刚够用的脚本，并<strong>不是</strong>一个通用的方案，如果你的源DVD里有多语言、多字幕之类的，很可能需要修改参数才能正常运行，另外输出文件的码率、画面长宽、声音采样率等，也需要按实际情况修改。</p>
<p>给儿子买了12张巧虎的DVD，但是这年头，已经很少见DVD播放器了，电视机都是直接插U盘的，所以打算把DVD里的内容dump到U盘里（mp4格式），再进行播放。我的盘是按故事分段的，所以我也按段分成不同的mp4文件，一个盘的内容放在一个目录里。</p>
<p>用到的几个命令：</p>
<ul>
<li><code>lsdvd</code>命令可以取得DVD的标题、语言、字幕、分段等信息。</li>
<li><code>mencoder</code>是个强大得一塌糊涂的视频/音频编码工具。</li>
<li><code>eject</code>命令可以弹出光盘，放在脚本最后最合适了。</li>
</ul>
<p>上脚本：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #007800;">DIR</span>=<span style="color: #ff0000;">&quot;/media/sda1/qiaohu&quot;</span>
<span style="color: #007800;">DVD</span>=<span style="color: #000000; font-weight: bold;">`</span>lsdvd<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">title</span>=<span style="color: #ff0000;">&quot;<span style="color: #780078;">`echo &quot;$DVD&quot; | grep &quot;^Disc Title:&quot; | cut -d &quot;:&quot; -f2-`</span>&quot;</span>
<span style="color: #007800;">title</span>=<span style="color: #800000;">${title:1}</span>
<span style="color: #007800;">chapters</span>=<span style="color: #ff0000;">&quot;<span style="color: #780078;">`echo &quot;$DVD&quot; | grep &quot;^Title&quot; | awk -F&quot;[ ,]+&quot; '{print $6}'`</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$title</span> | <span style="color: #007800;">$chapters</span>&quot;</span>
<span style="color: #007800;">T</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$DIR</span>/<span style="color: #007800;">$title</span>&quot;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$T</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #007800;">i</span>=<span style="color: #000000;">1</span>
	<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$T</span><span style="color: #007800;">$i</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">do</span>
		<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>i++<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">done</span>
	<span style="color: #007800;">T</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$T</span><span style="color: #007800;">$i</span>&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$T</span>&quot;</span>
<span style="color: #007800;">i</span>=<span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$i</span> <span style="color: #660033;">-le</span> <span style="color: #007800;">$chapters</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">do</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$T</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$i</span>.mp4
	mencoder <span style="color: #660033;">-of</span> lavf <span style="color: #660033;">-lavfopts</span> <span style="color: #007800;">format</span>=mp4 <span style="color: #660033;">-oac</span> lavc <span style="color: #660033;">-ovc</span> lavc <span style="color: #660033;">-lavcopts</span> <span style="color: #007800;">aglobal</span>=<span style="color: #000000;">1</span>:<span style="color: #007800;">vglobal</span>=<span style="color: #000000;">1</span>:<span style="color: #007800;">vcodec</span>=mpeg4:<span style="color: #007800;">vbitrate</span>=<span style="color: #000000;">800</span>:<span style="color: #007800;">acodec</span>=libfaac:<span style="color: #007800;">abitrate</span>=<span style="color: #000000;">96</span> <span style="color: #660033;">-af</span> <span style="color: #007800;">lavcresample</span>=<span style="color: #000000;">48000</span> <span style="color: #660033;">-vf</span> <span style="color: #007800;">dsize</span>=<span style="color: #000000;">720</span>:<span style="color: #000000;">540</span>:<span style="color: #000000;">0</span>,<span style="color: #007800;">scale</span>=<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>,<span style="color: #007800;">expand</span>=<span style="color: #000000;">720</span>:<span style="color: #000000;">540</span>,harddup <span style="color: #660033;">-ofps</span> <span style="color: #000000;">29.970</span> <span style="color: #660033;">-srate</span> <span style="color: #000000;">48000</span> <span style="color: #660033;">-o</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$T</span>/<span style="color: #007800;">$i</span>.mp4&quot;</span> dvd:<span style="color: #000000; font-weight: bold;">//</span><span style="color: #000000;">1</span> <span style="color: #660033;">-chapter</span> <span style="color: #007800;">$i</span>-<span style="color: #007800;">$i</span>
	<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>i++<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
eject</pre></div></div>

<p>突然又觉得这事儿挺折腾的，呵呵，而且不知道这样做（自己dump、自己看）算不算侵犯版权呢？</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2011/05/15/dump_dvd/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>其实，文件也可以truncate</title>
		<link>http://luy.li/2010/10/24/truncate/</link>
		<comments>http://luy.li/2010/10/24/truncate/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 10:29:45 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[CLI软件]]></category>

		<guid isPermaLink="false">http://luy.li/?p=1724</guid>
		<description><![CDATA[现在觉得，时间的流逝速度和年龄确实是成正比的。也就是说，年纪越大，就会觉得空闲时间越来越少了~ 因此，本blog都大半个月没更新了，呵呵。也不能老这么沉寂下去，今天来写点东西。 熟悉数据库的朋友们都知道，大多数数据库都有个truncate指令：truncate table xxx可以把xxx表里的所有数据都删掉，但是保留表结构。其实，在有任何数据库之前，UNIX系统里就有了truncate这个命令了，当然后面的*nix里都保留了这个。可以想像，系统里的truncate命令的操作对象肯定是文件，而且此命令不仅能把文件的数据删成0字节，还可以缩减（甚至扩大）文件至指定的大小（通过 -s 选项指定文件大小值），这对于那种日志头部有些不想删除的关键信息，但后面的部分又很多很杂的情况下很有用。对于普通的日志文件，我们要清理的时候通常可以执行 > log 来清除文件的内容（这样，log文件会变成0字节），但是如果清理的同时想保留原始日志的前面4K的信息，不用truncate就会很麻烦了。 truncate的用法还是通过实战来解释吧，如下： lily@LLY ~$ echo -n 1234567 &#62; txt lily@LLY ~$ cat txt 1234567lily@LLY ~$ lily@LLY ~$ truncate -s 4 txt lily@LLY ~$ cat txt 1234lily@LLY ~$ lily@LLY ~$ ls -l txt -rw-r--r-- 1 lily lily 4 10月 24 16:54 txt lily@LLY ~$ truncate -s 1M [...]]]></description>
			<content:encoded><![CDATA[<p>现在觉得，时间的流逝速度和年龄确实是成正比的。也就是说，年纪越大，就会觉得空闲时间越来越少了~<br />
因此，本blog都大半个月没更新了，呵呵。也不能老这么沉寂下去，今天来写点东西。</p>
<p>熟悉数据库的朋友们都知道，大多数数据库都有个truncate指令：truncate table xxx可以把xxx表里的所有数据都删掉，但是保留表结构。其实，在有任何数据库之前，UNIX系统里就有了truncate这个命令了，当然后面的*nix里都保留了这个。可以想像，系统里的truncate命令的操作对象肯定是文件，而且此命令不仅能把文件的数据删成0字节，还可以缩减（甚至扩大）文件至指定的大小（通过 -s 选项指定文件大小值），这对于那种日志头部有些不想删除的关键信息，但后面的部分又很多很杂的情况下很有用。对于普通的日志文件，我们要清理的时候通常可以执行 <code>> log</code> 来清除文件的内容（这样，log文件会变成0字节），但是如果清理的同时想保留原始日志的前面4K的信息，不用truncate就会很麻烦了。</p>
<p>truncate的用法还是通过实战来解释吧，如下：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">1234567</span> <span style="color: #000000; font-weight: bold;">&gt;</span> txt
lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ <span style="color: #c20cb9; font-weight: bold;">cat</span> txt
1234567lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ 
lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ truncate <span style="color: #660033;">-s</span> <span style="color: #000000;">4</span> txt
lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ <span style="color: #c20cb9; font-weight: bold;">cat</span> txt
1234lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ 
lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span> txt
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> lily lily <span style="color: #000000;">4</span> <span style="color: #000000;">10</span>月 <span style="color: #000000;">24</span> <span style="color: #000000;">16</span>:<span style="color: #000000;">54</span> txt
lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ truncate <span style="color: #660033;">-s</span> 1M txt
lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span> txt
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> lily lily <span style="color: #000000;">1048576</span> <span style="color: #000000;">10</span>月 <span style="color: #000000;">24</span> <span style="color: #000000;">17</span>:<span style="color: #000000;">17</span> txt
lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ <span style="color: #c20cb9; font-weight: bold;">du</span> txt
<span style="color: #000000;">4</span>	txt
lily<span style="color: #000000; font-weight: bold;">@</span>LLY ~$ <span style="color: #c20cb9; font-weight: bold;">wc</span> <span style="color: #660033;">-c</span> txt
<span style="color: #000000;">1048576</span> txt</pre></div></div>

<p>这里还可以看到一个“奇怪”的现象，本来已经缩至4字节的文件，把它扩展成1M以后，ls 和 wc 的结果显示大小确实是1M，但是 du 的结果却发现大小还是4字节。这也是要注意的地方之一，这种文件称为“空洞文件”，也就是说，文件的部分内容并没有实际存在于硬盘上（即没有分配对应的inode），只是“声称”有1M的大小而已。对于不存在于硬盘上的那部分字节，如果去读的话，也是不会报错的，会读到全0的数据。<br />
这也从另一个方面反映出ls等命令默认显示的是文件“声称”的大小，而du （disk use）默认显示的是真正的磁盘占用。<a href="http://luy.li/2008/12/02/ls_du/">这里</a>是我以前的另外一个例子。</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2010/10/24/truncate/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Common Internet File System</title>
		<link>http://luy.li/2010/07/16/cifs/</link>
		<comments>http://luy.li/2010/07/16/cifs/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 00:56:20 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[CLI软件]]></category>

		<guid isPermaLink="false">http://luy.li/?p=1656</guid>
		<description><![CDATA[Common Internet File System 是samba的一部分，用于取代 smbfs 来挂载windows的共享文件夹，cifs比smbfs应用更广。 要使用 Common Internet File System 需要linux内核开启 cifs 支持。具体是要打开 File systems &#8212;> Network File Systems &#8212;> CIFS support (advanced network filesystem, SMBFS successor) 这个选项。如果是模块的话，使用前确保加载了。 然后，挂载共享文件夹，可以用mount命令的 -t cifs 选项来调用 mount.cifs。具体是： sudo mount -t cifs //机器名或IP/远程/目录/ 本地挂载点 -o user=域/用户名%密码,iocharset=utf8 当然，没有域的话，也可以省略域。如果要指定其他mount的选项也是可以的，比如指定uid和gid之类的，这里就不多说了。 另外，如果gnome-base/gvfs开启了samba支持的话，也可以在nautilus的地址栏里直接输入 smb://机器名或IP/远程/目录/ 来打开远程目录，有密码时会弹出对话框输入。 这两种方法各有各的好处。]]></description>
			<content:encoded><![CDATA[<p>Common Internet File System 是samba的一部分，用于取代 smbfs 来挂载windows的共享文件夹，cifs比smbfs应用更广。<br />
要使用 Common Internet File System 需要linux内核开启 cifs 支持。具体是要打开 File systems  &#8212;> Network File Systems  &#8212;> CIFS support (advanced network filesystem, SMBFS successor) 这个选项。如果是模块的话，使用前确保加载了。<br />
然后，挂载共享文件夹，可以用mount命令的 -t cifs 选项来调用 mount.cifs。具体是：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-t</span> cifs <span style="color: #000000; font-weight: bold;">//</span>机器名或IP<span style="color: #000000; font-weight: bold;">/</span>远程<span style="color: #000000; font-weight: bold;">/</span>目录<span style="color: #000000; font-weight: bold;">/</span> 本地挂载点 <span style="color: #660033;">-o</span> <span style="color: #007800;">user</span>=域<span style="color: #000000; font-weight: bold;">/</span>用户名<span style="color: #000000; font-weight: bold;">%</span>密码,<span style="color: #007800;">iocharset</span>=utf8</pre></div></div>

<p>当然，没有域的话，也可以省略域。如果要指定其他mount的选项也是可以的，比如指定uid和gid之类的，这里就不多说了。</p>
<p>另外，如果gnome-base/gvfs开启了samba支持的话，也可以在nautilus的地址栏里直接输入 smb://机器名或IP/远程/目录/ 来打开远程目录，有密码时会弹出对话框输入。<br />
这两种方法各有各的好处。</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2010/07/16/cifs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>cryptsetup &#8211; 分区加密工具</title>
		<link>http://luy.li/2010/06/26/cryptsetup/</link>
		<comments>http://luy.li/2010/06/26/cryptsetup/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 09:58:45 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[CLI软件]]></category>

		<guid isPermaLink="false">http://luy.li/?p=1619</guid>
		<description><![CDATA[cryptsetup是linux下的一个分区加密工具，和之前介绍过的eCryptfs不同的是：eCryptfs是文件系统级别的加密，而cryptsetup是分区级别的，比文件系统级别工作在更底层的位置，是在经过加密的块设备上，再创建文件系统，再挂载使用。这应该是纯软件能达到的最底层的加密了吧。 我折腾这玩意，是因为上篇文章说到，我要把/home的数据备份到另一个硬盘，而那个硬盘的物理安全性并不能得到充分地保证，所以只有通过加密来确保数据的安全了。如果当年陈老师也用这玩意的话，想必不会捅出这么大的篓子，呵呵。 废话不说，简单说说安装和使用的方法。 如果你是用ubuntu这类发行版的话，安装部分就很简单了，基本就是直接安装cryptsetup这个包，就完事了。 但是如果你和我一样也是用自己编译内核的发行版，比如gentoo的话，使用中可能会出现以下错误： /proc/misc: No entry for device-mapper found Is device-mapper driver missing from kernel? Failure to communicate with kernel device-mapper driver. Cannot initialize device-mapper. Is dm_mod kernel module loaded? Command failed with code 22: Cannot initialize device-mapper. Is dm_mod kernel module loaded? 这时候你不要急着去安装 device-mapper ，因为现在 device-mapper 已经并入到更强大的 lvm2 里面了，所以你要确保装了 lvm2 和在内核选项里选择了CONFIG_DM_CRYPT，如下： -&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/cryptsetup/">cryptsetup</a>是linux下的一个分区加密工具，和之前介绍过的<a href="http://luy.li/2009/09/11/ssh_publickey_fail_in_ecryptfs/">eCryptfs</a>不同的是：eCryptfs是文件系统级别的加密，而cryptsetup是分区级别的，比文件系统级别工作在更底层的位置，是在经过加密的块设备上，再创建文件系统，再挂载使用。这应该是纯软件能达到的最底层的加密了吧。<br />
我折腾这玩意，是因为<a href="http://luy.li/2010/06/26/unitek-y-1031/">上篇文章</a>说到，我要把/home的数据备份到另一个硬盘，而那个硬盘的物理安全性并不能得到充分地保证，所以只有通过加密来确保数据的安全了。如果当年陈老师也用这玩意的话，想必不会捅出这么大的篓子，呵呵。</p>
<p>废话不说，简单说说安装和使用的方法。<br />
如果你是用ubuntu这类发行版的话，安装部分就很简单了，基本就是直接安装cryptsetup这个包，就完事了。<br />
但是如果你和我一样也是用自己编译内核的发行版，比如gentoo的话，使用中可能会出现以下错误：</p>
<blockquote><p>/proc/misc: No entry for device-mapper found<br />
Is device-mapper driver missing from kernel?<br />
Failure to communicate with kernel device-mapper driver.<br />
Cannot initialize device-mapper. Is dm_mod kernel module loaded?<br />
Command failed with code 22: Cannot initialize device-mapper. Is dm_mod kernel module loaded?</p></blockquote>
<p>这时候你不要急着去安装 device-mapper ，因为现在 device-mapper 已经并入到更强大的 lvm2 里面了，所以你要确保装了 lvm2 和在内核选项里选择了CONFIG_DM_CRYPT，如下：</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">-&gt; Device Drivers
  -&gt; Multiple devices driver support
    -&gt; Device mapper support
      -&gt; Crypt target support</pre></div></div>

<p>另外，还建议选取大文件支持的CONFIG_LBDAF和CONFIG_CRYPTO_AES两个内核选项，我这边不选取前者，会无法打开加密分区（虽然说LBDAF是2T+的单文件支持，而我的硬盘一共只有80G）；后者是一个内核里的加密算法API，我们就用这个算法来加密（也可以用其他的算法）。</p>
<p>说说怎么使用：<br />
建立一个加密的分区，很简单，执行下面的命令：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> cryptsetup <span style="color: #660033;">--verbose</span> <span style="color: #660033;">--verify-passphrase</span> <span style="color: #660033;">-c</span> aes-cbc-plain luksFormat <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1</pre></div></div>

<p>我的外接硬盘在 /dev/sdb1 ，因为这个命令会摧毁这个分区的所有数据，所以程序会让你确认，输入大写的YES，回车，就会让你输入两次密码，输完就搞定了。<br />
话外音：其实cryptsetup不仅支持用密码加密，还支持用文件来加密，可以是任意类型的文件，不过解密的时候，要确保文件一个字节都不差，用这个特性可以方便地构建解密U盘。</p>
<p>好了，加密完分区以后，要使用的话，可以这样：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> cryptsetup luksOpen <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1 back</pre></div></div>

<p>其中最后的“back”，可以是任意字符串，程序会提示输入之前设置的密码，输对密码以后，文件系统里就会多出一个 /dev/mapper/back ，接下来就可以像使用 /dev/sdXX 一样地使用这个 /dev/mapper/back 了。<br />
比如，建立一个ext4文件系统，挂载，复制文件之类：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> mkfs.ext4 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>mapper<span style="color: #000000; font-weight: bold;">/</span>back
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>mapper<span style="color: #000000; font-weight: bold;">/</span>back <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>back<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> XXX <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>back<span style="color: #000000; font-weight: bold;">/</span>
....</pre></div></div>

<p>使用完以后，可以这样显式地关闭加密分区：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> cryptsetup luksClose <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>mapper<span style="color: #000000; font-weight: bold;">/</span>back</pre></div></div>

<p>看看如果别人偷你加密后的硬盘，想挂载看你的艳照时，会怎么样？哈哈：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1 <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>back<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">mount</span>: unknown filesystem <span style="color: #7a0874; font-weight: bold;">type</span> <span style="color: #ff0000;">'crypto_LUKS'</span></pre></div></div>

<p>PS： 现在ubuntu的易用性确实越来越好了，ubuntu里插入加密的硬盘后会自动判断，并直接弹出输入密码的窗口，输完自动挂载分区。</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2010/06/26/cryptsetup/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>linux下的“虚拟光驱”</title>
		<link>http://luy.li/2010/03/10/virtual_cdrom_in_linux/</link>
		<comments>http://luy.li/2010/03/10/virtual_cdrom_in_linux/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 06:38:01 +0000</pubDate>
		<dc:creator>bones7456</dc:creator>
				<category><![CDATA[CLI软件]]></category>

		<guid isPermaLink="false">http://li2z.cn/?p=1397</guid>
		<description><![CDATA[每当有人问我“你的linux下有没有类似‘虚拟光驱’的软件呢？”的时候，我就会轻轻一笑，自豪地说“别把事情想得太复杂，linux下根本就不用什么另外的软件，就能虚拟光驱了。”，然后那人一般就会似懂非懂地说一句：“哦。。这样啊~” 下面，就来介绍几个虚拟光驱相关的命令： 把物理光盘做成iso镜像，下面几个命令几乎等效，假设设备是/dev/cdrom： cp /dev/cdrom xxx.iso dd if=/dev/cdrom of=xxx.iso mkisofs -r -o xxx.iso /dev/cdrom readcd -v dev=/dev/cdrom -f xxx.iso 其中，用mkisofs还可以把一个文件夹模拟成iso： mkisofs -o xxx.iso /path/to/tree 如果要使用iso文件的话，就更简单了，可以mount到任意目录下： mount -o loop xxx.iso /path 注意以上某些命令可能需要root权限。 不过，还有个终极问题没有解决，我手头有一张《浙江省汽车驾驶人理科考试智能》的光盘，估计是用了什么防拷贝技术，使用以上方法都无法正确生成ISO文件，也无法全部复制里面的内容，具体操作过程如下： lily@LLY:~$ sudo mount -o ro,loop /dev/sr0 qc lily@LLY:~$ ls qc 试题10.db 试题11.db 试题12.db 试题1.db 试题2.db 试题3.db 试题4.db 试题5.db 试题6.db 试题7.db 试题8.db 试题9.db lily@LLY:~$ [...]]]></description>
			<content:encoded><![CDATA[<p>每当有人问我“你的linux下有没有类似‘虚拟光驱’的软件呢？”的时候，我就会轻轻一笑，自豪地说“别把事情想得太复杂，linux下根本就不用什么另外的软件，就能虚拟光驱了。”，然后那人一般就会似懂非懂地说一句：“哦。。这样啊~”<br />
下面，就来介绍几个虚拟光驱相关的命令：<br />
把物理光盘做成iso镜像，下面几个命令几乎等效，假设设备是/dev/cdrom：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>cdrom xxx.iso</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>cdrom <span style="color: #007800;">of</span>=xxx.iso</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">mkisofs <span style="color: #660033;">-r</span> <span style="color: #660033;">-o</span> xxx.iso <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>cdrom</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">readcd <span style="color: #660033;">-v</span> <span style="color: #007800;">dev</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>cdrom <span style="color: #660033;">-f</span> xxx.iso</pre></div></div>

<p>其中，用mkisofs还可以把一个文件夹模拟成iso：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">mkisofs <span style="color: #660033;">-o</span> xxx.iso <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">tree</span></pre></div></div>

<p>如果要使用iso文件的话，就更简单了，可以mount到任意目录下：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-o</span> loop xxx.iso <span style="color: #000000; font-weight: bold;">/</span>path</pre></div></div>

<p>注意以上某些命令可能需要root权限。</p>
<p>不过，还有个终极问题没有解决，我手头有一张《浙江省汽车驾驶人理科考试智能》的光盘，估计是用了什么防拷贝技术，使用以上方法都无法正确生成ISO文件，也无法全部复制里面的内容，具体操作过程如下：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">lily<span style="color: #000000; font-weight: bold;">@</span>LLY:~$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-o</span> ro,loop <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sr0 qc
lily<span style="color: #000000; font-weight: bold;">@</span>LLY:~$ <span style="color: #c20cb9; font-weight: bold;">ls</span> qc
试题<span style="color: #000000;">10</span>.db  试题<span style="color: #000000;">11</span>.db  试题<span style="color: #000000;">12</span>.db  试题<span style="color: #000000;">1</span>.db  试题<span style="color: #000000;">2</span>.db  试题<span style="color: #000000;">3</span>.db  试题<span style="color: #000000;">4</span>.db  试题<span style="color: #000000;">5</span>.db  试题<span style="color: #000000;">6</span>.db  试题<span style="color: #000000;">7</span>.db  试题<span style="color: #000000;">8</span>.db  试题<span style="color: #000000;">9</span>.db
lily<span style="color: #000000; font-weight: bold;">@</span>LLY:~$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">umount</span> qc
lily<span style="color: #000000; font-weight: bold;">@</span>LLY:~$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-o</span> ro <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sr0 qc
lily<span style="color: #000000; font-weight: bold;">@</span>LLY:~$ <span style="color: #c20cb9; font-weight: bold;">ls</span> qc
<span style="color: #000000;">2009</span>理论模拟考试.exe  AutoRun.ico  AutoRun.rdt  system               试题<span style="color: #000000;">10</span>.db  试题<span style="color: #000000;">1</span>.db  试题<span style="color: #000000;">4</span>.db  试题<span style="color: #000000;">7</span>.db
AutoRun.ard           autorun.inf  htm          安装使用说明.html    试题<span style="color: #000000;">11</span>.db  试题<span style="color: #000000;">2</span>.db  试题<span style="color: #000000;">5</span>.db  试题<span style="color: #000000;">8</span>.db
AutoRun.exe           autorun.pro  image.jpg    读安装使用说明.html  试题<span style="color: #000000;">12</span>.db  试题<span style="color: #000000;">3</span>.db  试题<span style="color: #000000;">6</span>.db  试题<span style="color: #000000;">9</span>.db
lily<span style="color: #000000; font-weight: bold;">@</span>LLY:~$ <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-r</span> qc qc1
<span style="color: #c20cb9; font-weight: bold;">cp</span>: 正在读入<span style="color: #ff0000;">&quot;qc/试题3.db&quot;</span>: 输入<span style="color: #000000; font-weight: bold;">/</span>输出错误
<span style="color: #c20cb9; font-weight: bold;">cp</span>: 正在读入<span style="color: #ff0000;">&quot;qc/试题4.db&quot;</span>: 输入<span style="color: #000000; font-weight: bold;">/</span>输出错误
<span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#125;</span>lily<span style="color: #000000; font-weight: bold;">@</span>LLY:~$ <span style="color: #c20cb9; font-weight: bold;">ls</span> qc1
<span style="color: #000000;">2009</span>理论模拟考试.exe  AutoRun.ico  AutoRun.rdt  system               试题<span style="color: #000000;">10</span>.db  试题<span style="color: #000000;">1</span>.db  试题<span style="color: #000000;">4</span>.db  试题<span style="color: #000000;">7</span>.db
AutoRun.ard           autorun.inf  htm          安装使用说明.html    试题<span style="color: #000000;">11</span>.db  试题<span style="color: #000000;">2</span>.db  试题<span style="color: #000000;">5</span>.db  试题<span style="color: #000000;">8</span>.db
AutoRun.exe           autorun.pro  image.jpg    读安装使用说明.html  试题<span style="color: #000000;">12</span>.db  试题<span style="color: #000000;">3</span>.db  试题<span style="color: #000000;">6</span>.db  试题<span style="color: #000000;">9</span>.db
lily<span style="color: #000000; font-weight: bold;">@</span>LLY:~$ <span style="color: #c20cb9; font-weight: bold;">du</span> <span style="color: #660033;">-s</span> qc qc1
<span style="color: #000000;">398463</span>	qc
<span style="color: #000000;">349720</span>	qc1</pre></div></div>

<p>有谁知道这种变态的光盘怎么搞定吗？</p>
]]></content:encoded>
			<wfw:commentRss>http://luy.li/2010/03/10/virtual_cdrom_in_linux/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

