Total Pageviews

Friday 19 July 2013

如何把ubuntu安装到U盘上.



    首先为什么我要把系统安装在U盘上呢?因为有时候去别人家的似乎用别人的电脑很不习惯,就拿浏览器来说,我用火狐,人家用360,我用360浏览网页的时候会感到很不适应,用起来始终没有我的火狐顺手,而且我很别人的习惯还不仅仅是这些差距,所以把ubuntu装到U盘上之后不管到哪里只要用电脑,用的都是我自己配置好的系统.而且刚好新到手的U盘读写速度够快,用起来也不会太卡.

好了这里开始说正文了,如何安装ubuntu系统.

1)首先要分区,我们可以通过gparted这个软件来进行分区,插入U盘后打开gparted,然后切换到/dev/sdb(这里的sdb代表的是你的U盘,请按照自己的实际情况进行选择),然后点击设备,创建分区表,然后会弹出一个提示,点击确定即可,然后在在sdb的图形上右键,你会看到一个新建,然后点击,接着会弹出一个创建分区的窗口,把分区格式中的ext2改成ext4格式然后点击添加.然后点击应用说做的更改,等一会你会发现U盘已经格式话好了.然后拔下U盘,在重新插入U盘,下面我们就要进行第二步了.

2)安装系统到U盘上,其实在这里有两种方法进行安装,

2.1)一个就和正常的安装系统一样,进入Live usb后插入U盘,然后点击安装,只不过在安装位置那里把硬盘改成U盘,并且把grub安装到U盘上,剩下的就和安装到硬盘上没有什么两样了,只不过这样安装之后需要慢慢的进行配置,比如安装软件呀,配置软件什么的,因为U盘的速度以及网速问题,可能需要较长的时间,这里我使用第二种方法,还原法.

2.2)所谓的还原法就是把已经安装并配置好的系统用tar打包,接着解压到新的分区中的方法具体的方法大家可以看我的这篇文章<Ubuntu下备份系统的方法> 这里我已经有了一个系统备份文件,他的位置是/home/aaa/backup.tar 这里我们先用cd命令进入U盘目录下,这里U盘目录在ubuntu下面就是/media/你的U盘的uuid ,这里我们假设U盘uuid是abcdefg,那么就使用一下命令

1    cd /media/abcdefg
接着我们要开始进行系统的解压了,在命令行接着输入一下内容

1    sudo su
2    然后输入你的用户密码(用户密码不显示)
3    tar -xvpzf /home/aaa/backup.tar
然后等待一段时间知道终端上已经完成解压,到这里第二部已经完成,下面就是第三步了.

3)安装grub到U盘

光有系统我们也是不能进入系统的我们还要有引导程序,让我们可以成功的进入系统,这里我们首先修改fstab文件.

使用一下命令修改U盘上的fstab文件

1    gedit ./etc/fstab
然后在gedit的窗口中找到这样的一行

UUID=84d70d9a-51d8-4154-8990-325d55002f56 / 注意这里=后面的uuid就是你原来系统根分区的uuid这里因该改成现在U盘的uuid,在前面我们已经假设U盘的uuid是abcdefg,这里就应该改成这样

UUID=abcdefg /

如果你的系统原来有home分区记得把fstab中的home分区这一段注销,然后保存.

接着我们输入一下命令来进行grub的安装

1    mount /dev ./dev
2    chroot ./
3    dpkg-reconfigure grub-pc
当你输入了最后一条命令的时候终端会提示你一些内容,你不用管他,你要注意的是但他提示你要把grub安装到拉你的时候用上下键选中sdb也就是你的U盘,然后按空格键,这是你会看到sdb的前面会有一个星号,这说明你要把grub安装到sdb上,然后用tab键跳到ok上回车,等他完成的时候grub就已经安装完成了,不个这个时候最好修改一下grub.cfg文件,把里面的hd1改成hd0,不然有可能启动不了.

4)完成安装

现在真个系统已经安装好了,我们用一下命令移除之前做的工作.

1    exit
2     #退出chroot
3    umount ./dev
4     #移除dev文件夹的挂载
5    exit
6     #退出root
好了这下U盘系统我们就制作好了,不信你可以从U盘启动试试,保证和你的系统完全一样,最多只是速度慢了一点而已.

ps:因为U盘类是于ssd硬盘,我们可以按照ssd硬盘的优化方法进行一些优化,ssd硬盘优化可以查看下面的文章.
-----------------------------

Linux系统中对SSD硬盘优化的方法

这里说的优化是针对EXT4格式,因为看了很多国外网站的很多读写评测,目前来说,EXT4在SSD硬盘是最快的,所以推荐使用SSD硬盘的使用EXT4格式。优化方案如下:

文章提到的fstab在/etc里面,可以直接运行"sudo gedit /etc/fstab"来修改

1、关闭日志功能

方法一:

fstab里加挂载参数data=writeback,如:

原始的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 relatime,errors=remount-ro 0 1

改后的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 relatime,errors=remount-ro,data=writeback 0 1

 进过我的测试发现ubutnu下这样没有用,要这样才可以用.

打开grub:

