细说linux挂载——mount,及其他……

新手涉及到的教学或入门贴,推荐新手必看,版主维护
回复
头像
adagio
论坛版主
帖子: 22120
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球
送出感谢: 7 次
接收感谢: 74 次

细说linux挂载——mount,及其他……

#1

帖子 adagio » 2010-02-18 18:11

纯粹针对刚刚解封开包的新新手,老鸟们请自觉绕行,否则浪费你的时间你非要逼我做谋杀犯可不光我的事你还没地方说理去。

如果你正好是个崭新的新手,就耐心的花点时间看看吧,至少大概看看,不要在一个陌生又黑暗的到处碰壁,或张皇四顾,像个没头的苍蝇。
现在耐心听我老人家絮絮叨叨没个完的,这点时间绝对值!


续_______________________________________________________________________________________
用linux,就一定要用linux的方式去思维。
嗯,说的容易做起来难。
我的D盘哪去了?恐怕每一个新手初次进入linux桌面后,第一个想知道的就是这个答案吧?
我们就来说说这个D盘。

首先,请放心,他不会莫名其妙的被xx掉。除非你在分区的时侯乱来一气;
其次,你应该明白硬盘分区是怎么回事,否则下面的就别看了,还不会走路就想跑马拉松那是……,根本不可能滴;
再者,你应该明白,文件其实是储存在硬盘的某个分区里,并不是C盘或者D盘里;
最后,抛弃你被widows“固化”了的思维,其意义不仅仅是使你更懂linux,而是可以令你拥有一种更加活跃的思考方式,对你的整个人生可是大大的好喔。

原来事情还可以这样做!
这是我们每一个走向知识的更高阶段后必然会发出的感叹。回想一下,你有多久没有发出过这样的感叹了?如果有一年以上的话——抱歉,你已经老了,至少你的思维是这样。


复习________________________________________________________________________________________
硬盘是干什么用的?废话,当然是存文件的啦。
首先操作系统需要放置一些它自己的文件,其次作为用户的我们自己,需要放置私人的物品——这是所谓存储(写入)。
光放着不行,还要在需要的时候随时拿出来——这是所谓取用(读取),合称存取控制。

既然要控制,就存在个怎么组织这些文件的问题。
如果你的电脑上只有十几二十个文件的话简单了,全放一起就行,那我也不用写这个帖子了,省心。
可惜此事古难全啊,去看看你的windows目录吧,那里面少说也有几千个文件吧?linux虽说比windows简洁,不过可没说文件比windows少,新装好的系统有一万个以上的文件也正常得紧!
试想你把这些文件全放一块,是个啥情况?相信这个世界上没有几个人喜欢这样搞。

不用说了,解决方法连火星人都知道——分类
这时候你应该已经想到了windows的树形目录了吧?
对喔,系统文件全放进c:\windows里,程序文件全放进c:\program files里,你个人的文件全放进c:\Documents and Settings里。
不过大多数有经验的windows用户又会发现一个问题——个人的文件放进c:\Documents and Settings里不好!由于windows的经典蓝屏的不可忽视的存在,这个c:不是个很可靠的地方,一旦它想提醒你它的不可忽视性的时候(天晓得是啥时候),虽然你拥有对硬盘的绝对控制权,但你却不得不面临是干掉匪徒还是拯救人质的两难处境(至于怎么彻底消灭这些匪徒这个问题,恐怕这个世界上没人知道),于是很多聪明人都会明智的选择把私人文件放到d盘或者e盘f盘……,反正只要不是c盘随便哪里都行。

好吧,我们来仔细分析一下以上所说的那堆废话。
c:\ 这个部分是什么意思?
所有的计算机教材都会毫不含糊的告诉你——这是c盘的根目录。
——老师老师,那这个c盘又是在哪里呢?
遇上这么麻烦的学生,一个本着诲人不倦优良传统传统的好教师一定会拿出这个图:
CDE.jpg
——嗯,开头那个19.53G的新加卷(C:)就是c盘了,它位于磁盘的最前面,是主分区,而后面的D盘E盘是逻辑分区。这些分区很像一个大房间里分割出来的小房间,可以分别居住不同人而且互不干扰。
——收到!就是说假如我把一个文件从c盘剪切到d盘的话,那一定是数据从第一个分区挪动到了第二个分区,就像居住在1号房的房客搬家到2号房一样。那根目录又是虾米意思捏?
——嗯,这位同学问的好!大家想想,当我们把一个文件copy到c盘的某个目录的时候,比如说c:\windows吧,我们是怎样找到这里的?
对,先找到c盘,再在其中找到windows目录。所以,这个先找到的c盘就是最基础的一层(或者说最高一层)了,在c:\的前面不用再找任何东西,它就是这颗树的根,所以叫根目录,c盘里的所有目录(文件夹)就是从树根开始出现的分叉点,而c盘里的所有文件都是从这个根上,通过各个分叉(目录)逐渐长出的树叶。我们要寻找某片树叶(文件)的时候,实际上就是从树根开始,根据分叉点的指示最终找到那片树叶的。
而其他的D盘E盘也类似。下课!
——老师老师我明白了,可以这么说——在windows里,每个分区就是一颗树,windows里又很多颗树,树的多少取决于你划分了多少个分区!而这些CDEFG就是这些树的编号!就好像我去一栋大楼里找人,总是要先从1楼上去一样。乌拉!下课啦~~~~~~~~~~~~
在windows里,硬盘上的所有文件都可以通过类似方式找到,很清晰是不?
唯一的问题是——那个C盘根目录也就是第一分区,为什么一定要写成c:\而不能是d:\或者L:\或者干脆就写成\或者别的什么?
不行!这是人家windows规定的,习惯了就好,嗯?
好吧好吧,我是个善于适应的人,就这样挺好……


深究__________________________________________________________________________________________
整理一下思路吧:
:idea: C盘,这是一个编号,一般来说它就是指硬盘的第一分区;
:idea: 这种C盘D盘E盘的概念,是被windows赋予的。因为在一块硬盘没有装入机箱并被windows检测到以前,它就是一个个的分区,没有盘符!第一分区就是第一分区,不是C盘!就算你在上面装入了windows操作系统,但如果没有启动windows,那么它就是第一分区而不是C盘!
:idea: 反之,这种概念,是windows“内在”的,就算windows没有被安装到硬盘的任何分区,这个“构架”依然存在,也就是说这种C盘D盘E盘的概念不依赖于是否有分区供其命名
:idea: 这种概念,在windows接管了电脑硬盘的管理权以后,才具有实际的意义(可以通过类似c:\windows这样的路径存取文件了)。

引用某人的话来说,盘符——是软件级的概念分区——是硬件级的概念
虽然不能说互不相关,但是可以说——他们其中任何一个,都不是另一个的前提或补充,而只是两个相互独立的合作伙伴。
当windows启动的时候,它会检测电脑已连接的所有硬盘上它能够识别的分区(NTFS、FAT32等),并自动为其分配盘符。
这个“分配盘符”的过程,就是挂载(mount)过程(请一定记住这个mount),只不过这个过程完全不用你参与,windows认为所有的分区,不管三七二十一都应该挂上,让你尽情的用。
具体说就是,windows把第一分区关联到c:这个盘符,第二分区关联到d:这个盘符等等,这样当你想在第一分区存取数据的时候,只需要寻找c:就行了。
这样,软件中的磁盘管理概念和实际的硬盘分区紧密关联,二者才具有了真正的实用意义。


