2007.05.13 
 
二十一世纪到了,每个人都强调自己的个性,于是一种叫做DIY的东西悄然兴起。
  操作系统作为全人类智慧的结晶,自然DIY起来难度极大,因而DIY出一个操作系统成就感绝对比买宜家的东西的成就感大。
  为了不至于从头开始编写一个操作系统,我们当然把采用现成的操作系统作为一个底线。
  当然,我们可以通过LFS让我们爽到底,但是,能够做到LFS的人可真的是凤毛麟角。而且更重要的是LFS简直在挑战我的忍耐程度。
  我的这篇文章,教大家如何DIY一个自己的ubuntu发行版。在非常节省时间的情况下,达到耍酷的目的。
  就好比LFS一样,我们需要一个创作基地。我们首先建立一个变量。建立这个变量的好处很明显,即使你不用~/diy_ubuntu这个目录,一样可以照着这个文章继续做下去。
  $ export WORK=~/diy_ubuntu
  $ mkdir -p $WORK
  然后我们把光盘镜像文件挂到/mnt
  $ sudo mount -t iso9660 -o loop dapper-live-i386.iso /mnt
  $ cd $WORK
  复制文件光盘文件
  $ mkdir ubuntu-livecd
  $ cp -a /mnt/. ubuntu-livecd
  $ chmod -R u+w ubuntu-livecd
  $ sudo umount /mnt
  由于光盘中包含了很多windows下面的自由软件,我们来把不必要的文件删除。当然你可以保留。
  $ rm -rf $WORK/ubuntu-livecd/programs
  把光盘中的压缩文件挂起来,这个样子以后你可以在$WORK/old目录中看到一个完整的linux操作系统的目录。
  $ mkdir $WORK/old
  $ sudo mount -t squashfs -o loop,ro $WORK/ubuntu-livecd/casper/filesystem.squashfs $WORK/old
  我们建立一个2GB大小的文件系统,然后把这个文件当作一个设备文件格式化,结果系统给出了一个警告,别理会它,选择是就是。
  $ sudo dd if=/dev/zero of=$WORK/ubuntu-fs.ext2 bs=1M count=2147
  $ sudo mke2fs $WORK/ubuntu-fs.ext2
  然后我们把这个空文件系统挂起来。
  $ mkdir $WORK/new
  $ sudo mount -o loop $WORK/ubuntu-fs.ext2 $WORK/new
  复制linux操作系统的文件.由于我们事先得到的linux是压缩的,所以我们把它解压了。
  $ sudo cp -a $WORK/old/. $WORK/new
  当然现在$WORK/old就没有用处了。废掉它
  $ sudo umount $WORK/old
  我们首先进入刚才得到的那个操作系统
  $ sudo cp /etc/resolv.conf $WORK/new/etc/
  $ sudo mount -t proc -o bind /proc $WORK/new/proc
  $ sudo chroot $WORK/new /bin/bash
  现在你就进入系统了,高喊linux for human beings,大炼ubuntu,想干什么就干什么。
  # vi /etc/apt/sources.list #选择适合你的源
  # apt-get update
  # apt-get dist-upgrade
  # apt-get install 你想装的软件
  # apt-get clean
  .... #更多的配置
  最后离开你的那个操作系统
  # exit
  $ sudo umount $WORK/new/proc
  $ sudo rm $WORK/new/etc/resolv.conf
  现在你已经回到了你的初始状态中
  把manifest重新整一遍
  $ sudo chroot $WORK/new dpkg-query -W --showformat='${Package} ${Version}\n' > $WORK/ubuntu-livecd/casper/filesystem.manifest
  然后做一下“磁盘清理”
  $ sudo dd if=/dev/zero of=$WORK/new/dummyfile
  $ sudo rm $WORK/new/dummyfile
  重新压缩系统
  $ sudo rm $WORK/ubuntu-livecd/casper/filesystem.squashfs
  $ cd $WORK/new
  $ sudo mksquashfs . $WORK/ubuntu-livecd/casper/filesystem.squashfs
  你的改动都保存了。现在把$WORK/new废掉
  $ cd $WORK
  $ sudo umount $WORK/new
  把文件的md5重新算一下
  $ cd $WORK/ubuntu-livecd
  $ sudo find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt
  建立光盘镜像,命令很长,忍受着点。
  $ cd $WORK
  $ sudo mkisofs -o ubuntu-new.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -r -V "My Cool Ubuntu Live CD" -cache-inodes -J -l ubuntu-livecd
  然后你就可以用iso把光盘烧了
 
 