1    sudo gedit /etc/default/grub
在GRUB_CMDLINE_LINUX_DEFAULT=""中添加rootflags=data=writeback 然后更新grub

方法二:

还有直接去掉日志功能的方法,这样是不用重新分区的:

运行指令:tune2fs -O ^has_journal  /dev/sda1

检查是否去除了日志:sudo dumpe2fs /dev/sdxn | grep 'Filesystem features' | grep 'has_journal'

ps:回复日志功能

运行指令:tune2fs -O ^has_journal  /dev/sda1

检查是否去除了日志:sudo dumpe2fs /dev/sdxn | grep 'Filesystem features' | grep 'has_journal'

自己把/dev/sda1改为相应的分区号,要卸载分区才能运行该指令。



2、禁止记录最近一次访问的时间戳

默认情况下,Linux ext 文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳,比如:文件创建时间、最近一次修改时间和最近一次访问时间。因为系统运行的时候要访 问大量文件,如果能减少一些动作(比如减少时间戳的记录次数等)将会显著提高磁盘 IO 的效率、提升文件系统的性能。Linux 提供了 noatime 和nodiratime这两个参数来禁止记录最近一次访问时间戳。

给文件系统挂载的时候加上noatime和nodiratime参数能大幅提高文件系统性能:

原始的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,errors=remount-ro 0 1

改后的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,noatime,nodiratime,errors=remount-ro 0 1



3、启用 TRIM 功能

    Trim的作用

原本在机械硬盘上,写入数据时,Windows会通知硬盘先将以前的擦除,再将新的数据写入到磁盘中。而在删除数据时,Windows只会在此处做 个标记,说明这里应该是没有东西了,等到真正要写入数据时再来真正删除,并且做标记这个动作会保留在磁盘缓存中,等到磁盘空闲时再执行。

这样一来,磁盘需要更多的时间来执行以上操作,速度当然会慢下来。

而当Windows识别到SSD并确认SSD支持Trim后,在删除数据时,会不向硬盘通知删除指令,只使用Volume Bitmap来记住这里的数据已经删除。Volume Bitmap只是一个磁盘快照,其建立速度比直接读写硬盘去标记删除区域要快得多。这一步就已经省下一大笔时间了。然后再是写入数据的时候,由于NAND 闪存保存数据是纯粹的数字形式,因此可以直接根据Volume Bitmap的情况,向快照中已删除的区块写入新的数据,而不用花时间去擦除原本的数据。

以上就是Trim的原理以及真正作用。

注意:如果SSD组RAID0后,将失去Trim功能



   Linux内核从2.6.33开始提供TRIM支持,所以先运行“uname -a”命令,查看自己的内核版本,如果内核版本低于2.6.33的,请先升级内核。

然后运行“hdparm -I /dev/sda”查看自己的硬盘支不支持TRIM技术,如果支持,你会看到

* Data Set Management TRIM supported

如果上面两个条件都满足了,就可以在fstab中添加discard来开启TRIM功能,如:

原始的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,errors=remount-ro 0 1

改后的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4

discard,defaults,errors=remount-ro 0 1


4:配置固态硬盘(SSD)的I/O调度程序

    优化的第三个部分涉及到I/O调度程序。该模块是一个决定如何处理I/O请求的核心组件。默认情况下就是非常公平的排队,对于普通的磁盘驱动器来说,这是很好的方案,但对于以期限调度为优势的固态硬盘来说,这并不是最好的。

   如果你想在系统中对所有磁盘采用期限调度,可以在内核加载时把elevator=deadline这句话加入到系统引导管理器(GURB)中;如果你只 是想针对某一个磁盘,就应该在rc.local文件中加入类似如下实例的一句话,那么每次当系统重启,期限调度就会应用到指定的磁盘。如下实例将会对 /dev/sdb磁盘采用期限调度。

    echo deadline > /sys/block/sdb/queue/scheduler
    给IO的算法修改成 noop,操作系统本身不做处理,让 ssd 本身处理.
    echo noop >  /sys/block/sda/queue/scheduler

ps:

查看當前系統支持的IO調度算法
dmesg | grep -i scheduler
查看當前系統的I/O調度方法:
cat /sys/block/sda/queue/scheduler

5:把缓存放到内存中

修改fstab,在fstab文件中添加一下内容
1    tmpfs /var/log tmpfs defaults 0 0
2    tmpfs /tmp tmpfs defaults 0 0
3    tmpfs /var/tmp tmpfs defaults 0 0
然后输入一下命令重新挂载或重启:
1    sudo mount -a

然后,可以在Firefox上通过about:config设置,把cache放到/tmp去,提高Firefox效率外,同时也可以减少对SSD的读写。

新增字符串 browser.cache.disk.parent_directory 设置的数值为 /tmp

接着在档案 /etc/rc.local 中的 exit 0 前加入以下七行令开机时自动建立 /var/log 中的目录:

for dir in apparmor apt news cups dist-upgrade fsck gdm installer samba unattended-upgrades
do
    if [ ! -e /var/log/$dir ]
    then
            mkdir /var/log/$dir
    fi
done

ps:我用ubutnu12.04测试了一下,发现不再rc.local中添加上面的七行也可以.大家可以先不添加,要是出了问题再添加比较好.