Linux__________________________________________________________________________________________
好了,罗哩罗嗦说那么多,只是想顺理成章的引出linux根文件系统的概念。
请注意,这里所说的“文件系统”,跟一般意义上的NTFS、EXT3文件系统不是一码事,别拿来对比哈!
和windows的C盘D盘E盘的概念一样,这个“文件系统”或者叫“组织体系”是软件级别的,是linux系统“内在”的体系,就像你脑子里的一个“想法”,并无需依赖于任何的实际一样。
:idea: linux的系统组织方式是——整个系统从根开始,按树形目录依次向下逐渐扩大,分类存放不同用途的文件,/读作“斜线”,英文slash;当其写作一个路径时,第一个/表示根,即root,其他的/表示路径分割符,但都读作“斜线”或“slash”。

OK,现在让我们把“理想”变成“现实”吧!
:idea: 系统启动时,首先有一个分区被挂载到了/,可以理解为该分区被分配了/这个奇怪“盘符”(注意,在windows里,这个符号被用做命令参数引导符号,而反斜线\,英文backslash作为路径分割符,习惯不同而已,就像英国行车靠左一样,没啥可奇怪的)。
这个被挂载为/的分区,就叫做根分区(不管它是主分区还是逻辑分区),它从此开始在整儿linux系统里具有了特殊的地位,因为整儿电脑里的所有硬盘,包括其上的所有其他分区,不管是主分区、逻辑分区,都将以这个“根分区”为主干,开始构造linux大树,并最终成为这颗树上的一个分支或树叶。整个linux的系统结构里,有且只有一个root(根分区),不可能有第二个(其实,任何一个分区,都可以挂载为/,windows分区也可以。只不过挂载根分区的目的是启动系统,如果/下面没有linux内核及其所需的系统文件的话,将无法引导系统而已。所以这个根分区并不神秘)。
:idea: 你的其他分区只能被继续挂载到/(根分区)下的某个目录里,比如“/mnt”或者“/media”或者“/什么什么”目录,看你喜欢喽。挂载好之后,当你向这个目录读写数据的时候,其实是在向被挂载到该目录的另一个分区读写数据。多个分区在同一个时候只能被挂载到多个不同的目录,比如“/mnt/a”、“/media/123”或者“/home/anywhere”,任何一个处于/之下的目录,都可以用来作为挂载其他分区的“平台”,当然系统需要的目录可不要用哈,你自己新建你自己的用吧。
挂载好之后,你硬盘里的数据,就可以通过类似/path/to/anywhere这样的方式找到;如果没有挂载就找不到喽。
用一个庸俗的比喻来说,“/”相当于c:\,而“/etc、/bin、/sbin、/lib”这些目录大概相当于c:\windows和c:\program files,“/home”相当于c:\Documents and Settings,而当你把第二分区挂载到“/mnt/partition2”的时候,这个目录就相当于d:\了,你地明白?

不信就挂一次试试:

代码: 全选

cd /mnt						(切换到/mnt目录)
sudo mkdir partition2		(新建一个名为partition2的空目录,你可以随意用其他名称)
sudo mount /dev/sda5 partition2	(如果你只有一个硬盘且第二分区是逻辑分区的话,这个命令就将挂载该分区到partition2)
cd partition2				(切换到/mnt/partition2目录)
ls							(列出该目录的文件)
这样应该可以看到你的D盘下的文件了。
既然能挂载就一定能反挂载:

代码: 全选

sudo umount /dev/sda5	(或者/mnt/partition2)
这个命令将“卸载”该分区,现在你再看会发现partition2又是空目录了。




闲话__________________________________________________________________________________________
到这里,有人可能会说“linux太麻烦了,我有十几个分区,难道让我每次都要敲几十行命令?为什么不像windows那样启动时就全给我自动挂上呢?”
1. 我是说过要敲命令,可我没说过“每次”!下面将会介绍的fstab文件将会使你在这件事上一劳永逸的解决问题;事实上,甚至还有一种“零”劳永逸的方法,你甚至一个命令都不用敲,点几下鼠标就好了;
2. 像windows那样全自动挂上?也没有问题啊,装上一两个软件即可,不过我想提醒你:
:idea: 这样真的好吗?未必。我可以肯定,你大多数时间只会使用几个特定的分区;再退一步讲,即使你是例外,但你也应该为别人想想吧?比如我,有一个分区有“敏感”数据(是啥你自己猜),而且不常用,以前用windows的时候,我对这种做法就很讨厌,谁都可以随便瞅一瞅,不好!后来全搬家到linux分区了,平时不挂载,要用才挂上,哈哈哈,我的系统我做主!从此不再受那微软的苦~~~
:idea: “像windows那样”,你的脑子里为什么每时每刻都在这样想?是因为windows的方法最“好”?也未必,顶多只是你习惯了“那样”而已。试想如果你从来都用linux的“这样”,然后有一天我突然给你一台windows电脑的时候,你也一样会疑惑的问我:“我的家目录哪去了?”,“为什么不能搞得像linux那样?”。
承认了吧,所谓“最好”的“那样”是没有的,除了你那个有衰老迹象的思维里,哪儿都没有!赶快活动活动吧。


一个例子__________________________________________________________________________________________

代码: 全选

