缘由:
- 自己经常需要帮别人掰掰机器;
- 现在的笔电都有内置的 SD 卡读卡器,就算没有我手头也有 USB 接口的读卡器;
- SD 卡比 U 盘便宜多了,而且手上有闲卡。
鉴于以上几点,我打算制作一只 SD 卡启动盘以备不时之需。(现在的 SD 卡好像以前的软盘,一插就能用,还带写保护 =。=)
准备工作:
首先准备一张 1GB 的空白 SD 卡(如果你觉得你要塞下很多其它的玩意的话你也可以用 2GB 的,但是 4GB 的就完全不必了,很浪费),下载好 Ubuntu 11.10 的 CD 镜像(用 amd64 的镜像吧骚年,我是不打算对付那些古董机器),然后还需要一台已经装好 Ubuntu 的机器(从 Live CD 启动的也可以)。最后还需要一只有足够空间( 1GB 绰绰有余)的移动存储设备来存放一些临时文件(这货其实可以省掉,但是正如大家知道的那样,写这篇文章的家伙是异常地懒啊……)。
制作步骤:
- 从 Ubuntu 的程序菜单中找到“启动盘创建器”(如果你不用 Unity 的话,可以在“系统”→“系统管理”菜单中找到它);
- 单击“其它”按钮并找到你下载的 Ubuntu 11.10 安装 CD 镜像;
- 插入准备好的空白 SD 卡,在列表中选中那张卡并点击“格式化磁盘”;
- 点击“制作启动盘”按钮。
这样一张基本的 SD 卡启动盘就做好了。然而这是远远不够的,因为有好多要用的工具里面都没有……
现在列出要用的玩意:
- mentohust
- smartmontools
- nmap
- wireshark
- and blah blah blah
为了安装这些包,我们需要用 SD 卡引导系统(进入到卡上的系统中)。鉴于 VirtualBox 没有 USB 引导支持,我索性拿来老妈的机器用。
- 插入 SD 卡,在 syslinux 的启动菜单中选好语言并引导系统;
- 单击 Unity 菜单中的“系统设置”→“软件源”,修改必要的设置,尤其是要让他用中国的镜像服务器(要不然非跪了不可);
- 连上网络(我用的无线);
- Alt + F2 运行 gnome-terminal (打开终端干活咯!);
- sudo apt-get update ;
- sudo apt-get upgrade -d ;
- sudo apt-get install blah blah blah … ;
- 插入事先准备好的移动存储设备,将 /var/cache/apt/archives 下的 deb 包统统拷进去;
- 重启系统,并且仍然用 SD 卡引导,同样设置一下软件源并联网;
- 最好先 sudo apt-get update 一下免得呆会儿麻烦;
- 剔除移动存储设备里不需要的软件包,比如 libreoffice/thunderbird/banshee/ubuntu-docs 的更新等等;
- 打开终端,切换到移动存储设备下;
- sudo apt-get purge software-center (否则下一步你就坐等死机吧……如果机器只有 2GB 内存的话。);
- sudo dpkg -i *.deb ;
- 观察有无安装失败的包,若有则单独安装,看看出现了啥问题。一般是些依赖问题,很容易解决( sudo apt-get -f install 什么的……);
- 重复上述两步直到所有包都能正常安装;
- /var/cache/apt/archives 下会新增一些 deb 包(因为解决了依赖问题),同样把它们拷入移动存储设备中;
- 重启进入正常的系统,在 SD 卡下建立一个文件夹,把先前存在移动存储设备上的 deb 包放进去;
- 把一些其他的玩意例如 CUDA-Z 之类的也扔进去;
- 写个脚本,里面是 cd `dirname $0`; sudo dpkg -i *.deb 一类的。
至此,这张 SD 卡启动盘基本上完工了,可怜的 1GB SD 卡也应该基本上啥剩余空间都没有了。弹出然后锁上写保护,最后用圆珠笔在上面写上一点说明的文字吧。
制作完毕之后:
$ tree /media/LINUX_X8664/TOOLS/ /media/LINUX_X8664/TOOLS/ ├── 802.1x │ ├── dot1xclient-1.1.1_THU_3.0.4 │ │ ├── dot1x │ │ ├── dot1xc │ │ ├── dot1xpasswd │ │ ├── etc │ │ │ ├── dot1xc.conf │ │ │ └── passwd │ │ └── ReadMe │ ├── drcom-1.4.8.1.tar.bz2 │ ├── h3c802.1xClient_HZAU │ │ ├── linux1x-h3c-2.20-0210-modified-stripped │ │ ├── pre.sh │ │ ├── readme.pdf │ │ └── renew.sh │ ├── mentohust-0.3.1-stripped │ ├── tunet-3.0.6-5-Linux-i686_THU │ │ ├── README │ │ ├── tunet │ │ ├── tunetclient │ │ │ └── tunet.conf │ │ └── tunetpasswd │ └── wxipgw_0.985_amd64.tar.gz ├── install.sh ├── misc │ ├── asfbin-bin │ ├── cpyrit-cuda-0.4.0.tar.gz │ ├── cpyrit-opencl-0.4.0.tar.gz │ ├── CUDA-Z-0.5.95-i686.run │ ├── flashplayer11_rc1_install_lin_64_090611.tar.gz │ ├── flashplayer11_rc1_playerglobal_090611.swc │ ├── JLink_Linux_V440a.tar.bz2 │ ├── mediacheck │ ├── pyrit-0.4.0.tar.gz │ ├── UnixBench.tar.bz2 │ └── youtube-dl └── pool ├── accountsservice_0.6.14-1git1ubuntu1_amd64.deb ...... ├── first │ └── libpam-modules-bin_1.1.3-2ubuntu2.1_amd64.deb 19 directories, 494 files
多出来个 first 是因为 dpkg 在处理依赖的时候会出现一点小抽风……
/media/LINUX_X8664/TOOLS/install.sh 的内容(写的小脚本,方便每次启动后安装额外的软件包):
#!/bin/sh sudo apt-get purge software-center cd `dirname $0` cd pool/first sudo dpkg -i *.deb cd .. sudo dpkg -i *.deb
做好后的 SD 卡引导盘系酱紫滴:
恩,用的联想(←本文最大槽点无误)的 1GB 66倍速(俗称龟速)卡,这张卡还是在云南旅游的时候买的,当时相机上的 512MB SD 卡吃不住了……
制作心得:在 SD 卡上写字好难啊,如果有极细的油性笔就好了。