出于各种需求,很多用户可能经常会在Windows系统中安装虚拟机,然后在虚拟机中安装Linux系统。使用虚拟机的优点是可以同时使用多个系统,而缺点也是显然的,也就是程序运行效率较差。
 
而实际上,Linux系统也可以完全安装到U盘中(注意这里不是用UltraISO、UNetBootin、Universal USB Installer那样的基于Live CD的安装,而是以在U盘中创建ext分区的方式进行安装)。顺便说一下,Windows系统(不包括PE)直到Windows 8才支持完全将系统安装到U盘上。
 
而一个更好的消息是:我们可以将安装在虚拟机中的Linux系统迁移到U盘中!安装到U盘之后,系统就能随时携带,随时使用了,当然电脑需要支持U盘引导系统。
 
顺便说一下,在使用最新的USB 3.0高速U盘的情况下,装在U盘中的系统运行还是比较流畅的,和普通的机械硬盘差不多。笔者最近一段时间使用的U盘都是 ADATA S102 PRO。
 
本文以 Ubuntu 10.04 / VirtualBox 4.2 环境为例讲解如何进行系统的迁移。
 
操作步骤

I. 在虚拟机中安装系统
 
1. 创建一个Virtual Box虚拟机,将硬盘容量设置为14.3G、固定容量,这样几乎所有的16G U盘都能装的下了
2. 载入虚拟光驱安装 Ubuntu 10.04,按照自己的喜好进行分区(笔者分别将8G和5G的分区挂载到了 / 和 /home,另留1G作swap分区)
3. 安装完系统后,升级内核至最新版
4. 安装各种需要的软件:vim、g++、gnome-mplayer、chromium-browser、compiz、emerald、texlive...
 
II. 使用dd创建整个硬盘的镜像文件
 
1. 首先关机
2. 使用VirtualBox创建一个新的虚拟硬盘
3. 使用Live CD启动系统,然后打开终端,使用cd进入到新硬盘挂载的目录下,输入以下命令:
sudo dd if=/dev/sda bs=4M | gzip > ubuntu-usb.disk.gz
 
III. 将创建得到的dd镜像写入U盘
 
1. 将准备好的16GU盘插到电脑上,并加载到虚拟机里,这里假设设备名为 /dev/sdc
2. 修改设备权限:
sudo chmod  /dev/sdc

3. 将dd压缩镜像写到U盘里(注意该步骤可能会持续一到两个小时,请耐心等待):

sudo gzip -dc ubuntu-usb.disk.gz | dd of=/dev/sdc bs=4M

4. 关闭虚拟机,重启主机,在开机时选择从U盘引导,这样就可以进入U盘中的Linux系统了

后记:笔者一直都有把Linux系统装到U盘里的习惯,本来安装的时候都是使用两块U盘:一块用来做Live CD安装盘,另一块用来做目标系统盘,然后用Live CD启动系统再安装。最近突然想到或许可以有一个更简单的方式:可以一边使用Windows做其它事一边装系统,等系统的配置工作都差不多了,再写到U盘里,于是就在实践这个想法的同时写下了这篇文章,而最后也成功了。至于为什么系统还是用10.04呢,其实这是Ubuntu最后一个基于Gnome 2的版本,桌面的主题支持很丰富,另外也可以使用 Compiz / Emerald,至于如果实在需要最新的软件,那么PPA或者自行编译也能解决问题。

最后放张图片留个纪念