/			(这就是著名的根)
├── bin			(你在终端运行的大多数程序,比如cp、mv...)
├── boot			(内核放在这里,这个目录也经常被作为某个独立分区的挂载点)
│   └── grub	(grub引导程序和引导菜单就放在这里)
├── cdrom
├── dev			(存放设备文件,这里相当于一个设备管理器,由系统自动生成。视硬件环境不同变化很大)
│   ├── block
│   ├── bsg
│   ├── bus
│   ├── char
│   ├── disk			(磁盘信息,要挂载硬盘分区就要注意这里的信息喽)
│   │   ├── by-id		(硬盘分区的永久性符号链接)
│   │   ├── by-label	(按卷标识别的硬盘分区,常用于挂载)
│   │   ├── by-path	(硬盘分区的节点链接)
│   │   └── by-uuid	(按UUID识别的硬盘分区,常用于挂载)
│   ├── dri
│   ├── fd
│   ├── input
│   ├── net
│   ├── pts
│   ├── shm
│   └── snd
├── etc			(存放所有程序和系统的配制文件和全局变量,对所有用户生效,非常值得备份)
├── home			(这就是著名的home目录了,注意不是”家目录”,强烈建议把一个独立分区挂载到这里!)
│   ├── adagio	(这才是我真正的家!一般来说目录名就是帐号名,当然也可以不是,随便。命令行中用波浪线~代表这里)
│   ├── MNT		(这是我挂载其它硬盘分区的地方,你可以看到用硬盘品牌、容量或用途区分的目录名)
│   │   ├── MAX40NT1	(迈拓40G)
│   │   ├── ST160NT1	(希捷160G第一分区,下面两个类似)
│   │   ├── ST160NT2
│   │   ├── ST160SYS
│   │   ├── ST320G		(希捷320G)
│   │   │   ├── MOVIE
│   │   │   ├── MUSIC
│   │   │   └── P2P	(电驴、BT的缓冲区)
│   │   ├── ST80G		(希捷80G)
│   │   │   ├── PROGRAM
│   │   │   ├── ST80PE
│   │   │   └── YEAR
│   │   └── WD1000		(西数1T)
│   │       ├── WD2
│   │       ├── WD3
│   │       ├── WD5
│   │       ├── WD6.Lib
│   │       └── WD7
│   └── test	(我建立的另一个帐号的家目录,专门用于测试,一旦搞到无法收拾的地步,只需简单的
│					 把里面的所有文件删除,就可以恢复默认。实际上你可以拥有无数个帐号)
├── lib			(所有程序共享的库文件)
├── lost+found	(磁盘扫描出现的丢失的数据)
├── media		(你在文件管理器里点击后自动挂载的分区就在这里,按卷标命名,没有卷标则按大小命名)
├── mnt			(同样用于挂载磁盘,这是最传统的位置,喜欢挂哪里随便)
├── opt			(某些特殊的程序喜欢把数据放在这里,比如JAVA)
├── proc			(当前系统所有的详细信息,这里的”文件”并不存在于硬盘中,而是在内存或缓存里,每次启动后都不一样)
├── root 		(这是系统最高权威root用户的家!他是老大,所以不住在/home里,那里是草民住的)
├── sbin			(类似/bin,存放常用程序,但这里的程序都是要命的啊,比如格式化,所以只有root用户或sudo程序有权使用)
├── srv			(一些服务所要访问的文件)
├── sys			(系统的核心文件,类似/proc,不必管它)
├── tmp			(存放临时文件,所有用户均可使用,不过你要小心啊,这里的所有文件一旦重启就全没了,自动清空的)
├── usr			(你在X下使用的所有程序数据都在这里了,包括图标、manual等。所有用户都可以使用。也是最庞大的目录)
└── var			(variation,顾名思义就是变量,这里存放系统中经常变化的数据。和/tmp不同啊,很有用的地方)
    ├── backups
    ├── cache
    │   └── apt
    │        └── archives	(存放你安装的所有程序的deb包!重装系统时太有用了,一定要备份好,到时候放回来。
    │   						我建议把整儿/var单独挂载到一个独立分区,像/home一样。这样你重装好系统后,只
    │    						需要简单的把整儿分区挂载到/var就行了,省去了备份-还原的时间。要知道这些deb包
    │    						可不是几十M而已,而是有可能几百M、几个G,一来一回可够呛的。你也可以单独挂载
    │    						一个分区到/var/cache/apt/archives,其他的都不要。
    │    						当然,这样又增加了一点系统构造的复杂度,喜欢怎样请自己斟酌。)
    ├── crash
    ├── games
    ├── lib
    ├── local
    ├── lock
    ├── log		(呵呵,这里的文件是系统运行的完整记录,出了问题一定要来这里看看)
    ├── mail		(这里是存放所有用户email的地方)
    ├── opt
    ├── run
    ├── spool
    └── tmp

40616 directories	(根目录下共有40616个子目录,你不会都想浏览一遍吧?所以不重要我全干掉,否则这个帖子没法看了)
这些用户感谢了作者 adagio 于这个帖子 (主题 7):
ywmy210 (2012-04-17 16:07) • zzjzzpgg12 (2012-10-11 11:57) • 艾徳庄 (2013-02-18 0:04) • ylwh (2013-04-22 19:32) • 杨浩晨 (2013-10-26 9:37) • googlefans (2014-11-25 10:10) • great0boy (2014-12-14 20:18)
评价: 25.93%
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
头像
adagio
论坛版主
帖子: 22120
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球
送出感谢: 7 次
接收感谢: 74 次

自定义fstab文件——一个完整的mount过程

#2

帖子 adagio » 2010-02-18 18:11

OK,现在咱们再具体一点,用我的ubuntu的启动过程来做个实例,看看linux是怎么逐步种出这颗大树的。
首先还是说一句,你必需知道UUID是啥玩意儿,或者至少要明白hda、sdc这些编号是啥意思。否则肯定是鸡同鸭讲了。
不想自己google的话,请移步这里看3楼。


grub_______________________________________________________________________________________
:idea: 系统启动当然是从grub开始了,请打开你的/boot/grub/grub.cfg文件,找到类似下面这一段(以下以grub2的菜单为样本,grub0.97的menu.lst其实也类似)。

代码: 全选

menuentry "Ubuntu 9.10, kernel 2.6.31-17-generic" {
search --no-floppy --fs-uuid --set f1bafdd4-73c2-44b2-9a62-d50a2da4d019
linux /boot/vmlinuz-2.6.31-17-generic root=UUID=f1bafdd4-73c2-44b2-9a62-d50a2da4d019 ro splash
initrd /boot/initrd.img-2.6.31-17-generic
}
也可能是这个样子

代码: 全选

menuentry "Ubuntu 9.10, kernel 2.6.31-17-generic" {
set root=(hd2,6)
linux /boot/vmlinuz-2.6.31-17-generic root=/dev/sdc5 ro splash
initrd /boot/initrd.img-2.6.31-17-generic
}
这是一个标准的ubuntu引导菜单,menuentry那一行仅仅显示了该项目的名称(包括了后面被花括号围住的所有语句),不必管它;
第二行开始,才真正进入linux系统的引导过程,search顾名思义就是要寻找喽,找什么呢?找内核。
打开你的/boot目录,看看是不是有一个名为vmlinuz-xxxxx的文件,大小一般在10M以内,这就是有名的linux内核。
有了内核,你就有了半个linux操作系统,可以开始引导系统了。
第三行的linux /boot/vmlinuz-2.6.31-17-generic 这部分,linux是一个指令,它告诉grub程序:“请使用后面给出的这个内核”,于是名为“/boot/vmlinuz-2.6.31-17-generic”的内核将被载入内存,并读取“root=UUID=f1bafdd4-73c2-44b2-9a62-d50a2da4d019(sdc5)”这个分区的一些必需的文件。
第三行的意思是:用名为“/boot/initrd.img-2.6.31-17-generic”的文件先在内存中构造一个“虚拟”的根文件系统,以便于内核检测完硬件信息后载入必需的模块等等,其实这个initrd也可以认为是内核的一部分,只是为了保持vmlinuz的简洁而分离出来的,有的内核甚至根本不需要这个咚咚。
OK,grub的工作到此结束,下面将由linux内核这“半个”系统接管电脑的控制权,开始初始化阶段。
:idea: 注意,到目前为止还没有开始挂载根分区,所以你可以看到root=xxxxxxxx(sdc5)这个分区是只读(ro)挂载的。

