自己动手做一个迷你型Linux操作系统
Linux下制作LiveCD
中科红旗软件技术有限公司----红旗教育学院
通过高品质的培训与技术支持服务,提升用户应用技能,为用户创造价值。
基于Microsoft Windows
BartPE (Windows 2000/XP/2003) 911 Rescue CD [2] (Windows NT/2000/XP/2003) Ultimate Boot CD for Windows (Windows XP) - BartPE的功能延展 MiniPE-XT
◆
中科红旗软件技术有限公司----红旗教育学院
通过高品质的培训与技术支持服务,提升用户应用技能,为用户创造价值。
CDlinux
只有18M的光盘版Linux,支持很多硬件(PCMCIA、 SCSI、USB 等)和多种网络协议(ftp、ssh、nfs、 samba 等)。用户可方便地进行定制,并按需要自 行添加、删除软件包。CDlinux 支持东方语言 (CJK),尤其对简体中文提供全面支持,是完善的 系统修复光盘。 (http://cdlinux.berlios.de/index-cn.html)
中科红旗软件技术有限公司----红旗教育学院
通过高品质的培训与技术支持服务,提升用户应用技能,为用户创造价值。
建立新的引导启动项
◆
6、在grub.conf里新建一个title
中科红旗软件技术有限公司----红旗教育学院
通过高品质的培训与技术支持服务,提升用户应用技能,为用户创造价值。
制作过程
◆
7、查看aufs文件和squashfs文件
Linux下制作LiveCD
主要内容
LiveCD简介
迷你LiveCD
一些著名的 LiveCD
体验LiveCD
Linux没有最小只有更小----迷你Linux版本大集合
Linux没有最小只有更小----迷你Linux版本大集合2013-04-14 02:25:11| 分类:tdd,agile,java, | 标签:linux |字号订阅Linux没有最小只有更小----迷你Linux版本大集合Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。
Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
Linux得名于天才程序员林纳斯·托瓦兹。
Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。
文件结构/:根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。
/bin:bin 就是二进制(binary)英文缩写。
在一般的系统当中,都可以在这个目录下找到linux常用的命令。
系统所需要的那些命令位于此目录。
/boot:Linux的内核及引导系统程序所需要的文件目录,比如vmlinuz initrd.img 文件都位于这个目录中。
在一般情况下,GRUB或LILO系统引导管理器也位于这个目录。
/cdrom:这个目录在刚刚安装系统的时候是空的。
可以将光驱文件系统挂在这个目录下。
例如:mount /dev/cdrom /cdrom/dev:dev 是设备(device) 的英文缩写。
这个目录对所有的用户都十分重要。
因为在这个目录中包含了所有linux系统中使用的外部设备。
最小的Linux操作系统制作过程详解
最小的Linux操作系统制作过程详解一,什么是BabyLinuxBabyLinux不是一个完整的发行版,他是利用原有的一套完整的linux系统的内核原代码和编译工具,利用busybox内建的强大功能,在一张软盘上做的一个很小的linux系统。
他具备一个linux系统的基本特征,支持linux系统最常用的一百多个命令,支持多种文件系统,支持网络等等,你可以把他当做一张linux 起动盘和修复盘来用,你也可以把他当做一个静态路由的路由器软件,当然,你也可以把他当做一个linux玩具,向你的朋友炫耀linux可以做的多么小。
我把他叫做BabyLinux因为他很小巧,小的很可爱,像一个刚刚出生的小baby。
二.为什么要作这样一个linux先说说我一开始的想法,当我一开始接触linux的时候,看到书上说,linux 通常安装只需要60M左右的空间,但是我发现装在我硬盘上的Redhat 6.0确要占据好几百M的空间。
为什么我的linux这么大呢? 后来我发现,装在我机器上的那么多东西只有不到30%是我平时常用的,还有30%是我极少用到的,另外的40%基本上是不用的。
于是,我和大多数初学者一样,开始抱怨,为什么linux 不能做的精简一点呢?于是,我萌发了自己裁减系统的想法。
可惜那个时候我还没有听说过有LFS和Debain。
等到我积累了足够的linux知识后,我开始制作这样一个小系统。
制作这样一个小系统最大的意义在于,你可以通过制作系统了解linux的启动过程,学会ramdisk的使用,让你在短时间内学到更多的linux知识。
当然,你会得到很大的乐趣。
这个项目只是做一个具有基本特征的linux系统,如果你想自己做一个具有完整功能的linux,请阅读Linux From Scratch (LFS)文档。
三,什么人适合读这篇文档如果你是一个linux爱好者,并且很想了解linux的启动过程和系统的基本结构,而且是一个喜欢动手研究小玩意的人,那么这个文档可以满足你的需求。
自己动手写一个简易操作系统(基于51单片机)
自己动手写一个简易操作系统(基于51单片机)背景介绍大一学了51单片机,对于单片机的一些常用外设有了一定的了解。
之后,大家都在说当前最流行的单片机是stm32,所以我抽出了暑假的时间的时间学习了stm32单片机,刚开始学的时候真的很痛苦,在坚持了一个星期之后,我慢慢找到了自信,stm32单片机实际上和51是一样的,只是需要配置的寄存器多了一点。
在刚开始学的时候,经常在配置的时候无法配置完全,导致无法得到预期的实验效果,但是实际上,大家没必要过分纠结于配置,完全可以直接参考别人使用该功能的配置方式。
我们应该将心思放在功能的开发上,而不是纠结于前期简单的配置。
在熟悉使用stm32之后,开始接触操作系统ucos,过程中一直觉得自己似懂非懂,所以我在想为什么我自己不利用51写一个简易操作系统,来加深自己的理解。
初期写出的操作系统不用考虑通信等高级功能,只需要写出可以调度多个任务的操作系统即可,下面给大家介绍一下我自己写的操作系统(写的不太好,仅供大家参考)。
系统实现实现简易操作系统,主要需要实现三个函数:1.创建任务函数(将定义的任务的执行入口保存起来,供调度使用)2.任务延时函数(每一个任务执行后,都需要加入延时函数,否则低优先级的任务没有机会执行)3.中断调度函数(提供时间片调度)1 创建任务函数介绍int OSTaskCreate(unsigned int Task, unsigned char* pStack, unsigned char TaskID){unsigned char i = 0, j = 0;*pStack++ = Task & 0xFF; //低八位地址(51单片机入栈向上,出栈向下)*pStack = Task >> 8; //高八位地址os_enter_critical();TaskCB[TaskID].OSTaskStackButtom = (unsigned char)pStack + 13;TaskCB[TaskID].OSWaitTick = 0;TASK_READY(TaskID); //将该优先级的任务在全局变量中标记为就绪os_exit_critical();return 0;}入口参数:unsigned int Task ---- 任务函数的入口地址unsigned char* pStack ---- 任务函数的堆栈,主要用来保存现场参数unsigned char TaskID ----- 任务优先级2 任务延时函数void OSTimeDly(unsigned int time){TaskCB[CurrentTaskID].OSWaitTick = time; //将任务的延时时间赋值给任务控制块task_sw(); //任务调度}static void task_sw(){os_enter_critical();TASK_BLOCK(CurrentTaskID); //将当前任务的就绪状态取消#pragma asm //将现场的关键参数存入堆栈PUSH ACCPUSH BPUSH DPHPUSH DPLPUSH PSWMOV PSW,#00HPUSH AR0PUSH AR1PUSH AR2PUSH AR3PUSH AR4PUSH AR5PUSH AR6PUSH AR7#pragma endasmTaskCB[CurrentTaskID].OSTaskStackButtom = SP ; //将当前任务的堆栈位置保存,用于下次恢复该任务CurrentTaskID = Task_High(); //找出处于就绪态的最高优先级的任务SP = TaskCB[CurrentTaskID].OSTaskStackButtom;#pragma asmPOP AR7POP AR6POP AR5POP AR4POP AR3POP AR2POP AR1POP AR0POP PSWPOP DPLPOP DPHPOP ACC#pragma endasmos_exit_critical(); //离开时会把SP的当前位置的值送入PC指针,所以最高优先级的任务得以运行}3 中断调度函数void TF0_isr() interrupt 1{TH0 = 56320/256;TL0 = 56320%256;TaskCB[CurrentTaskID].OSTaskStackButtom = SP; //被中断的任务的现场已经压入堆栈,所以只需保存SPCurrentTaskID = T ask_Ready_High(); //取出就绪中优先级最高的任务SP = TaskCB[CurrentTaskID].OSTaskStackButtom;#pragma asmPOP AR7POP AR6POP AR5POP AR4POP AR3POP AR2POP AR1POP AR0POP PSWPOP DPLPOP DPHPOP BPOP ACC#pragma endasm}总结:以上三个函数就是一个简易操作系统的关键函数,大家可以自己动手实现一下。
米尔i.MX6UL开发板Linux操作系统的构建方法
米尔i.MX6UL开发板Linux操作系统的构建方法硬件:米尔i.MX6UL开发板MYD-Y6ULX
简介:MYD-Y6ULX开发板(i.MX6UL开发板)由MYC-Y6ULX核心板和底板组成,基于 i.MX6UL处理器或i.MX6ULL处理器可选,MYD-Y6ULX开发板(i.MX6ULL开发板)提供丰盛外设硬件,板载了Mini PCIE接口(用于4G模块)及SIM卡槽、芯片及天线接口、双百兆网口、液晶接口、音频接口、带隔离的CAN,RS485,RS232等。
构建系统
本章主要介绍MYD-Y6ULX开发板上, 操作系统相关部件的编译和用法。
MYD-Y6ULX的Linux系统包含以下部件:
U-Boot: 引导程序,支持不同方式启动内核。
Linux Kernel: 适用于MYD-Y6ULX开发板的Linux 4.1.15内核,同时包含支持板载外设的驱动。
Yocto: 一个开源配合项目,提供丰盛的模板、工具和办法来支持构建出面对产品的自定义Linux系统。
本章中用到的代码存放在资源包04-Source名目下,编译u-boot和Linux内核代码前,请先安装meta-toolchain并加载环境变量到当前shell。
编译U-Boot
进入Bootloader名目,解压U-boot源码:
cd $DEV_ROOT/04-Source/
tar -xvf MYiR-iMX-uboot.tar.gz
cd MYiR-iMX-uboot
开头编译:
make distclean
make
make
这里的是配置选项名称,不同的启动模式需用法不同的配置选项,
第1页共13页。
构建自己的梦幻桌面Linux图形化界面开发全攻略
构建自己的梦幻桌面Linux图形化界面开发全攻略1. 概述Linux是一个强大而灵活的操作系统,通过自定义图形化界面可以为用户提供独特的体验。
本文将介绍构建自己的梦幻桌面Linux图形化界面的全攻略。
2. 选择桌面环境在开始构建自己的梦幻桌面Linux图形化界面之前,首先需要选择适合自己的桌面环境。
常见的桌面环境包括GNOME、KDE、XFCE 等,每个桌面环境都有其独特的特点和功能。
根据自己的喜好和需求选择合适的桌面环境是非常重要的。
3. 自定义主题和壁纸构建梦幻桌面的第一步就是选择适合自己的主题和壁纸。
可以通过桌面环境提供的主题管理器进行主题的切换和安装。
此外,还可以通过网上下载各种自定义主题和壁纸来实现个性化的界面。
4. 安装和配置组件构建梦幻桌面还需要安装和配置各种组件和工具。
例如,安装一个强大的文件管理器可以提升操作效率;安装一个优秀的终端模拟器可以增加命令行操作的乐趣。
根据个人需求选择适合自己的组件进行安装和配置。
5. 定制面板和启动器面板是桌面环境中非常重要的一个组件,通过定制面板可以实现快速启动应用程序、管理窗口、显示系统状态等功能。
可以根据自己的喜好和需求调整面板的尺寸、位置、样式和内容。
启动器可以让你快速访问常用的应用程序,也可以根据个人喜好进行调整。
6. 安装和配置插件插件是一个非常有用的工具,可以增加桌面环境的功能和特性。
例如,安装一个天气插件可以实时显示天气信息;安装一个日历插件可以方便地管理日程安排。
通过安装和配置各种插件可以让桌面环境更加强大和便捷。
7. 优化性能和效率构建梦幻桌面不仅仅是外观的美化,还需要关注性能和效率。
可以通过一些优化技巧和工具来提升系统的响应速度和资源利用率。
例如,清理无用的系统文件和缓存、禁用不必要的服务等。
8. 定制化快捷键和手势快捷键和手势是提高工作效率的重要方式。
可以根据自己的工作习惯和喜好定制一些快捷键和手势,例如,设置一个快捷键用于截图,设置鼠标手势用于切换应用程序等。
制作自己的Linux发行版
制作自己的Linux发行版1、安装linux系统(如CentOS),安装完后在/root/下有anaconda-ks.cfg、install.log、install.log.syslog文件2、在某目录下(如:/root/zhenglei/)创建目录(如:isotest)存放linux发行版所需文件#cd /root/zhenglei/#mkdir isotest3、挂载iso文件到linux上。
挂载前,先在/mnt/下创建cdrom目录,用来挂载#mkdir /mnt/cdrom/#mount –t iso9660 –o loop /xxx/test.iso /mnt/cdrom/此处的xxx是test.iso文件所在的绝对路径4、利用tar命令将iso文件中的所有文件复制到/root/zhenglei/isotest/下#cd /mnt/cdrom/#tar -cf - . | ( cd /root/zhenglei/isotest/ ; tar –xvpf - )挂载完成后,进入/root/zhenglei/isotest/下,ls –al查看一下:[root@cluster2 isotest]# ls -altotal 152dr-xr-xr-x. 9 root root 4096 Sep 23 08:50 .drwxr-xr-x. 5 root root 4096 Sep 24 09:58 ..dr-xr-xr-x. 2 root root 4096 Sep 22 11:30 [BOOT]-r--r--r--. 1 root root 14 Sep 22 11:29 CentOS_BuildTag-r--r--r--. 1 root root 33 Sep 22 11:29 .discinfodr-xr-xr-x. 3 root root 4096 Sep 22 11:29 EFI-r--r--r--. 1 root root 212 Sep 22 11:29 EULA-r--r--r--. 1 root root 18009 Sep 22 11:29 GPL-r--r--r--. 1 root root 9591 Sep 23 08:48 icfs_ks_auto_partition.cfgdr-xr-xr-x. 3 root root 4096 Sep 22 11:29 imagesdr-xr-xr-x. 2 root root 4096 Sep 22 15:19 isolinuxdr-xr-xr-x. 2 root root 49152 Sep 23 08:47 Packages-r--r--r--. 1 root root 1354 Sep 22 11:30 RELEASE-NOTES-en-US.htmldr-xr-xr-x. 3 root root 4096 Sep 23 08:50 repodata-r--r--r--. 1 root root 1706 Sep 22 11:30 RPM-GPG-KEY-CentOS-6-r--r--r--. 1 root root 1730 Sep 22 11:30 RPM-GPG-KEY-CentOS-Debug-6-r--r--r--. 1 root root 1730 Sep 22 11:30 RPM-GPG-KEY-CentOS-Security-6-r--r--r--. 1 root root 1734 Sep 22 11:30 RPM-GPG-KEY-CentOS-Testing-6dr-xr-xr-x. 6 root root 4096 Sep 22 11:29 .svn-r--r--r--. 1 root root 4052 Sep 23 08:50 TRANS.TBL-r--r--r--. 1 root root 276 Sep 22 11:29 .treeinfo用命令rm删除不必要的文件,删除Packages文件夹下所有内容,保留Packages目录,再ls –al查看一下:[root@cluster2 isotest]# ls -altotal 40dr-xr-xr-x. 7 root root 4096 Sep 24 10:23 .drwxr-xr-x. 5 root root 4096 Sep 24 09:58 ..-r--r--r--. 1 root root 33 Sep 22 11:29 .discinfodr-xr-xr-x. 3 root root 4096 Sep 22 11:29 imagesdr-xr-xr-x. 2 root root 4096 Sep 22 15:19 isolinuxdrwxr-xr-x. 2 root root 4096 Sep 24 10:23 Packagesdr-xr-xr-x. 3 root root 4096 Sep 23 08:50 repodata-r--r--r--. 1 root root 4052 Sep 23 08:50 TRANS.TBL-r--r--r--. 1 root root 276 Sep 22 11:29 .treeinfo文件看起来就舒服多了。
制作一个linux的u盘最小系统
制作一个linux的u盘最小系统最近在学习linux了,为了了解linux系统的机制,花了一个月时间研究,走了很多弯路,看了很多老资料终于做成功了,现在看起来真简单的一个东西竟然花了那么长时间去做真是浪费啊!主机环境:ubuntu 11.04 (我用XP下的的虚拟机)u盘: 金士顿 2G下载内容:最新内核linux-3.3最新制作内核文件工具: busybox-1.9.2过程如下:1.u盘分区1)将优盘分成3个区,两个主分区,一个扩展分区。
用到的终端命令是fdiskfdisk /dev/sdb 进入u盘操作-p查看分区-d删除分区-n创建分区-a激活分区-w保存分区表并退出-q退出不保存分区表这些都是我用到的命令。
至于分区的大小,就随意了,你看着那个block自己划分吧,错了也没关系,回到上面继续改就是了。
2)格式化分区先卸载u盘上的所有分区才能格式化的。
mkfs.ext2 /dev/sdb1 格式化你的主分区mkfs.vfat /dev/sdb3 格式化你的扩展分区你可也用df -lh查看你的mount关系。
2.grub/grub2安装先要把安装的分区挂载在一个地方才能安装成功的,这是我试了好多次,失败了好多次才知道的。
mount /dev/sdb1 /tmpgrub-install --root-directory=/tmp/boot /dev/sdb将grub安装到/dev/sdb u盘的mbr上这个时候你会发现在你的/dev/sdb1分区下出现一个boot目录,里面有grub目录和很多文件。
3)在系统根目录下/boot/grub/下将grub.cfg拷贝到你的U盘分区/boot/grub下面吧,进去修改grub.cfg就可以启动u盘了。
只修改两个地方就行了,一个是UUID,一个是root。
至于uuid你把u盘插拔一下,用df查看你的分区挂载在哪个上面的uuid,复制下来修改。
至于root,你用u盘启动,进入grub命令行,用ls命令查看一下,哪个盘符下面有个boot目录,哪个盘符就是你的分区,记住它,出去改一下root里面的名字就行了。
initramfs 生成过程
initramfs 生成过程initramfs 是一个用于引导 Linux 系统的初始内存文件系统。
它包含了用于引导过程中所需的关键文件和工具,例如驱动程序、文件系统工具等。
initramfs 的生成过程可以分为几个关键步骤。
首先,生成 initramfs 的过程通常是由操作系统安装程序或者更新程序自动完成的。
在安装或更新 Linux 内核时,系统会自动构建 initramfs。
但是,如果需要手动生成 initramfs,可以通过以下步骤完成:1. 收集必要的文件和工具,生成 initramfs 首先需要收集引导过程中所需的文件和工具,包括设备驱动程序、文件系统工具、初始化脚本等。
这些文件通常位于系统的 /lib 目录下。
2. 创建临时目录,在生成 initramfs 的过程中,需要创建一个临时目录来存放生成的文件系统内容。
3. 打包文件系统,将收集到的文件和工具打包成一个 cpio 归档文件。
这个归档文件将会成为 initramfs 的内容。
4. 压缩归档文件,对生成的 cpio 归档文件进行压缩,通常使用 gzip 或者 xz 等压缩工具进行压缩,以减小 initramfs 的体积。
5. 将压缩后的归档文件重命名为 initramfs 文件,生成的压缩归档文件需要被重命名为 initramfs 文件,并放置在系统的/boot 目录下。
需要注意的是,生成 initramfs 的具体步骤可能会因不同的Linux 发行版而有所差异,例如使用不同的打包工具或压缩工具。
因此,在手动生成 initramfs 时,最好参考所使用 Linux 发行版的官方文档或者社区指南,以确保按照正确的步骤进行操作。
总的来说,生成 initramfs 的过程涉及到文件收集、打包、压缩和命名等步骤,最终生成的 initramfs 文件将会包含引导 Linux 系统所需的关键文件和工具,以确保系统能够成功引导到正常运行状态。
自己动手制作操作系统
自己动手写操作系统(从引导到启动保护模式)自由软件社区是一个充满自由和梦想的地方,在10余年的时间里它创造了一个又一个奇迹。
然而,这些奇迹的创造者不只是Stallman,也不只是Linus Torvalds,而是活跃在世界各地的不计其数的开发人员。
在使用各种功能强大的自由软件时,我总会对其开发者充满崇敬之情,期盼有朝一日自己也能成为他们中的一员。
很多对自由社区充满向往之情的人,虽然也想努力融身于其中,但又不知该怎么做。
那么,就请与我们一起从编写一个简单的操作系统开始吧!我们要做的事情有人可能担心自己既没有学过计算机原理,也没有学过操作系统原理,更不懂汇编语言,对C语言也一知半解,能写操作系统吗?答案是没问题。
我将带大家一步一步完成自己的操作系统。
当然如果学一学上述内容再好不过。
首先要明确处理器(也就是CPU)控制着计算机。
对PC而言,启动的时候,CPU都处在实模式状态,相当于只是一个Intel 8086处理器。
也就是说,即使你现在拥有一个奔腾处理器,它的功能也只能是8086级别。
从这一点上来讲,可以使用一些软件把处理器转换到著名的保护模式。
只有这样,我们才可以充分利用处理器的强大功能。
编写操作系统开始是对BIOS控制,取出存储在ROM里的程序。
BIOS是用来执行POST(Power On Self Test,自检)的。
自检是检查计算机的完整性(比如外设是否工作正常、键盘是否连接等)。
这一切完成以后,你就会听到PC喇叭发出一声清脆的响声。
如果一切正常,BIOS就会选择一个启动设备,并且读取该设备的第一扇区(即启动扇区),然后控制过程就会转移到指定位置。
启动设备可能是一个软盘、光盘、硬盘,或者其它所选择的设备。
在此我们把软盘作为启动设备。
如果我们已经在软盘的启动扇区里写了一些代码,这时它就被执行。
因此,我们的目的很明确,就是往软盘的启动扇区写一些程序。
首先使用8086汇编来写一个小程序,然后将其拷贝至软盘的启动扇区。
Linux操作系统-实验1-环境搭建-指导书-PPT版本-V1
Linux操作系统第一章:Linux简介与系统安装实验一:实验环境搭建一台宿主机(Windows系统)加两台虚拟机(Desktop+Server)要求:(1)掌握VMware虚拟机的安装(2)利用VMware虚拟机安装Ubuntu Linux18.04桌面版操作系统(3)利用VMware虚拟机安装Ubuntu Linux18.04服务器版操作系统(4)从宿主机登录桌面环境和服务器环境(SSH登录)(5)练习涉及到的基本命令,如apt-get、ifconfig、ssh等(6)练习vim编辑文件基本操作等Tips:(1)绘制网络拓扑图(2)把遇到的问题和如何解决记录下来。
实验环境设置☐宿主机(Windows)•网络配置VMware Network Adapter(VMnet8)☐客户机•Ubuntu-Server(ubuntu-18.04.6-live-server-amd64)•Ubuntu-Desktop(ubuntu-18.04.6-desktop-amd64)虚拟机安装安装时网络类型选择NAT方式安装完成后的两台Ubuntu虚拟机宿主机:Windows记录宿主机IP地址客户机1:Ubuntu-Server命令行模式记录IP:192.168.126.130客户机2:Ubuntu-Desktop图形化操作方法记录IP:192.168.126.131NAT模式宿主机:Windows192.168.126.1192.168.126.130192.168.126.131客户机1:Ubuntu-Server客户机2:Ubuntu-DesktopSSH服务1.安装SSH服务2.启动SSH服务3.配置SSH服务(可选)4.验证SSH服务Desktop版客户机安装SSH服务Desktop版客户机安装SSH服务:sudo apt-get install openssh-serverDesktop版客户机启动SSH服务: sudo systemctl start sshDesktop版客户机启动SSH服务: sudo systemctl start sshDesktop版客户机端修改SSH配置文件:端口22修改为1022 vi /etc/ssh/sshd_configSSH验证-从宿主机连接Desktop客户机2: ********************.126.131SSH验证-从宿主机连接Server版客户机1: ***********************.126.130Desktop版客户机查看SSH状态:记录监听端口和连接情况Server版客户端1查看SSH状态Desktop版客户机安装 net-tools:sudo apt-get install net-toolsDesktop版客户机查看IP地址: ifconfigDesktop版客户机查看网络连接情况:Netstat -aServer版客户机查看网络连接情况:Netstat -a。
1Linux教程实验指导书
Linux程序设计实验指导书目录实验一:linux安装 (3)实验二:常用命令的使用 (10)试验三vi编辑器 (11)实验四 shell编程 (11)实验五常用开发工具 (12)实验六 makefile的编写与使用 (14)实验七 Linux环境编程 (14)实验八 (15)实验一:linux安装一、实验目的1.学会在操作系统安装之前,根据硬件配置情况,指定安装计划2.掌握多操作系统安装前,利用硬盘分区工具(如PQMagic)为Linux准备分区3.掌握Linux操作系统的安装步骤4.掌握Linux系统的简单配置方法5.掌握Linux系统的启动、关闭步骤6.掌握在虚拟机上的Linux安装步骤和使用方法二、实验内容1.安装并使用硬盘分区工具,为Linux准备好分区2.安装Linux系统(如红旗Linux桌面版)3.配置Linux系统运行环境4.正确的启动、关闭系统注意:为了避免新手在第一次安装Linux时,破坏掉磁盘上的有用数据,推荐第一次在winxp系统上的虚拟机上安装linux。
因此需要一下步骤:1.安装winxp下的虚拟机软件vmware,并创建一个虚拟机。
2.在虚拟机环境中安装linux系统。
3.配置Linux系统运行环境4.正确启动、关闭系统。
三、背景知识Linux安装有三种方式,分别是:通过光盘安装、硬盘安装和网络安装。
另外有三种形式,分别是:Linux独立操作系统、Linux与windows共存的双(多)操作系统、Windows下虚拟机安装Linux的双(多)操作系统。
在三种安装方式中,通过光盘安装最为简单,但是需要事先从网络上下载安装镜像文件,并将其刻录到光盘上;或者直接从外面买别人刻好的安装光盘。
由于Linux是开源的操作系统,因此不存在“盗版”的说法。
另一种是通过硬盘安装,需要事先将安装镜像文件下载到本地fat32格式的磁盘分区上,然后重新启动进入纯dos下,进行一些必要的设置就可以从硬盘自动安装了,其后的安装步骤跟光盘安装一样。
U盘Linux系统制作总结【便携系统,不需要专业知识,适合菜鸟】
U盘系统,就是随身系统,直接把U盘插入电脑的usb接口,只要电脑的主板支持usb启动,那么就可以把引导方式设置为由此启动,随后进入系统。
这里主要是针对Linux一类的U盘系统的制作,像是Windows一类的U盘系统也是有很多的,最简单的是我们修复系统用的Win-pe,也有人把XP装进了U盘,使用起来功能更为强大。
LinuxU盘系统分类:一使用ubuntu的livecd功能ubuntu的livecd可以在不安装在电脑硬盘的情况下使用,也可以算是一个随身系统,并且官方发布的ubuntuLinux已经附带了一些列的常用软件,对于平时的上网,办公来说功能足矣。
由于版权或者其他的问题其中的多媒体播放器(包括视频与音频)的解码并不多,一般来说不能直接播放电脑上的多媒体文件,需要在线升级安装解码程序。
在此我推荐利用一些国内定制的ubuntu版本,比如雨林木风的YlmfOS或者深度的Deepin或者新氧ubuntu,使用这些定制版的iso文件制作随身系统实际上是利用了ubuntu的livecd功能。
这里笔者只利用雨林木风与新氧的iso制作过随身系统,在此推荐使用ylmfos,推荐他的原因是因为它的livecd功能与官方原版所提供的功能相差无几,功能上强于新氧的livecd而且集成了中文语言的支持(其他中文定制版也提供了中文支持)这样可以直接使用,不必在线升级。
对于其中的细节,可以自己去google一下。
制作方法:方法1:U盘量产。
对于量产这个词语不明白的同学可以自己去网上搜索。
简言之,就是将iso文件烧录到U盘空间上制作成一个usb的可以为电脑识别的光驱。
当你将U盘连接电脑的时候,你会发现电脑上多了一个光驱,并且光驱内已经有的文件就是量产时候设置的。
利用量产得到的光驱我们可以使用livecd功能,那么在次可以使用系统所提供的各种功能。
量产的功能算是十分强大,但是在此不推荐使用,因为我们有更好的方法。
再次提示:量产有风险,使用请谨慎,对于好奇心足够强大而且有足够多的U盘的同学可以百度一下U盘量产的教程。
linux系统最小化安装之安装基础常用命令
linux系统最⼩化安装之安装基础常⽤命令------------恢复内容开始------------话题1:linux系统最⼩化安装常⽤命令Centos7,8系统最⼩化安装常⽤命令如下:yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre \pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools \lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel \bc systemd-devel bash-completion traceroute -yUbuntu1804系统最⼩化安装常⽤命令如下:apt install iproute2 ntpdate tcpdump telnet traceroute \nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev \libpcre3 libpcre3-dev zlib1g-dev ntpdate traceroute gcc openssh-server \lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump \telnet traceroute iotop unzip zip -y写⼀个脚本:实现⾃动判断是系统是centos,还是ubuntu,并完成上述最⼩化安装常⽤命令的过程:1 [root@centos7 script]# cat min_install.sh2 #!/bin/bash3 #4 #********************************************************************5 #Author: zouyongbing6 #QQ: 2738388827 #Date: 2021-12-038 #FileName: min_install.sh9 #URL: https:///zouyongbing/10 #Description: The test script11 #Copyright (C): 2021 All rights reserved12 #********************************************************************13 . /etc/os-release14 min_install_yum(){15yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre \16 pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools \17 lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel \18 bc systemd-devel bash-completion traceroute -y19 }20 min_install_dnf(){21 dnf install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre \22 pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools \23 lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel \24 bc systemd-devel bash-completion traceroute -y25 }26 min_install_apt(){27 apt install iproute2 ntpdate tcpdump telnet traceroute \28 nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev \29 libpcre3 libpcre3-dev zlib1g-dev ntpdate traceroute gcc openssh-server \30 lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump \31 telnet traceroute iotop unzip zip -y32 }33 judge_os(){34if [ ${VERSION_ID} == "7" ];then35echo"你的操作系统是centos7,下⾯进⾏安装常⽤软件包:"36 min_install_yum37echo"所有常⽤软件包已经安装完毕!请验证是否成功执⾏"38elif [ ${VERSION_ID} == "8" ];then39echo"你的操作系统是centos8,下⾯进⾏安装常⽤软件包:"40 min_install_dnf41echo"所有常⽤软件包已经安装完毕!请验证是否成功执⾏"42elif [ ${VERSION_ID} == "18.04" ];then43echo"你的操作系统是ubuntu1804,下⾯进⾏安装常⽤软件包:"44 min_install_apt45echo"所有常⽤软件包已经安装完毕!请验证是否成功执⾏"46else47echo"不⽀持的操作系统,请⼿动安装"48fi49 }50 judge_os------------恢复内容结束------------。
构建自己的操作系统:从零开始编写内核
构建自己的操作系统:从零开始编写内核在计算机科学中,操作系统是管理计算机硬件和软件资源的系统软件。
它是位于计算机硬件与用户之间的中间层,为用户提供与硬件交互的接口,同时负责管理和分配计算机资源,保证系统的安全和稳定运行。
尽管市面上已经有各种成熟的操作系统可供使用,但如果你想探索计算机系统的底层原理,从零开始编写自己的操作系统是一项非常有趣的挑战。
在构建自己的操作系统时,最重要的一步是编写操作系统的内核。
内核是操作系统的核心组件,它控制着计算机的基本功能,如进程管理、内存管理和设备驱动等。
下面是一些步骤,帮助你从零开始编写一个简单的操作系统内核。
1.学习汇编语言:内核编写一般使用汇编语言,因为它可以直接与硬件进行交互。
x86汇编语言是一个常见的选择,因为它广泛用于PC平台。
首先,学习汇编语言的基本语法和指令集。
这将有助于你理解计算机的底层工作原理,并为编写内核提供基础知识。
2.编写引导扇区:计算机在启动时会加载引导扇区(boot sector),这一小段代码负责初始化计算机系统并加载操作系统的其余部分。
编写引导扇区需要了解硬件启动的基本原理,以及如何加载和执行汇编代码。
3.编写基本的内核:在启动引导扇区之后,需要编写一个基本的内核来管理系统。
首先,需要进行一些基本的初始化,如设置中断处理程序、设置中断向量表和初始化内核堆栈等。
然后,可以实现一些基本功能,如进程管理、内存管理和设备驱动。
4.实现系统调用:系统调用是操作系统提供给应用程序的接口,用于访问操作系统的功能和资源。
编写系统调用使得应用程序可以通过特定的指令与操作系统进行交互。
例如,可以实现一些基本的系统调用,如文件读写、进程创建和进程间通信等。
5.调试和测试:在编写内核的过程中,可能会遇到各种各样的错误和问题。
这时,需要进行调试和测试,找出并修复这些问题。
常用的调试和测试技术包括使用调试器、打印调试信息和编写测试代码。
需要注意的是,从零开始编写一个完整的操作系统是一项复杂而繁琐的工作,需要深入了解计算机体系结构、硬件和操作系统的原理。
LinuxMint系统的安装和体验,非常适合低配电脑使用
LinuxMint系统的安装和体验,⾮常适合低配电脑使⽤Linux Mint 是⼀款⾮常受欢迎的桌⾯系统,它有着和Win⾮常相似的界⾯,并且对硬件的要求不⾼,⾮常适合在旧电脑上安装使⽤。
本⽂着重介绍⼀下Linux Mint的安装过程和界⾯风格,以及内置的软件。
Linux Mint的安装制作启动U盘准备⼯作:需要⼀台能正常使⽤的电脑,和⼀个8G容量的U盘。
⾸先下载Linux Mint的系统镜像,⽹上有很多可以⾃⼰搜⼀下,我⽤的是64位的19.2版本。
下载好之后,打开软碟通,点击左上⾓⽂件→打开,然后选择刚下载的镜像并打开。
点击菜单栏启动,选择写⼊硬盘映像,在弹出的对话框中,你的U盘已经是默认操作的设备,如果有多个U盘可以⼿动选择。
在写⼊之前,⾸先要将U盘格式化为FAT32格式,然后点击便捷启动,选择写⼊新的驱动器引导扇区,点击Sys linux。
弹出提⽰对话框,这时候选择是,然后单击写⼊,完成之后会提⽰刻录成功。
⾄此启动盘制作完成。
安装Linux Mint操作系统为截图⽅便,接下来的操作在虚拟机上运⾏,但和真正电脑上的操作相同。
开机后进⼊按delete进⼊BIOS,设置U盘为第⼀启动顺序,⼤部分电脑有快捷启动菜单,可以参考开机时的提⽰。
重新启动后,将会⾃动加载进类似于PE系统的桌⾯。
桌⾯上的光盘图标,上⾯写着install linux mint,双击打开就可以进⼊系统安装。
⾸先是语⾔,下拉并选择中⽂。
紧接着询问是否安装第三⽅软件,这⾥将它勾选上了,省的下⼀步⾃⼰安装⿇烦事。
安装程序检测到电脑没有操作系统,并给出了四个选项,默认是直接安装,还有加密,最下⾯是个性化安装,根据需求选择即可。
区域选择默认即可。
然后是为填写⽤户名和密码,下⾯可以选择⾃动登录,但是必须要设置密码才能继续,也可以选择输⼊密码才能登陆。
安装前的准备⼯作已经完成,下⾯就是等待程序复制⽂件和安装功能,这⼀步也很快,我的是M.2固态硬盘,⼤概⼗分钟左右就装好了。
miniGUI在linux环境下安装
minigui linux 安装与运行1.首先,从飞漫的网站上下载相关的压缩包:/res.shtml虚拟frambuffer的应用程序,用来调试运行程序qvfb-1.1.tar.gz资源文件:minigui-res-1.6.10.tar.gz示例程序:mg-samples-1.6.10.tar.gz开发库:libminigui-1.6.10.tar.gz在home目录下创建一个minigui的目录# cd /home# mkdir minigui将这些压缩包拷贝到/home/minigui目录下2.安装下载的文件首先安装minigui的资源文件:[root@root minigui]# tar -xvzf minigui-res-1.6.10.tar.gz[root@root minigui]#cd minigui-res-1.6.10[root@root minigui-res-1.6.10]# make install安装minigui的库文件[root@root minigui]#tar -xvzf libminigui-1.6.10.tar.gz[root@root minigui]# cd libminigui-1.6.10[root@root libminigui-1.6.10]# ./configure[root@root libminigui-1.6.10]# make[root@root libminigui-1.6.10]#make install安装minigui的例子库[root@root minigui]# tar -xzvf mg-samples-1.6.10.tar.gz[root@root minigui]#cd mg-samples-1.6.10[root@root mg-samples-1.6.10]# ./configure[root@root mg-samples-1.6.10]# make[root@root mg-samples-1.6.10]# make install安装qvfb[root@root minigui]# tar -xzvf qvfb-1.1.tar.gz[root@root minigui]# cd qvfb-1.1[root@root qvfb-1.1]# ./configure[root@root qvfb-1.1]# make[root@root qvfb-1.1]# make install3.设置参数1.这步要进入#cd /etc/目录下, 修改#vi ld.so.conf文件,再最后一行加入/usr/local/lib 即在系统共享函数库中加入MiniGUI的函数库路径[root@root etc]# gedit /etc/ld.so.conf //注意:不是ld.so.c(至少fedora10下不是)/usr/kerberos/lib/usr/X11R6/lib/usr/lib/sane/usr/lib/qt-3.1/lib/usr/local/lib4、在修改并保存后,执行ldconfig命令,更新系统函数库缓存[root@root etc]#ldconfig5.然后就可以使用qvfb体验miniGUI了,进入qvfb1.1根目录下的qvfb文件夹:输入下面命令:[root@fedora7]# qvfb &//加上&符号使qvfb进程开启后shell立即返回,否则会阻塞shell进程,需要再开一个shell才可以运行minigui程序。
个性化定制你的Linux桌面图形化界面开发技巧
个性化定制你的Linux桌面图形化界面开发技巧Linux操作系统以其高度的可定制性而闻名,其中一个重要的方面就是定制桌面图形化界面(GUI)。
通过个性化定制,你可以使你的Linux桌面界面变得独特,满足自己的需求和喜好。
本文将介绍一些Linux桌面图形化界面开发技巧,帮助你打造一个适合自己的个性化Linux桌面。
一、选择合适的桌面环境选择合适的桌面环境是个性化定制的第一步。
Linux操作系统提供了多种桌面环境,如GNOME、KDE、Xfce等。
每个桌面环境都有自己的特色和功能。
你可以根据自己的使用习惯和喜好选择一个最适合你的桌面环境。
二、自定义桌面壁纸和主题桌面壁纸和主题是个性化定制的重要组成部分。
你可以选择自己喜欢的壁纸图片,并设置为桌面背景。
此外,你还可以选择合适的主题,改变窗口边框、图标和鼠标指针的外观。
通过自定义桌面壁纸和主题,你可以为你的Linux桌面注入个人风格。
三、调整桌面布局和组件Linux桌面环境通常提供灵活的布局和组件调整功能。
你可以自由调整桌面上各个元素的位置和大小,如任务栏、系统托盘、图标等。
这样可以让你的工作环境更加高效和舒适,满足个性化需求。
四、安装和使用插件和扩展许多桌面环境支持安装插件和扩展,通过添加额外的功能和特性,扩展桌面环境的能力。
你可以安装各种插件和扩展,如天气插件、日历插件、系统监控插件等,以满足你的需求和提升使用体验。
五、自定义快捷键和操作习惯Linux操作系统支持自定义快捷键和操作习惯,这也是个性化定制的一部分。
你可以设置自己喜欢的快捷键,用于快速启动应用程序、切换窗口等。
此外,你还可以调整鼠标和触摸板的行为,以适应自己的使用习惯。
六、使用定制工具和脚本定制工具和脚本可以帮助你更方便地进行个性化定制。
例如,一些桌面环境提供了可视化的设置界面,用于快速调整桌面布局和外观。
此外,你还可以使用脚本编程语言,如Bash、Python等,编写自定义脚本,实现更高级的定制需求。
嵌入式linux小项目实例
嵌入式linux小项目实例嵌入式系统是一种特殊的计算机系统,它被嵌入到其他设备中,用于控制和管理设备的各种功能。
嵌入式Linux是一种常用的嵌入式系统操作系统,它具有开源、稳定、灵活等特点,被广泛应用于各种嵌入式设备中。
在本文中,我将介绍一个嵌入式Linux小项目的实例,以帮助读者更好地理解和应用嵌入式Linux。
这个项目是一个智能家居控制系统,它可以通过手机APP远程控制家中的各种设备,如灯光、空调、窗帘等。
该系统基于嵌入式Linux开发,使用了一块嵌入式开发板和一些外围设备。
首先,我们需要选择一块适合的嵌入式开发板。
在这个项目中,我们选择了一块基于ARM架构的开发板,它具有强大的计算能力和丰富的外设接口,非常适合用于嵌入式Linux开发。
接下来,我们需要安装和配置嵌入式Linux系统。
我们可以选择一个已经编译好的嵌入式Linux发行版,如Buildroot或Yocto Project,也可以自己从源代码编译一个定制的嵌入式Linux系统。
在这个项目中,我们选择了Buildroot,因为它简单易用,适合初学者。
安装和配置嵌入式Linux系统需要一些基本的Linux知识,如交叉编译、内核配置、文件系统配置等。
在这个项目中,我们需要配置网络、蓝牙和GPIO等功能,以便实现远程控制。
完成系统的安装和配置后,我们需要编写应用程序来实现智能家居控制功能。
在这个项目中,我们使用了C语言和Shell脚本来编写应用程序。
C语言用于编写底层驱动程序和控制逻辑,Shell脚本用于实现一些简单的控制命令和脚本。
在应用程序中,我们使用了一些开源库和工具,如libcurl、BlueZ和GPIO库等。
这些库和工具可以帮助我们更方便地实现网络通信、蓝牙控制和GPIO控制等功能。
最后,我们需要将应用程序和相关的配置文件打包成一个固件,然后烧录到嵌入式开发板中。
烧录固件可以使用一些专门的工具,如dd命令或烧录工具。
完成烧录后,我们可以通过手机APP来远程控制智能家居系统。
自己动手制作简单的linux
Linux操作系统已成为当今服务器操作系统的主力了,也有越来越多的同志们对linux 感性趣了,当然我也不例外,linux的功能很多很强大,但是对于不同的需求可能不需要那么完整的功能,同时linux很灵活,可以选择性的去定制适合需求的linux操作系统,那么今天我们就来自己定制一个小的linux操作系统来练练手。
自己DIY linux操作系统之前,你需要对linux操作系统有所理解并能熟练的使用,网上有很多关于linux的书籍及视频,可以去学习。
一、准备工作:a.理论基础b.软硬件平台1.理论基础a.linux 的启动流程,这是必须要了解的,因为我们是按照启动流程来模拟定制操作系统的,启动流程分几步:1.加在BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备2.读取并执行第一个启动设备内的MBR的boot Loader(grub,spfdisk等程序,很重要)3.依据boot loader的设置加载Kernel,Kernel会开始检测硬件和加载驱动(内核是可以自己定制的,后面会讲到)4.在硬件驱动加载成功后,Kernel会主动去调用init进程,而init会获取run-level信息5.init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(我们可以选择性的将想要的功能实现添加进这个脚本里)6.init执行run-level的各个服务的启动(脚本形式)7.init执行/etc/rc.d/rc.loacl文件(里面包含了一下用户自定义的开机启动项,类似windows)8.init执行终端机模拟程序mingetty来启动login进程,最后就等待用户启动启动流程就是这样,但是我们自己定制的操作系统可能没有这么强大所以并不是每个流程都会经过,可以后期随着自己的能力的增强去自己修改b.要懂得如何去看脚本和编写脚本,这是必须的,不然后续的任务无法完成2.软硬件平台a.软件平台:你需要有一个完整的linux镜像,我们要模仿着做官方的操作系统做,我用的是rhel-server-5.4-i386-dvd.iso,网上可以下载的到,当然因为我的硬件有限,我使用的是虚拟机(vm)来完成各项操作b.因为有了虚拟机,所以不用太考虑硬件的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自己动手做一个迷你型Linux操作系统本文要构建的这个迷你型的Linux 系统只能在一台特定的单机上运行,如果读者朋友们有兴趣的话,在这个系统的基础上加以改良,是可以构建出通用的、可以在大多数常规PC 机上即插即用的系统来的。
但是这已经不在本文的话题之内了,读者朋友们如果有兴趣,可以通过我的电子邮件和我讨论其中的细节疑问。
我们的目标Linux 系统运行在一台普通的Intel 386 PC 机上,可以有硬盘,也可以不要硬盘,而用Flash Disk 来代替。
如果是用Flash 盘的话,须要能够支持从Flash 盘启动,而且Flash 盘的大小要在16M 字节或者以上。
我们希望用户一开机启动,就直接进入X Window 图形界面,运行事先指定好的程序。
不须要用户输入用户名和密码执行登录。
我们设定的这个目标有点像一个X Terminal 终端工作站。
稍加改良,还可以做成干脆无盘的形式,也就是说,连16M 的Flash 盘也不要了。
不过,这也超出了本文的话题了。
读者朋友们如果有兴趣,可以来信和我执行讨论。
系统启动因为我们要考虑从Flash 盘执行启动,所以我们选择用LILO 作为我们的Boot Loader,而不选用GRUB。
这是考虑到GRUB 有较强的对硬盘和文件系统的识别能力,而Flash 盘到底不是标准的硬盘,并且我们选用的文件系统GRUB 又不一定认识,搞不好的话GRUB 反会弄巧成拙。
而LILO 就基本的多了,它在硬盘开始的MBR 写入一个小程序,这个小程序不经过文件系统,直接从硬盘扇区号,读出Kernel Image 装入内存。
这样,保险系数就大大添加。
并且也给了我们自由选用文件系统的余地。
那么,我们要如何安装LILO 呢?首先,我们要找一块普通的800M 左右的IDE 硬盘,连在目标机器的IDE 线上。
这样在我们的目标机器上,IDE1 上挂的是Flash 盘,IDE2 上挂的是一块工作硬盘。
我们用标准的步骤在IDE2 的标准硬盘上装上一个Debian GNU/Linux 系统。
当然,如果读者朋友们手头没有Debian,也可以装Red Hat 系统。
装好工作系统之后,要首先做一些裁减工作,把不必要的Service 和X Window 等等东西都删掉。
这样做的目的是增进系统启动速度,因为我们在后面的工作中,肯定要不停的重新启动机器,所以启动速度对我们的工作效率是很关键的。
装好工作系统之后,在Falsh 盘上做一个Ext2 文件系统,这个用mke2fs 这个命令就可以完成。
由于Flash 盘是接在IDE1 上的,所以在Linux 里面,它的身份是/dev/hda。
本文作者在操作的时候,把整个Flash 盘划分了一个整个的分区,所以,调用mke2fs 的时候,处理的是/dev/hda1。
读者朋友们应该可以直接在/dev/hda 上做一个Ext2 文件系统,而不用事先分区。
在Flash 盘上做好了文件系统之后,就可以把一个编译好的内核映像文件vmlinuz copy 到Flash 盘上了。
留心,必须要先把这个vmlinuz 映像文件copy到Flash 盘上,然后才能在Flash 盘上安装LILO。
不然的话,LILO 到时候可是会LILILILI 打结巴的,因为它会找不到Kernel Image 在Flash 盘上的位置的,那样的话Flash 盘也就启动不起来了。
还有,如果读者朋友们在Flash 盘上用的是一个压缩的文件系统的话,到时候LILO 也会出疑问,它虽然能正确的找到Kernel Image 在硬盘上的起始位置,但是它却没有办法处理被文件系统重新压缩过的这个Kernel Image,不知道该如何把它展开到内存中去。
把Kernel Image copy 过去以后,我们就可以动手编辑一份lilo.conf 文件,这份文件可以就放在工作系统上就行了。
但是留心在lilo.conf 中索引的文件名的路径可要写对。
这些路径名都是在工作系统上看上去的路径名。
比如,如果Flash 盘Mount 在/mnt 目录下面,那么,在lilo.conf 中,vmlinuz 的路径名就是/mnt/vmlinuz。
留心这一点千万不要搞错。
不然的话,如果一不留心把工作系统的LILO 给破坏掉了,那就麻烦了。
编辑好了lilo.conf,然后再运行lilo 命令,留心,要告诉它用这个新的lilo.conf 文件,而不要用/etc/lilo.conf。
安装好LILO 之后,我们可以立即重新启动,测试一下。
首先在BIOS 里面,配置成从IDE1 开始启动,如果我们看到LILO 的提示符,按回车后还能看到Kernel 输出的消息,这就算是LILO 的安装成功了。
记得这个操作的要领,以后每次我们更新Flash 盘上的Kernel Image,都记得要更新LILO。
也就是说,要重新运行一遍lilo 命令。
编译内核试验成功LILO 的安装以后,我们开始考虑编译一个新的内核。
当然,要编译新的内核,我们首先要进入我们的工作系统。
这里有两个办法进入工作系统,一是在BIOS 里面配置从IDE2 启动,当然,这就要求当初安装工作系统的时候,要把LILO 安装在/dev/hdb 上;另一个办法是还是从IDE1 启动,不改动BIOS 的配置,但是在看到LILO 的提示符的时候,要键入linux root=/dev/hdb1,最前面的linux 是在lilo.conf 里面解释的一个entry,我们只采用这个entry 所指定的Kernel Image,但是用/dev/hdb1 作为root 文件系统。
两个办法可能有的时候一个比另一个好,更方便一些。
这就要看具体的情况了。
不过,它们的配置并不是互相冲突的。
在编译内核的时候,由于我们的内核是只有一台机器运用的,所以我们应该对它的情况了如指掌;另外一方面,为了减低不必要的复杂性,我们决定不用kernel module 的支持,而把所有须要的东西直接编译到内核的里面。
这样编译出来的内核,在一台普通的586 主板上,把所有必要的功能都加进去,一般也不到800K 字节。
所以,这个办法是可行的。
而且减低了init scripts 的复杂程度。
从运行方面来考虑,由于须要的kernel 代码反正是要装载到内存中的,所以并不会引起内存的浪费。
在我们的目标平台上,我们希望运用USB 存储设备。
还有一点要留心的,就是对Frame buffer 的支持。
这主要是为了支持XFree86。
一般说来,如果我们的显卡是XFree86 直接支持的,那当然最好,也就不须要frame buffer 的内核支持。
但是如果XFree86 不支持我们的显卡,我们可以考虑用VESA 模式。
但是XFree86 的VESA 卡支持运行起来不太好看,还有安全方面的疑问,有时在启动和退出X Window 的时候会出现花屏。
所以我们可以采用kernel 的vesa 模式的frame buffer,然后用xfree86 的linux frame buffer 的驱动程序。
这样一般就看不到花屏的现象了,而且安全方面也没有任何疑问。
devfs 也是我们感兴趣的话题。
如果kernel 不运用devfs,那么系统上的root 文件系统就要有/dev 目录下面的所有内容。
这些内容可以用/dev/MAKEDEV 脚本来建立,也可以用mknod 手工一个一个来建。
这个要领有其自身的优点。
但是它的缺点是麻烦,而且和kernel 的状态又并不一致。
相反的,如果运用了devfs,我们就再也不用担心/dev 目录下面的任何事情了。
/dev 目录下面的项目会有kernel 的代码自己负责。
实际运用起来的效果,对内存的消耗并不明显。
所以我们选择devfs。
busybox有了LILO 和kernel image 之后,接下来,我们要安排root 文件系统。
由于flash 盘的空间只有16M 字节,可以说,这是对我们最大的挑战。
这里首先要向大家介绍小型嵌入式Linux 系统安排root 文件系统时的一个常用的利器:BusyBox。
Busybox 是Debian GNU/Linux 的大名鼎鼎的Bruce Perens 首先开发,运用在Debian 的安装程序中。
后来又有许多Debian developers 贡献力量,这其中尤推busybox 目前的维护者Erik Andersen,他患有癌症,可是却是一名优秀的自由软件开发者。
Busybox 编译出一个单个的独立执行程序,就叫做busybox。
但是它可以根据配置,执行ash shell 的功能,以及几十个各种小使用程序的功能。
这其中包括有一个迷你的vi 编辑器,系统不可或缺的/sbin/init 程序,以及其他诸如sed, ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat ... 等等这些都是一个正常的系统上必不可少的,但是如果我们把这些程序的原件拿过来的话,它们的体积加在一起,让人吃不消。
可是busybox 有全部的这么多功能,大小也不过100K 左右。
而且,用户还可以根据自己的须要,决定到底要在busybox 中编译进哪多个使用程序的功能。
这样的话,busybox 的体积就可以进一步缩小了。
运用busybox 也很基本。
只要建一个符号链接,比方ln -s /bin/busybox /bin/ls,那么,执行/bin/ls 的时候,busybox 就会执行ls 的功能,也会按照ls 的形式处理命令行参数。
又比如ln -s /bin/busybox /sbin/init,这样我们就有了系统运行不可或缺的/sbin/init 程序了。
当然,这里的前提是,你在busybox 中编译进去了这两个程序的功能。
这里面要提出留心的一点是,busybox 的init 程序所认识的/etc/inittab 的格式非常基本,而且和常规的inittab 文件的格式不一样。
所以读者朋友们在为这个busybox 的init 写inittab 的时候,要留心一下不同的语法。
至于细节,就不在我们这里多说了,请大家参考Busybox 的用户手册。
从启动到进入shell busybox 安装好以后,我们就可以考虑重新启动,一直到进入shell 提示符了。
这之前,我们要准备一下/etc 目录下的多个主要的文件,而且要把busybox 用到的library 也copy 过来。
用ldd 命令,后面跟要分析的二进制程序的路径名,就可以知道一个二进制程序,或者是一个library 文件之间的互相依赖联系,比如busybox 就依赖于libc.so 和ld-linux.so ,我们有了这些知识,就可把动手把所有须要的library copy 到flash 盘上。