[小技巧] 把虚拟机中的Linux系统安装到U盘中的更多相关文章

  1. 把虚拟机中的Linux系统安装到U盘中

    [小技巧] 把虚拟机中的Linux系统安装到U盘中 出于各种需求,很多用户可能经常会在Windows系统中安装虚拟机,然后在虚拟机中安装Linux系统.使用虚拟机的优点是可以同时使用多个系统,而缺点也 ...

  2. 【转】在VMware中为Linux系统安装VM-Tools的详解教程

    在VMware中为Linux系统安装VM-Tools的详解教程 如果大家打算在VMware虚拟机中安装Linux的话,那么在完成Linux的安装后,如果没有安装Vm-Tools的话,一部分功能将得不到 ...

  3. VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程

    VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境 ...

  4. 1008win7与虚拟机中的linux共享文件的(详细)方法

    转自http://jingyan.baidu.com/article/ca00d56c74dde4e99eebcfd2.html 好东西一起分享 win7与虚拟机中的linux共享文件的(详细)方法 ...

  5. 用SSH登录局域网中使用网络设置为NAT的虚拟机中的linux

    环境描述: A客户机,安装有putty软件使用SSH方式登录B主机中的虚拟机中的linux:A机的网络地址:192.168.1.2 B主机为Windows7平台,B主机的网络地址为:192.168.1 ...

  6. 配置SecureCRT连接本地虚拟机中的Linux系统

    转自:http://www.pythoner.com/196.html 由于平时公司开发时都是使用SecureCRT连接的Linux服务器,所以也想使用SecureCRT在自己电脑上连接本地虚拟机中的 ...

  7. Hadoop开发第2期---虚拟机中搭建Linux

    注:关于如何将hadoop源码导入Eclipse详见http://pan.baidu.com/s/1hq8ArUs 一.Hadoop配置软件(我的电脑是Windows7旗舰--64bit) 1. VM ...

  8. 虚拟机中实现Linux与Windows之间的文件传输

    虚拟机中实现Linux与Windows之间的文件传输 标签: linux 2016年06月28日 11:17:37 2092人阅读 评论(0) 收藏 举报  分类: linux(2)    一.配置环 ...

  9. VMware虚拟机中为Linux 添加虚拟硬盘(VirtualBox方法类似)

    修改1:2014-06-24 11:38:21 Linux添加硬盘是在原来安装的硬盘空间不够或者需要使用其他硬盘上的东西时候的解决办法,因为大多数初学者习惯使用虚拟机,这里以在Vmware虚拟机中实现 ...

随机推荐

  1. Android中的创建型模式总结

    共5种,单例模式.工厂方法模式.抽象工厂模式.建造者模式.原型模式 单例模式 定义:确保某一个类的实例只有一个,而且向其他类提供这个实例. 单例模式的使用场景:某个类的创建需要消耗大量资源,new一个 ...

  2. 【回顾整理】暴走的SQL语句练习!!!

    设计一个学生成绩数据库,该库包含学生,老师,课程和成绩等信息并完成后面的练习.学生:学号(SNO).姓名(SNAME).性别(SSEX).生日(SBIRTHDAY ).所属班级(SCLASS )课程: ...

  3. 详细介绍ASP.NET页面重定向方法

    ASP.NET中页面重定向的使用的很频繁,实现方法也有不同,自己也试过几种,现在总结一下. 一.Transfer Execute Redirect重定向方法介绍 1.Server.Transfer方法 ...

  4. sql server代理中作业执行SSIS包失败

    RT,执行失败了,总是只提示一句“以xxxx用户身份执行失败”,很难找原因. 引用 http://bbs.csdn.net/topics/300059148 Sql2005如何用dtexec运行ssi ...

  5. 设置cas server使用http非安全协议

    目录 1.tomcat添加https安全协议 2.下载cas server端部署到tomcat上 3.CAS服务器深入配置(连接MYSQL) 4.Apache Shiro 集成Cas作为cas cli ...

  6. js函数知识点

    1.即使写成functon a()也是可以调用外面定义的变量的,写(a,b),我估计是为了降低耦合性 2.即使写成function a()也是可以用arguments[a]来默认写了(a,b) 3.在 ...

  7. [转]Windows与Linux系统下的库文件介绍

    什么是库   库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系 ...

  8. PS 色彩的色相谱

    7- 色彩的色相谱 在这个环中,位于180度夹角的两种颜色(也就是圆的某条直径两端的颜色),称为反转色,又称为互补色.互补的两种颜色之间是此消彼长的关系,小框往蓝色移动的同时就会远离黄色, 黄色=白色 ...

  9. 什么是SPI通信?

    SPI:高速同步串行口.3-4线接口,收发独立.可同步进行. SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.是Motorola首先在其MC6 ...

  10. Java学习笔记--通过java.net.URLConnection发送HTTP请求

    http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...