如果你去掉了第三行里的“quiet”参数的话,就可以在屏幕上看到内核初始化中整个儿过程的输出,当然,屏幕滚动会很快,而且内容很多,主要有检测硬件环境、载入相应模块、启动服务等等……。嗯,要启动一台电脑可不是件容易的事是不?
好在目前你只需要关心一件事——挂载。请注意在大约中间阶段将会出现的一行字——Mounting Locale Filesystem
如果你的linux刚装好的话,因为挂载项不多,可能一闪而过。而如果需要挂载的分区很多,特别是pass参数为1或者2的时候,你就能看见逐一列出的挂载情况了。



fstab_______________________________________________________________________________________
:idea: YEAH!真正的分区挂载就此开始。

这个时候linux将会读取一个名为fstab的文件,并按照其中的指令逐行执行,直到读完所有内容,进入系统后快打开看看吧,他位于/etc/fstab。以下是我的(不要以为我说“指令”就怕怕,其实里面的内容很简单,地球人都能看懂)。

代码: 全选

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc	/proc	proc	defaults	0	0
# / was on /dev/sda5 during installation
UUID=ce8493a2-73a2-46d3-ac32-fe28ac9ec860	/	ext4	errors=remount-ro	0	0
# /home was on /dev/sda6 during installation
UUID=5ae0aea4-f7bb-4504-bf0c-f3dbffc8fa0f	/home	ext4	defaults	0	0
# swap was on /dev/sda7 during installation
UUID=db44da00-1b52-4d25-a870-57d36a6a2a85	none	swap	sw	0	0
或者也可能被写成了这样

代码: 全选

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc	/proc	proc	defaults	0	0
# / was on /dev/sda5 during installation
/dev/sdc6	/	ext4	errors=remount-ro	0	0
# /home was on /dev/sda6 during installation
/dev/sdc5	/home	ext4	defaults	0	0
# swap was on /dev/sda7 during installation
/dev/sdc4	none	swap	sw	0	0
1. 请忽略所有以#开头的行,这是注释,给自己看的,linux不会执行它,就算是一行完整的命令也一样,它将被完全的无视。
2. 请记住,每一行就是一条完整命令,不能有换行符。或者说换行符(回车)的作用相当于文章中的句号。
3. 每行中的每个空格或TAB符号是参数分割符号,起作用相当于文章中的逗号。多个相连的空格或TAB将被视为一个。
4. linux挂载分区的时候将自上而下,顺序执行

第一个起作用的行(第8行)是proc,1楼已经解释过了,咱们不管它;
第二个起作用的行(第10行)是/dev/sdc6那里,这就是linux最先被挂载的根分区了;
再下来(第12行)将继续把sdc5挂载到/home,也就是说,sdc5这个本来关系平等的分区,现在感觉上成了sdc6的一个下级目录;
最后(第14行)将“挂载”swap分区,之所以打上引号,是因为这个交换分区有点特殊,因为他并没有被“附属”于/,而是独立使用的,至少你从根目录开始是找不到它的(所以挂载点并没有被写成/swap),总之,它被系统“霸占”了,你不能直接在这个分区读写任何数据。

:idea: 到此为止,一个真正“可用”的linux系统创建完毕,可以交付你使用了。



DIY_______________________________________________________________________________________
等等,你说了半天,可我的D盘E盘F盘到底在哪里啊?
额……,那你也等等,我费劲说了这么多,又打字又贴图的,容易吗我?怎么就是拧不过来你对分区的错误称呼方式呢?回1楼再去看看帖呀,请学会用正确的方法表达你的诉求——“等等,你说了半天,我的第二分区、第三分区……到底在哪里啊?”好不好?
这样才乖喔,蜀黍这就带你去找。

前面说了,如果你的电脑只有一块硬盘的话,那么所有分区都将被编号为sda,SCSI(IDE、SATA、USB disk) DISK A的意思,有两个的话就是sdb喽,而sda上的分区将继续被从1开始按物理顺序编号,所以你那个“D盘”,一般来说就是sda2了,请自己打开/etc/fstab(用sudo),在文件的最后加入一行(看不懂这些参数的乖仔请再次移步这里看3楼):

代码: 全选

/dev/sda2	<挂载点>	<分区格式>	<挂载参数>	0	0
然后……,不用重启电脑!再说一遍,不要总是用windows思维来套linux!请执行

代码: 全选

sudo mount -a
就可以在<挂载点>看到你要的东西了。
哎哎哎,再等等,我怎么知道分区编号是几啊,总不至于还要拆硬盘来看吧?
嗯,当然不至于啦,输入一个命令就好

代码: 全选

sudo fdisk -l
根据分区特征、大小等等信息,总该知道了吧?
这样还不行?那就打开gparted程序,有示意图就肯定没问题了。

有多个硬盘的口口(此处被EE屏蔽),建议使用UUID挂载分区以免混淆,获取UUID请使用blkid命令,看我的

代码: 全选

blkid
/dev/sda1: UUID="4028B77B28B76F12" LABEL="WINXP" TYPE="ntfs" 
/dev/sda5: LABEL="YEAR" UUID="0000-0000" TYPE="vfat" 
/dev/sda6: UUID="E4F018CFF018A9B6" LABEL="ST80PE" TYPE="ntfs" 
/dev/sda7: UUID="2A58D7CE58D796C3" LABEL="Program" TYPE="ntfs" 
/dev/sda8: UUID="E46CE5006CE4CDFC" LABEL="Fonts" TYPE="ntfs" 
/dev/sdb1: UUID="B6A4A454A4A4193F" LABEL="320A" TYPE="ntfs" 
/dev/sdb3: LABEL="DEBIAN" UUID="5d1dda14-04e7-42e2-9db9-82e5a1c71d30" TYPE="ext4" 
/dev/sdb5: LABEL="HOME" UUID="f63bf91f-38af-4c0f-92c2-22f57650ef85" TYPE="ext4" 
/dev/sdb6: UUID="84c7f174-fd5c-4872-9be8-f6afddca2b14" TYPE="ext4" LABEL="ARCH" 
/dev/sdb7: LABEL="P2P" UUID="36223d45-f7e2-4b23-a845-7e9fc4a9c5ab" TYPE="ext4" 
/dev/sdb8: LABEL="MUSIC" UUID="068a59a0-d30b-4d9a-896c-233794facfb1" TYPE="ext4" 
/dev/sdb9: LABEL="MOVIE" UUID="a4a14993-8675-4905-ae31-f2ca3a89e6ef" TYPE="ext4" 
/dev/sdc1: UUID="4444961844960CB4" LABEL="Windows7" TYPE="ntfs" 
/dev/sdc2: UUID="C634795434794907" LABEL="WD2" TYPE="ntfs" 
/dev/sdc3: UUID="24288C6C288C3F34" LABEL="WD3" TYPE="ntfs" 
/dev/sdc5: UUID="30BCB1D9BCB19A34" LABEL="WD5" TYPE="ntfs" 
/dev/sdc6: UUID="5C1CC4F61CC4CBE8" LABEL="WD6.Lib" TYPE="ntfs" 
/dev/sdc7: UUID="5E98D85F98D836ED" LABEL="WD7" TYPE="ntfs" 
/dev/sdd1: UUID="1E7CCB1E7CCAEF97" LABEL="ST160SYS" TYPE="ntfs" 
/dev/sdd5: UUID="C628FB7028FB5E3D" LABEL="ST160NT1" TYPE="ntfs" 
/dev/sdd6: UUID="DC607A20607A0196" LABEL="ST160NT2" TYPE="ntfs" 
很清楚吧?根据分区编号、卷标和分区格式,很容易就能找到你需要的UUID,用这个替代/dev/sda2即可。