简谈ubuntu之DIY发行版的更多相关文章

  1. 浅谈Linux桌面(发行版及桌面环境)

    Part I: 前言 笔者2018年接触Linux(当时还是学校机房的Ubuntu 14.04 LTS),至今已经有4个年头了. 折腾了至少十几个Linux发行版,包括但不限于: ubuntu.Deb ...

  2. 八款值得尝试的精美的 Linux 发行版(2017 版)

    八款值得尝试的精美的 Linux 发行版(2017 版) 2017年10月18日 • Linux • 295 views • 暂无评论 在这篇文章中,将会列出让一些令 Linux 用户印象最深刻且精美 ...

  3. 最佳 Linux 发行版汇总

    Linux入门UbuntuUbuntu是一款基于Debian发行版,以Unity作为默认桌面环境的Linux操作系统.他是世界上最流行的发行版之一,每次发行,它都有提升.最新发行版为桌面.移动及其桌面 ...

  4. Linux发行版大全

    基于Debian  Adamantix:基于Debian,特别关注安全.  Amber Linux:基于Debian,针对拉脱维亚用户作了一些定制.  ASLinux Desktop:西班牙语,基于D ...

  5. 盘点十大最流行的Linux服务器发行版

    随着Linux不断发展,Linux所支持的文件系统类型也在迅速扩充.很多的数据中心服务器上都运行着Linux,可以节省大量的许可证费用及维护费用.但伴随着Linux新版本的发行,其中每一个不同版本的L ...

  6. [Linux发行版] 常见Linux系统下载

    本专题页汇总最受欢迎的Linux发行版基本介绍和下载地址,如果您是一位刚接触Linux的新手,这里的介绍可能对您有所帮助,如果您是以为Linux使用前辈,也可以在评论处留下您宝贵意见和经验,以便让更多 ...

  7. linux发行版和内核的关系

    转自:http://m.blog.csdn.net/article/details?id=50595230 Linux内核是计算机操作系统的核心.一个完整的 Linux发行版包括了内核与一些其他与文件 ...

  8. Linux的发行版,不同发行版之间的联系和区别

    Linux 主要作为Linux发行版(通常被称为"distro")的一部分而使用.这些发行版由个人,松散组织的团队,以及商业机构和志愿者组织编写.它们通常包括了其他的系统软件和应用 ...

  9. 恢复计算机崩溃数据的五款最佳Linux发行版

    嗨,Linux 新手们!你们在尝试运行命令时有没有搞坏过计算机系统?我相信你们有过这种经历.这一幕经常发生:你想尝试运行命令,或者安装测试更新版,结果下一次重启时计算机就崩溃了.我在本文将逐一介绍五款 ...

随机推荐

  1. Excel Interactive View - 让页面表格的功能更强大

    MS Office Excel Services提供了一个非常强大的功能,允许你只需要在页面上添加非常少量的JS references,就可以让你在页面上将表格的内容以Excel图表的方式呈现.这里是 ...

  2. servlet/jsp GET/POST

    GET请求方式 当需要向服务器请求指定的资源时使用的方法 它不应该用于一些会造成副作用的操作中(在网络应用中用它来提交请求是一种常见的错误用法) 什么情况浏览器发送get请求 -在地址栏输入一个地址 ...

  3. cookie and session

    Session is used to save the message for the hole period of user dialogue in web service.Such as the ...

  4. .net对象序列化解析

    一.二进制格式器(Binary Formatter) vs XML格式器(XML Formatter): 下面我先向大家介绍两种不同的格式器,分别用它们如何实现序列化机制和反序列化机制,请看下面的代码 ...

  5. paip.python ide 总结最佳实践o4.

    paip.python ide 总结最佳实践o4. ====2个重要的标准 1.可以自动补全 2.可以断点调试 =======选型使用报告 Komodo正好儿俄机器上有,使用累挂,自动补全还凑火.就是 ...

  6. paip.花生壳 服务启动失败 以及不能安装服务,权限失败的解决

    paip.花生壳 服务启动失败 以及不能安装服务,权限失败的解决 系统win7 NewPhDDNS_1.0.0.30166.exe  作者Attilax  艾龙,  EMAIL:1466519819@ ...

  7. iOS开发-UITableView滑动视差

    视差滚动是指让多层背景以不同的速度移动,形成立体的运动效果,在Web上应用的比较多,App中倒是见的相对比较少,主要在UITableView中的应用的比较多,尤其是当整个UITableViewCell ...

  8. [转]Oracle因安装时未设定字符集导致中文乱码的解决方案

    在CentOS 6.4上安装Oracle 11g没有设定字符集,采用的是操作系统默认字符集:WE8MSWIN1252,将字符集修改为:AL32UTF8. SQL> select userenv( ...

  9. Web端测试和移动端测试的区别

    1.记录bug 在Web端可以通过系统自带的截图和QQ截图等方式来截取bug的图片,对于错误的地方可以用工具自带的标识来重点标记. 对于移动端设备可以用手机自带的截图工具来截图然后传到电脑上,个人一般 ...

  10. NEWS - InstallShield 2014正式发布

    InstallShield又迎来了新的版本InstallShield 2014,开发版本号Ver 21.0,相关产品信息已经可以从厂商Flexera Software(富莱睿)官方网站获得. 对于中国 ...