制作ttylinux实例
2、在宿主机上提供一块额外的硬盘作为新系统的存储盘,为了降低复杂度,这里添加使用一块IDE接口的新硬盘;
3、Linux内核源码,busybox源码;本文使用的是目前最新版的linux-2.6.34.1和busybox-1.16.1。
1、此处的boot和sysroot的挂载点目录名称尽量不要修改,尤其是boot目录,否则您必须保证后面的许多步骤都做了相应的改动;
2、新建系统的boot目录也可以跟根目录在同一个分区,这种方式比独立分区还要简单些,因此这里将不对此种方法再做出说明;
# tar jxvf linux-2.6.34.1.tar.bz2
# ln -sv linux-2.6.34.1 linux
# cd linux
# cp arch/x86/boot/bzImage /mnt/boot
# tar -jxvf busybox-1.16.1.tar.bz2
# cd busybox-1.16.1
1、此处需要选择 Busybox Settings --> Build Options --> Build BusyBox as a static binary (no shared libs),这样可以把Busybox编译成一个不使用共享库的静态二进制文件,从而避免了对宿主机的共享库产生依赖;但你也可以不选择此项,而完成编译后把其依赖的共享库复制至目标系统上的/lib目录中即可;这里采用后一种办法。
2、修改安装位置为/mnt/root;方法为:Busybox Settings --> Installation Options --> (./_install) BusyBox installation prefix,修改其值为/mnt/sysroot。
# cp -r /mnt/sysroot/* /mnt/temp
# mkdir -pv proc sys etc/init.d tmp dev mnt/sysroot
# mknod dev/console c 5 1
# mknod dev/null c 1 3
# vim init
添加如下内容:
#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mdev -s
mount -t ext3 /dev/hda2 /mnt/sysroot
exec switch_root /mnt/sysroot /init
chmod +x init
# find . | cpio --quiet -H newc -o | gzip -9 -n > /mnt/boot/initrd.gz
# mkdir -pv proc sys etc/init.d tmp dev boot var/log lib
# mknod dev/console c 5 1
# mknod dev/null c 1 3
#!/bin/sh
echo -e " Welcome to \033[31mToyLinux\033[0m\n "
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mdev -s
mount -a
mount -o remount,rw /
syslogd
klogd
ifconfig lo 127.0.0.1/24
chmod +x etc/init.d/rcS
# mv linuxrc init
console::respawn:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
# vim etc/fstab
/dev/hda2 / ext3 defaults 1 1
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/hda1 /boot ext3 defaults 0 0
*.info /var/log/messages
# vim /mnt/boot/grub/grub.conf
timeout 3
color light-green/black light-magenta/black
title ToyLinux (2.6.34.1)
root (hd0,0)
kernel /bzImage ro root=/dev/hda2 quiet
initrd /initrd.gz
接下来将此块硬盘接入一个新的主机(这里使用的是虚拟机),启动一下并测试使用。
# cd /mnt/sysroot
::sysinit:/etc/init.d/rcS
tty1::askfirst:/bin/sh
tty2::askfirst:/bin/sh
tty3::askfirst:/bin/sh
tty4::askfirst:/bin/sh
tty5::askfirst:/bin/sh
tty6::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
# cd /mnt/sysroot
# vim etc/passwd
root:x:0:0::/root:/bin/sh
# mkdir root
# vim etc/group
root:x:0:
# grep "^root" /etc/shadow > etc/shadow
::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty 38400 tty1
::respawn:/sbin/getty 38400 tty2
::respawn:/sbin/getty 38400 tty3
::respawn:/sbin/getty 38400 tty4
::respawn:/sbin/getty 38400 tty5
::respawn:/sbin/getty 38400 tty6
::shutdown:/bin/umount -a -r
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
好了,接下来就可以重新启动目标主机进行验正了。
添加如下内容:
Welcome to ToyLinux(http://marion.cublog.cn)...
Kernel \r
注:这里的内容可以根据你的需要进行修改。
# mkdir /etc/sysconfig
# vi /etc/sysconfig/network
添加如下内容:
HOSTNAME=marion.example.com
# vi /etc/init.d/rcS
在文件尾部添加如下行:
[ -r /etc/sysconfig/network ] && source /etc/sysconfig/network
[ -z ${HOSTNAME} ] && HOSTNAME="localhost"
[ -x /bin/hostname ] && /bin/hostname ${HOSTNAME}
unset HOSTNAME
# ldd /bin/bash (其显示可能类似如下所示:)
linux-gate.so.1 => (0x003c0000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x00aa6000)
libdl.so.2 => /lib/libdl.so.2 (0x00604000)
libc.so.6 => /lib/libc.so.6 (0x008c8000)
/lib/ld-linux.so.2 (0x00bf8000)
# cp /lib/libtermcap.so.2 lib/
# cp /lib/libdl.so.2 lib/
# cp /lib/libc.so.6 lib/
# cp /lib/ld-linux.so.2 lib/
# cp /bin/bash bin/
# vi /etc/shells
/bin/sh
/bin/bash
# vim /root/.bash_profile
PS1='[\u@\h \W]\$'
HISTSIZE=100
PATH=$PATH:/$HOME/bin
# cd /mnt/sysroot
# cp /lib/libnss_files* lib/
# cp /lib/libnss_dns* lib/
# vim etc/nsswitch.conf
passwd: files
group: files
shadow: files
# vim etc/hosts
127.0.0.1 localhost
# cd thttpd-2.25b
# make
# cp -p thttpd /mnt/sysroot/usr/local/sbin/
# ldd thttpd
linux-gate.so.1 => (0x00e75000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x04f3a000)
libc.so.6 => /lib/libc.so.6 (0x00931000)
/lib/ld-linux.so.2 (0x0090e000)
# echo "www:x:1000:" >> /mnt/sysroot/etc/group
# mkdir /var/www/html
# echo '<h1>A test page.</h1>' > /var/www/html/index.html
# /usr/local/sbin/thttpd -u www -dd /var/www/html -l /var/log/thttpd.log &
转载于:https://blog.51cto.com/shyzzu/364770
制作ttylinux实例相关推荐
- 用python如何制作表格步骤_Python中用xlwt制作表格实例讲解
在Python中,我们也可以用xlwt来制作excel表格,是不是很神奇,接下来一起学习吧. 举例: ```python import xlwt wb = xlwt.Workbook(encoding ...
- FLASH游戏制作精选实例教程
游戏是Flash制作中很重要的一部分,主要应用的是flash内嵌的action编程脚本.近期国内涌现出了很多优秀的FLASH游戏,譬如小小的<过关斩将II>,JQ的<狙击手I代> ...
- python进度条设计函数_Python进度条的制作代码实例
这篇文章主要介绍了Python进度条的制作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import sys,time #导入模块 for ...
- python制作进度条显示_Python进度条的制作代码实例
这篇文章主要介绍了Python进度条的制作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import sys,time #导入模块 for ...
- foxtable制作管理系统实例_某河道治理工程实例
东月河治理工程实例 河道污染情况: 1.雨污混排,每到雨天,雨水混入污水管网,一起流入污水站,当超出污水处理站的处理能力时,污水处理站来不及处理,全排入河中,造成河水污染. 东月河上游小溪污水应急排放 ...
- python利用什么来写模块-Python模块的制作方法实例分析
本文实例讲述了Python模块的制作方法.分享给大家供大家参考,具体如下: 1 目的 利用setup.py将框架安装到python环境中,作为第三方模块来调用, 2 第一步:完成setup.py的编写 ...
- 用c#语言做课程表系统代码,winform用datagridview制作课程表实例
本文实例讲述了winform用datagridview制作课程表的方法.分享给大家供大家参考.具体分析如下: 课程表的最终效果如下图所示: 具体方法如下: 1.首先定义一个datatable,并添加列 ...
- Altium Designer PCB制作入门实例
概要: 本章旨在说明如何生成电路原理图.把设计信息更新到PCB文件中以及在PCB中布线和生成器件输出文件.并且介绍了工程和集成库的概念以及提供了3D PCB开发环境的简要说明. 欢迎使用Altium ...
- WPF一个完整的GIF制作工具实例(Part3:生成GIF)
这里生成GIF文件用的是AnimatedGifEncoder.LZWEncoder.NeuQuant,网上可以找到源码,由于该实例可对每一帧单独修改延时,所以修改了AnimatedGifEncoder ...
最新文章
- linux下Redis以及phpredis扩展安装
- Android 顶部切换实现(二)
- 用.NetCore 编译国产老牌PHP论坛DiscuzX ,世界上最好的语言从此属于.Net 的一员
- 给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构(算法导论第十章10.4-3)
- 监督学习 | ID3 C4.5 决策树原理
- c语言递归算法实验报告,递归算法实验报告.docx
- .NET (C#)ASP.NET 应用程序与页面生命周期
- LC415字符串相加
- easyexcel excel自定义列导出 格式导出
- Ms08067 de 阿青姐姐告诉你为什么要学Python内网开发,不看是你的损失!
- 多元函数偏导数连续、存在与可微的关系
- PDF怎么转换成图片?这两种转换方法快速转换
- 14个美容秘诀 网上疯传却最毁容
- iOS 防止截屏、录屏技术
- 未来五年移动互联网有哪些热门技术?(转)
- 异步爬虫(高效爬虫)
- 三皇时期的远古帝王---地皇
- 切比雪夫不等式例题讲解_2019高考数学大题押题(名师视频讲解,高考最后的提分机会)...
- 浅谈 MySQL 连表查询
- 【兴趣书签】类似《看不见的客人》的惊悚电影推荐