:idea: 这是我的fstab最后的样子,没办法,硬盘太多。

代码: 全选

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc	/proc	proc	defaults	0	0
# / was on /dev/sda5 during installation
UUID=ce8493a2-73a2-46d3-ac32-fe28ac9ec860	/	ext4	errors=remount-ro	0	0
# /home was on /dev/sda6 during installation
UUID=5ae0aea4-f7bb-4504-bf0c-f3dbffc8fa0f	/home	ext4	defaults	0	0

#Seagat 320G
UUID=B6A4A454A4A4193F 	/home/MNT/ST320G/320A	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0
UUID=36223d45-f7e2-4b23-a845-7e9fc4a9c5ab	/home/MNT/ST320G/P2P	ext4	defaults	0	1
UUID=068a59a0-d30b-4d9a-896c-233794facfb1	/home/MNT/ST320G/MUSIC	ext4	defaults	0	1
UUID=a4a14993-8675-4905-ae31-f2ca3a89e6ef	/home/MNT/ST320G/MOVIE	ext4	defaults	0	1

#Seagat 80G
UUID=E46CE5006CE4CDFC 	/home/MNT/ST80G/FONTS	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0
LABEL=YEAR	/home/MNT/ST80G/YEAR	vfat    defaults,utf8,umask=000      0       0
UUID=2A58D7CE58D796C3 	/home/MNT/ST80G/PROGRAM	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0

#Seagat 160G
UUID=C628FB7028FB5E3D 	/home/MNT/ST160NT1	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0
UUID=DC607A20607A0196 	/home/MNT/ST160NT2	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0

#WestDigital 1000G
UUID=C634795434794907 	/home/MNT/WD1000/WD2	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0
UUID=24288C6C288C3F34 	/home/MNT/WD1000/WD3	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0
UUID=30BCB1D9BCB19A34 	/home/MNT/WD1000/WD5	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0
UUID=5C1CC4F61CC4CBE8 	/home/MNT/WD1000/WD6.Lib	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0
UUID=5E98D85F98D836ED 	/home/MNT/WD1000/WD7	ntfs-3g    defaults,utf8,umask=000,uid=adagio,gid=users       0       0
这是我画的挂载示意图(只画出单个硬盘,如果四个全画上,这图就成蜘蛛网了),请看:
mount01.jpg


OVER_______________________________________________________________________________________
:idea: 搞好了这些,你这辈子再也不用为挂载发愁了,安心用吧。

:idea: 我曾经看到有人发帖说,设定好了的壁纸,一旦重启就没了,变成光板桌面。这是怎么搞的呢?
其实问题很简单,就是——他不懂mount is what玩意!

我们的ubuntu使用的窗口管理器是gnome套件,用于管理文件的程序(相当于windows的资源管理器)是nautilus(鹦鹉螺)。
这个程序为了方便你的使用,精心打造了一种“点击挂载”方式,要说明的是,这种方式完全与fstab文件无关,它由另一个程序控制。
每次启动gnome以后,nautilus会根据内核检测到的分区信息,逐一把所有未挂载的分区罗列出来,并显示在左侧的“Places”栏里(下图鼠标处)
N1.jpg
当你要使用这个分区的时候,只需“点击”一下,就会在右侧显示出来。
其实这时候gnome执行了几个动作:
1. 根据用户点击的分区,在/media目录创建一个子目录,并使用分区卷标(没有卷标则使用分区容量)命名;
2. mount该分区到此目录;
3. 重启后就卸载,并删除此目录;
于是点击之后你就可以读写该分区了。

这种方式……,有好有不好。
好处是不用去编辑fstab文件,敲大堆的代码,随点随用,不用了右键即可卸载;
不好的地方呢?如同上面的那个壁纸“莫名消失”的困惑一样喽。
因为这种方式需要你每次启动后都要“点击”一下,也就是说它不会“记住”你曾经挂载过的分区,或者说它不是像fstab一样是自动的,顶多算半自动吧。

搞清楚了道理,那壁纸“莫名消失”的问题,也就不“莫名”了?
因为他设置的壁纸储存在“点击挂载”的某个分区,而刚进入桌面的时候你还没有“点击”,所以这张壁纸是“不存在的”,当然就只能看见一个光板桌面了。
很正常是不?

解决这个问题的办法只有一个,就是把壁纸放在fstab挂载的管辖范围之内。


:idea: 还有人经常问一个问题——我用fstab挂载的分区,为什么不出现在左侧“Places”里了?
是的,这样的确令人感觉不便。
不过解决办法也是一样的简单——加入“书签”
首先打开nautilus,进入你挂载好的目录(挂载点),按“CTRL+D”(呵呵,跟大多数web浏览器一样喔),或者菜单--->书签--->加入书签,然后就可以在Places的最下面看见它了(下图鼠标处),满意了吧?
N2.jpg


题外话_______________________________________________________________________________________
我的分区,如果在windows里就是酱紫:
本来应该是D盘的WD2,现在被他安排到了P盘,最重要的是这期间根本没有请示过我想不想这样!
当然我可以手动调整,不过我讨厌这样,我的电脑我做主,一个小小OS也敢来随意处置,它好大的胆!
7.JPG

介绍两个自动挂载分区的软件,ntfs-config和ivman,由于这不符合“我的电脑我做主”的精神,我本人从来不用,也强烈反对新手使用,所以具体情况请自己google,杀了你我也不说。 :lol:
这些用户感谢了作者 adagio 于这个帖子:
oldtype (2011-09-25 12:02)
评价: 3.7%
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
头像
adagio
论坛版主
帖子: 22120
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球
送出感谢: 7 次
接收感谢: 74 次

我的linux分区当初设置得不合理,如何调整或更改分区大小?

#3

帖子 adagio » 2010-02-18 18:12

刚入门的新手,似乎大多数都遇上过一个困扰——当初的分区不合理,怎么办?

最“傻瓜”的办法就是重装,我不罗嗦了。
不过这样的话,你就轻易放过了一个菜鸟变老鸟的大好机会,可惜。

想起飞又不怕摔得钻心疼的菜鸟请继续往下看。

其实如果你理解了linux的树形目录的话,这事干起来也没啥大不了的,借助几个工具,敲几行代码就行。

第一、准备一张liveCD,最好是desktop;
用alternat或者硬盘启动ISO文件也行,但alternat只能全终端操作,没有GUI喔;而硬盘启动必须保证ISO文件所在分区,与被影响到的分区完全无关。

第二、观察一下目前的分区状态,制定调整方案;
这里请搞清,你要调整一个分区,如果是变大,那么变大的部分只能从临近的分区“掠夺”而来,而且这个“临近的分区”必须是与被调整分区同类的,即同为主分区或同为逻辑分区,如果不是,那不幸的你只好再麻烦点,先调整为同类喽。
记住,临近同类是必须的,缺一不可。
如果是变小就简单点了,你可以把多余出来的部分合并入临近分区,或者单独建立为新分区;

步骤如下:
1. 使用gparted可动态调整分区(也可以叫“无损分区”),就是在不破坏原有分区数据的前提下,改变分区大小。这一步和windows没啥本质区别;
2. 编辑fstab文件,使系统能正常启动;
注意到fstab文件里的第一项了么?ubuntu默认使用UUID挂载,一般情况下这个UUID是不会变的,即使你把硬盘拿到其他电脑使用,也不会变。
但是,如果你“改变”了该分区现状,比如改变大小、格式化(正常的向分区写入数据不属于改变现状)等等,则将会重新生成新的UUID。
所以你必须在调整完毕后,在fstab中用新的UUID替换旧的,否则无法启动就是很自然的事了。

如果你的fstab用类似/dev/sda5这种写法的话……,也应该检查一下是否的确没问题。
合理的分区方案:

再一次不厌其烦的重申,linux是一个树状系统结构,所以根分区不用太多,在足够容纳系统及程序数据的情况下稍有富裕即可,多了就是浪费。
按照一般家庭用户的使用来说,如果主要用于上网、听歌、看电影等等,对于这种“大众化”的要求,可按照如下方案分配:
/ -------------->10G±5G(其实如果不用X的话,5G还嫌太多);
/home ------->1G~10G(足够存储配置文件和一些必要的数据即可,太大了不好);

以下为可选的(即不是必要的,没有也行)
swap -------->大于内存即可。如内存本身大于2G且不使用休眠功能的话,根本不需要这个分区;
/boot -------->如果你使用太大的硬盘(500G以上)且根分区被安排到了磁盘末尾部分,就在磁盘靠前部分分配一个/boot分区(放置内核用),100~200M足够。多一点都是浪费。如果你硬盘不大,或者根分区靠前的话,同样根本不需要这个分区;
/var ----------> 5~15G,对于网速不快且经常需要重装的新手,建议要,省去很多麻烦。

其他空间你自己看着办吧,搞好之后挂载到你喜欢的地方去就好。
如果你感觉当初的分区方案的确欠妥的话,动手!



:idea: 第一步_______________________________________________________________________________________

用liveCD启动系统(linux不是windows,你想直接在本机系统干这事也不是不可以,不过需要你具备更强的终端能力,请自己学习去吧)。
进入桌面后,首先问一个问题,如果现在需要调整fstab文件,它在哪?
——老师老师我知道,输入sudo gedit /etc/fstab,然后……
KAO,这位同学请自己出去弹老二100下,然后回2楼重读100遍再来!
——老师老师我知道,现在的根分区其实和刚才的不一样了,所以要找原来的fstab文件,必须先把原来的根分区挂载进来,成为现在系统下一个普通的挂载点,然后sudo gedit /<挂载点>/etc/fstab就OK啦!
呵呵,乖仔乖喔,过来老师亲一口。
然后呢?打开gparted调整?
等会……
这样当然是没问题的,不过你可能不了解一个情况,就是gparted干这事……,忒慢!
是的,慢到令人吐血,我曾经用它调整一个20G的分区,猜猜它干这事要多久?
10个小时。KAO!这点时间足够重装10遍的!
更要命的是,一旦开工就不能cancel了,否则你就准备找数据修复软件吧(没办法,windows下的分区工具PM、PQ这些不支持ext4,不过就算支持也难以令人放心)。

不过如果是空分区,那就好办了,20分钟足够!
so……,咱们变通一下,先把待调整的分区备份好--->然后删除,令它成为空闲分区--->再来调整好--->再重建分区--->再把备份的数据放回去
不就好了?挖哈哈哈哈~~~~
备份不能用ghost,这跟支持不支持linux没关系。ghost是以区块备份的,用这个等你调整好后再ghost恢复回去,包你到时候要傻眼。
原因么,自己搜去,总之不听我老人家劝,吃亏就在眼前。
我现在假定你需要增大鼠标指向的sda5(其实8G也够了),想把旁边sda6上的空间“挪”2G到sda5变成10G,保持sda1不变,并令其作为临时储存备份文件的地方(你得确定有足够空闲空间喔,可以用df命令查看sda5有多大,空闲空间至少要等于它)。
3-1.jpg


:idea: 第二步_______________________________________________________________________________________

请打开终端,使用强大的tar命令(类似生成windows的wim格式的ImageX,不过这玩意在tar面前简直是个小学生),跟我一起敲码:

代码: 全选

cd						(确保当前处于“家目录”)
mkdir  sda5						(建立一个名为“sda5”的空目录,之所以叫这个是为了保持与分区编号一致,以免头晕)
sudo mount /dev/sda5 sda5		(挂载第二分区到sda5)
cd sda5							(进去看看对不对)
ls								(实在不习惯终端的话,也可以打开nautilus看)
确定没问题吗?那么继续

代码: 全选

cd							(回到“家目录”)
mkdir sda1							(再创建一个空目录用于挂载sda1)
sudo mount /dev/sda1  sda1			(挂载sda1)
cd sda5								(再次进入sda5)
sudo tar -cvpf  ~/sda1/ubuntu.tar  ./ 	(打包本目录下的所有文件到sda1,并命名为ubuntu.tar,注意这里没有使用压缩,只为了节约时间)
等屏幕上停止滚动,再次出现终端提示符的时候,去~/sda1看看确定一下,然后

代码: 全选

sudo umount /dev/sda5		(卸载sda5,这是调整时必须的,可能sda1也必须卸载掉)


:idea: 第三步_______________________________________________________________________________________

OK,现在可以打开gparted胡作非为了

先删除sda5分区,然后从sda6哪里“掠夺”2G空间出来,再在10G空闲空间上创建sda5分区。这个怎么做不用我说了吧?
你可能会发现这样还是很慢,因为sda6上有数据,我说了,gparted干这事令人吐血。
所以……,如果你还有地方的话,可以像对付sda5一样对付sda6,即备份、删除、再调整、再还原,^_^

呵呵,好在调整分区这档子破事,咱也不用天天整吧?嫌慢就去找个gf聊聊哈。
等到那花儿也些了,你也就苦到头了,谁让你当时不想好了再下手呢?



:idea: 第四步_______________________________________________________________________________________

好了就再来,还是终端

代码: 全选

cd										(回到“家目录”)
sudo mount /dev/sda5  sda5						(再次挂载sda5)
sudo mount /dev/sda1  sda1						(再次挂载sda1)
sudo tar -xvpf  ~/sda1/ubuntu.tar  -C ~/sda5	(释放刚才打包的文件到sda5目录)
cd sda5											(再次进入sda5看看有问题没?)
我觉得应该可以了的说。 :em02



:idea: 第五步_______________________________________________________________________________________

也是最后一步——调整fstab文件

代码: 全选

blkid
sudo gedit ~/sda5/etc/fstab
把现在的新sda5的UUID贴上去吧,如果fstab里也挂载了sda6的话,一样,改!

再来,把grub菜单中所有引用到的UUID全改掉,否则等会你又要见到经典的ERRO 15了。

代码: 全选

sudo gedit ~/sda5/boot/grub/grub.cfg
请注意,如果/boot单独分区了的话,该挂载哪个分区、编辑那个文件就要自己琢磨琢磨了。

一切OK后,删除~/sda1/ubuntu.tar(当然你硬盘空间富裕的话,留着做个备份也不错,去学一学怎么用tar把它再压缩一下,呵呵)。



:idea: 如果你认为还应该有一步的话_______________________________________________________________________________________

就是重启,over 8-)
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
头像
adagio
论坛版主
帖子: 22120
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球
送出感谢: 7 次
接收感谢: 74 次

Re: 细说linux挂载——mount,即其他……

#4

帖子 adagio » 2010-02-18 18:12

每个人都会有一点点隐私,那心灵最深处的脆弱啊,被人触动了真的好痛好痛喔……
冠希老师:我、我、我……,就是啊~~哎哟好痛~~~
痛定思痛,早作打算,咱们不能让杯具重演,现在就来想想怎么把这些好痛痛的东西藏起来! :em11


首先请搞清楚一下几点:
第一、这里讨论的是隐藏,而不是加密;
第二、这里只讨论“一般情况”,之所谓“一般”,是以如下条件为前提下讨论的:
1. 你没有被人“惦记”着,或者至少只是被某个“新手”惦记着(因为如果某人执意挖空心思想偷窥你的话,天晓得他会怎么做);
2. 这些被隐藏的文件,你不需要经常使用,只作为备忘、备份的资料(想拿出来用比较麻烦);



不忙哈,咱们先聊聊其他几种方法

:idea: 最基本的一种,对付windows足够——放在linux分区里。
由于自大的M$的全面配合,任何windows系列OS都原生无法读写linux分区(准确点说是所有非MS分区),所以如果你装了双系统,而和你共用电脑的人只会在windows里闹腾的话,放心吧,你有充分的理由藐视他。
当然,这不是无懈可击的,因为有很多win版的软件可以读写linux分区。不过这又违反了刚才的假设,因为如果他能折腾这玩意,那就可以猜测他基本会使用linux,至少知道怎么进入双系统中的另一个,是不?

:idea: 最简单的一种,地球人都知道——就是加点喽。
利用linux的命名规则,所有文件和目录如果第一个字母是小数点“.”,那么将被看作隐藏文件而不予显示,nautilus等几乎所有文件管理器都会遵从这个规则,ls命令也一样,所以这不失为一种最简单可行的办法;
当然,要“破解”也超级简单,大多数文件管理器里按“CTRL+h”或强制显示隐藏文件即可,或者用ls -a命令也一样;
对于稍有linux使用经验的人来说——大哥你也太看不起人了吧?
不过话又说回来,对付我老婆还是足够了。

:idea: 最朴实的一种,地球上的所有高于单细胞等级的生物都知道——深挖洞、多盖土。
要点如下:
1. 建立一个拥有100多层子目录的目录,而且各层目录间都有100多个平行的子目录;
2. 目录名要没劲——比如“党的先进性教育”等等;
3. 文件名更要没劲——比如d54eaohye58ef10sdf.tmp等等;
4. 混杂在100多个大小相等、真正没劲的文件里;
缺点:
1. 此地无银三百两;
2. 你自己记性要好;

:idea: 最NB的一种,地球人没几个知道——改内核代码(由244楼友情赞助)。
tusooa 写了: 已经有了。
http://www.gobolinux.org/?page=doc/articles/gobohide
英文的。自己看。
列出优点:
  1. shell,file-manager什么的,都看不到
  2. 隐藏小目录还是很好的
缺点:
  1. 虽然ls dir看不到,但是还是可以直接敲文件名。(而且,gobohide -l 可以看到)
  2. 要给内核打补丁(更新内核之后就没了)
  3. 估计一般人不会搞。
:idea: 较聪明的一种,用linux的人都知道——利用权限。
我们知道linux下所有文件和目录都有一个x属性,对于文件来说,这标志着文件是否可以被执行。
而对于目录意味着什么呢?访问。
也就是说这个目录是否允许“进入”,注意是打了引号喔,原因等会便知。

你可以试试,新建一个目录,比如“123”,然后随便在里面放几个文件,然后执行

代码: 全选

chmod -x 123
这个命令的后果就是——拿掉所有用户对这个目录的x权限,也就是禁止所有用户进入这个目录。
好了,既然进不去,你的目的也达到了。

想进去的时候,只要再执行下面命令就行。

代码: 全选

chmod +x 123
当然,这方法对付终端有点问题,因为虽然不能cd进去,但是可以用ls 123这个命令看到里面的内容。
另外,如果人家是root账号,或者拥有sudo权限的话,你就白忙活了(这就是刚才加引号的原因)。
最后,这个搞法会使人感觉这个目录“怪怪”的,依然有点“此地无银三百两”的感觉。


好了,进入正题

:idea: 最聪明的一种,只有我知道——利用挂载。嘿嘿……

你能看完这么长帖子,不服不行!今天就便宜你了。

我们都知道,挂载其实就是把某个分区(目录)“嫁接”到另一个分区(目录)的某个目录下,形成一颗树。而当读写该目录的时候,实际是在读写挂载于该目录的另一个分区(目录)。


几乎所有的教程都会告诫你——不要在这个用于挂载的目录里放任何文件!

呵呵,请看清楚,并没有说“不能”喔!

其实,这个目录有没有“装”文件、“装”了多少文件,对挂载本身没有任何影响;
受影响的是本身“装在”该目录里的文件,因为一旦挂载成功,这里面的文件就“消失”了。注意,不是没了,也不是删除了,而仅仅是暂时“看不到”。
现在这个目录里的内容,被挂载到这里的分区取代了。
打个比方吧,你去租房住,进去后可能会对前主人在墙上留下的“到此打炮”什么什么的很讨厌,怎么办呢?拿张报纸糊上不就行了?

嗯,如果现在有人拜访你,还会看见那几个字么?
——废话,你以为我用的透明纸啊?

好的,再问一个问题,那几个字还在不在?
——越发废话了不是?当然在啊,只是现在看不见了而已,过几天我搬走,人家房东进来把报纸撕了不还在那么?
YEAH!这回明白了。
比如刚才的123目录吧,假如里面有个abc.txt文件。当挂载一个分区(目录)到这里的时候,再看123目录的内容,abc.txt文件不见了,取而代之的是另一个分区(目录)的什么什么文件了;而只要卸载掉这个分区(目录),abc.txt又神奇的出现了,娃哈哈哈哈~~~~~

啥,你还是没听懂?唉,真是朽木不可雕也……

现在假定你有一个很要命的银行密码,记在脑子里吧,怕忘了;写在纸上吧,怕让人看见,咋整呢?

这样,把它存为一个文件,然后放在/home目录里(PS:看清楚,不是home分区!),然后编辑fstab,把真正的home分区挂载到/home目录,就行了。

放心吧,谁会吃饱了撑的想起卸载home分区看看?
古人云:大隐隐于市;民间也有说:灯下黑,基本都是这个意思了。藏东西,咱就要藏在最出乎意料的地方。娃哈哈哈~~~~~


优点:
1. 隐蔽。我刚才说了,谁也不会没事突然想起卸载home分区玩吧?
2. 自动化。fstab是每次开机必然要生效的,所以根分区上的那个/home/xxx文件永远都看不到,root也不例外!任何人都只能看到被挂载到这里的、另一个home分区的内容。
3. 普通账号想卸载home分区很难,至少我不会搞。

缺点:
1. 不能存储太大的文件,太大必然占用太多的空间,任何人随便敲的df命令就会对根分区的空间莫名消失的奇怪现象发生兴趣。
2. 如果人家拥有root账号,这方法就不一定保险了;二如果人家用了liveCD,或者启动了另一个linux的话,这个“障眼法”将自然失效。
3. 如果有谁想重装系统,所以格式化了根分区的话……,偶卖糕的,这么重要的东西,但愿你还没忘了。


以下由41楼xiooli补充,特此感谢!(我就说了,教人的同时也是自己学习的过程是不?) :em09
藏东西那个也可以用mount bind, 不必要非得挂个分区在藏东西的目录上去,也可以挂另外一个存在的目录上去,来个例子:

代码: 全选

xiooli@XIOOLI> ls tst0 tst1
tst0:                                                                                           
no_big_deal                                                                                     

tst1:
top_secret
fstab上这么写:

代码: 全选

/home/xiooli/tst0 /home/xiooli/tst1 none defaults,bind 0 0

代码: 全选

xiooli@XIOOLI> sudo mount -a  
密码:
xiooli@XIOOLI> ls tst0 tst1 
no_big_deal

tst1:
no_big_deal
看不懂的我来解释一下:

假设你有两个目录,分别是tst0tst1,tst0下有一个文件no_big_deal,而tst1下有另一个文件top_secret
如果利用mount 的bind参数,把tst0“挂载到”tst1的话,则tst1下的top_secret文件将同样被“隐藏”,而打开tst1后将只能看到tst0目录下的no_big_deal文件。

当然这样的方式,人家要卸载比较简单,前提是他必须先“察觉”到tst1目录的“异样”,并且拥有root权限。






OK,所谓天下没有真正安全的地方,你要是走了背运,掉进茶杯里淹死了也难说。尽力而为,听天由命吧!

PS:开动脑筋喔,学会把上述几种方法组合使用(改名、隐藏、100层子目录、挂载),效果肯定好得不得了!
另外,这种挂载隐藏的方式,在windows的NTFS分区上同样适用,自己琢磨去。



写到这里,基本说完了,强调你一句:这里可没有讨论任何加密的办法,全部都在“隐藏”二字上做文章。
如果真的是很重要的东西的话,建议还是加密吧,自己google去,我不懂。

结束语:不怕贼来偷、就怕贼惦记,真要让人家高手惦记上了,那就算FBI也没法。
对于像冠希老师那样品味不凡、质量极佳、水平又极高的教材级货色,奉劝各位还是把硬盘装裤兜里,再给裤兜装把锁才是王道。
另外找人修电脑的时候最好—— 1. 事前调查甄别、2. 事中全程监控、3. 事后杀人灭口。

广告:实在搞不定就来“夜黑风高”论坛,“杀人放火”区找我,保证价钱公道、手法干净(发帖时注明“ubuntu-cn网友”还可以享受VIP特惠价喔)。
这些用户感谢了作者 adagio 于这个帖子 (主题 2):
寒风起 (2012-09-05 15:18) • ceclinux (2013-12-01 3:42)
评价: 7.41%
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
头像
missing
帖子: 1470
注册时间: 2008-03-28 20:52
系统: QNX
送出感谢: 3 次
接收感谢: 1 次

Re: 细说linux挂载——mount,即其他……

#5

帖子 missing » 2010-02-18 18:13

去死Y(^_^
missing is i missing you...
delectate
帖子: 18311
注册时间: 2008-01-09 22:41
送出感谢: 0
接收感谢: 6 次

Re: 细说linux挂载——mount,即其他……

#6

帖子 delectate » 2010-02-18 18:18

纯属路过 :em06
moximoxi
帖子: 1967
注册时间: 2008-09-30 17:46
送出感谢: 4 次
接收感谢: 2 次

Re: 细说linux挂载——mount,即其他……

#7

帖子 moximoxi » 2010-02-18 18:19

期待续集。 :em11
moximoxi
帖子: 1967
注册时间: 2008-09-30 17:46
送出感谢: 4 次
接收感谢: 2 次

Re: 细说linux挂载——mount,即其他……

#8

帖子 moximoxi » 2010-02-18 18:21

“根”很重要,比如“命根”,“阳根”。
头像
maivel
帖子: 293
注册时间: 2009-05-01 7:35
送出感谢: 0
接收感谢: 0

Re: 细说linux挂载——mount,即其他……

#9

帖子 maivel » 2010-02-18 18:22

留个脚印 :ema0
我这个人天生愚笨,体内装进一点点东西就会往外面冒,满地都是,一不小心就成了才华横溢。
头像
smallapple
论坛版主
帖子: 7867
注册时间: 2009-03-28 15:12
送出感谢: 0
接收感谢: 19 次

Re: 细说linux挂载——mount,即其他……

#10

帖子 smallapple » 2010-02-18 18:27

大三八又出教程了 :em09 :em11
头像
tenzu
论坛版主
帖子: 36913
注册时间: 2008-11-21 20:26
送出感谢: 0
接收感谢: 21 次

Re: 细说linux挂载——mount,即其他……

#11

帖子 tenzu » 2010-02-18 18:29

八哥威武
头像
张少彬
帖子: 793
注册时间: 2009-07-18 11:33
送出感谢: 1 次
接收感谢: 0

Re: 细说linux挂载——mount,即其他……

#12

帖子 张少彬 » 2010-02-18 18:33

你他娘的.....
Men are from Mars, I am from the grave
有一次,我去应聘,考官说:“哦,什么味儿?”
我说:”啊,对不起,是我,你知道死人总是有一点味道的“
头像
onshoestring
论坛版主
帖子: 4666
注册时间: 2009-09-06 5:53
送出感谢: 0
接收感谢: 108 次

Re: 细说linux挂载——mount,即其他……

#13

帖子 onshoestring » 2010-02-18 18:40

大三八好强,八块硬盘。
头像
adagio
论坛版主
帖子: 22120
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球
送出感谢: 7 次
接收感谢: 74 次

Re: 细说linux挂载——mount,即其他……

#14

帖子 adagio » 2010-02-18 18:55

4块4块,多挂了几个目录而已 :em06
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
头像
tenzu
论坛版主
帖子: 36913
注册时间: 2008-11-21 20:26
送出感谢: 0
接收感谢: 21 次

Re: 细说linux挂载——mount,即其他……

#15

帖子 tenzu » 2010-02-18 18:56

4块4块,不就是八块?
回复

回到 “教学和常见问答”