神奇的最小Linux发行版TinyCore Linux 系统,从分区安装系统开始
TinyCore官网
首先官网在此:http://tinycorelinux.net/
真正轻量级
名字里带有“tiny”又带有“core”,想必又是一个所谓的“轻量级”发行版。
轻量级我们见多了,debian号称是轻量级的,装完占硬盘300MB;arch说自己轻量级,努力删减下,装完大概200MB;对了还有一个puppy linux,iso镜像文件只有100MB左右。
那么tiny core linux呢?
提供有两个版本:
Core.iso 10M
TinyCore.iso 15MB
而且其中15MB居然带了一个功能完全的FLTK图形界面。不得不服。
不止于小1
TinyCore linux 并不是为了追求炫技而将自己体型缩减这么小的。
想象下,你想要在虚拟机中提供一个简单的基于python网络服务,那么最好的办法就是裁剪一个linux发行版,然后安装必须的依赖,将其灌入虚拟机,配好服务即可。
这时候,试试TinyCore吧,载入tinycore的ISO,进入图形界面,
唔,安装到硬盘,看到TC-Install图标,点进去下一步下一步,完成。参考:http://wiki.tinycorelinux.net/wiki:install_hd
唔,安装python。看到有个apps图标,点进去试试,找到python.tcz,下载,等一会儿,完成。参考:http://distro.ibiblio.org/tinycorelinux/download_howto.html
然后再试试git,也找到了,安装~完成。
重启虚拟机,弹出iso镜像。输入命令 python,有了,输入命令git,也有了。
看来tinycorelinux有一个全功能的包管理器,包的名字叫tcz,然后可以自动处理依赖。不错不错。
不止于小2
有了git就可以去找我们要的服务程序了。
git clone程序源码到根目录,然后写一个启动脚本,添加到 /opt/bootlocal.sh 即可。
啊,别着急关电源,记得先 sudo backup
因为tinycorelinux是一个连文件系统都在内存里的系统,如果不输入backup手动保存的话,所有的更改都会丢失的。
重启系统,然后就发现我们的服务可以正常运行了。
导出虚拟机镜像: tinycorelinux+python+我们的程序 = 38MB,nice。
不止于小3
直到现在我们就可以获得了一个虚拟机镜像,小到38MB。可以和我们的虚拟机安装程序一起放到U盘里,随时随地可以部署我们的服务程序。
然而并不是十分满意,因为这些虚拟机镜像一般是不通用的,而且如果我们想在真机部署服务程序怎么办?
查看官网,发现tinycorelinux提供有ezremaster工具,号称可以定制自己的iso镜像。
最方便使用ezremaster的办法就是下载 core-plus.iso 即官方提供的一个功能增强版livecd
将该iso加载至我们的虚拟机;
然后加载tiny-core.iso到我们的虚拟机;
运行ezremaster程序。 选择 基础iso;选择mydata文件。这时候明白了,我们的之前更改都是保存mydata文件里的。
然后选择附加程序 python
点击下一步,生成iso。完成。
iso文件大小是 25MB,比虚拟机镜像还小啊。
总结
折腾了这么久,我们得到了什么?
一个完整的linux livecd镜像:体积超小,但包含有全部我们想要的服务。可以部署到任意虚拟机中以及真机电脑中。(并且由于可以以livecd方式运行,所以甚至不需要硬盘支持!)
这都是拜tinycorelinux所赐。它有着简陋但超好用的gui界面,丰富的扩展包支持,方便的iso定制工具,已经非常小的基础系统体积。
总之,这是一个可玩性非常高的linux发行版。让我们这种只搞过debina/arch/openwrt的土鳖再次看到世界的广大。
2024-12-04 10:13:36【出处】:https://www.cnblogs.com/bitspace/p/5060556.html
=======================================================================================
最小的linux发行版TinyCore Linux 系统,从分区安装系统开始
大纲目录~ 持续更新中。。。
- Linux 学习笔记 1 使用最小的系统,从分区安装系统开始
- Linux 学习笔记 2 Centos 安装与网络的配置以及VI编辑器的使用
- Linux 学习笔记 3 认识基本命令与目录结构 以及挂载卸载
- Linux 学习笔记 4 创建、复制、移动、文件的基本操作
- Linux 学习笔记 5 文件的下载、压缩、解压、初步认识yum
我们常用的linux系统在安装过程中大多都省略了对系统进行分区的操作,以至于后期,不了解什么是分区以及分区当中最基本的一些概念,
我们不说最细的知识,只求了解这个过程,那直接步入正题,开始第一节的学习。
开始准备
- Linux 系统镜像一个 这里我选择的是 TinyCore Linux 最小的linux发行版,很适合喜欢捣腾的人
- 虚拟机一个 这里采用Oracle VM BOX 开源免费的一款虚拟机 很好用 http://mirrors.163.com/tinycorelinux/
当然,这里我们选择仅有10M大小的发行版linux ,下载后开启虚拟机,进入画面,是不是很神奇,仅有10M大小的系统也有这么多功能,真乃
麻雀虽小五脏俱全
现在运行起来的Linux 就好比一个Live 版本的Linux 对其进行的操作都是不会被保存的,我们需要的是,对这里的虚拟硬盘进行格式化,而后安装系统
最后在虚拟机上在没有光盘ISO文件的时候也可以顺利进行启动系统。
分区开始
开始分区之前有必要了解一下关于硬盘分区的一些小知识,通常我们在安装系统的时候,都会碰到的关键字有:
- 主分区
- 逻辑分区
- 扩展分区
这里画一个图给大家理解下,我们就用大家们最熟悉的Windows为例,
一块硬盘我们在分区的时候,它会被分成主分区和拓展分区,而拓展分区里面又会包含逻辑分区,
主分区:一般用于存放系统的引导文件
拓展分区:拓展分区不能直接使用,它就好比是逻辑分区的一个盒子,用来存放逻辑分区
逻辑分区:大量的数据才是放在逻辑分区上的。
fdisk 分区维护命令
首先尝试使用 fdisk -l 展示已经存在的磁盘
这里大致翻译一下:
Disk 硬盘 挂载在 /dev/sda 下 总共大小是:8192MB 85******* 字节 16***** sectors(扇区)
1044 个磁柱(cylinders) 255 个磁面 63扇面
Units 单位:是扇区sectors 一个扇面大小是 1* 512 = 512个字节
这里我们知道了已经存在一个 /dev/sda 的硬盘信息,大小为8192MB 大致是8GB左右,显示未分区,开始尝试分区
fdisk /dev/sda
这里的选项大致了解一下:加粗的部分为常用类型
- m :显示菜单和帮助信息
- a :活动分区标记/引导分区
- d :删除分区
- l :显示分区类型
- n :新建分区
- p :显示分区信息
- q :退出不保存
- t :设置分区号
- v :进行分区检查
- w :保存修改
- x :扩展应用,高级功能
选自:https://www.runoob.com/linux/linux-comm-fdisk.html
通过P命令,查看当前磁盘的分区情况,我们发现没有分区存在。
通过n命令 开始创建一个新的分区,P表示是主分区,而后通过1-4输入分区的编号,
关于分区编号的知识:简单提一下
在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux把各种 IDE 设备分配了一个由 hd 前缀组成的文件;而对于各种 SCSI 设备,则分配了一个由 sd 前缀组成的文件。
对于ide硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指ide硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个ide硬盘上的第三个主分区或扩展分区,hdb2表示为第二个ide硬盘上的第二个主分区或扩展分区。对于scsi硬盘则标识为“sdx~”,scsi硬盘是用“sd”来表示分区所在设备的类型的,其余则和ide硬盘的表示方法一样,不在多说。
在 Linux 中规定,每一个硬盘设备最多能有 4个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是 4 个。
Linux 规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1、hda2、hda3、hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码。
因此,Linux 下面每一个硬盘总共最多有 16 个分区。
引用:https://blog.csdn.net/yimenglin/article/details/87966367
在分区之前我们需要简单一下,一般的一个linux由几个部分构成吧
分区划分
一般分区划分在安装一个系统前是尤为重要的事情,我分配几个挂载点,每个挂载点多大,以及最基础的三个分区呢?
- /boot 分区 一般作为引导分区,字面意思就是:引导这个系统的启动,一般大小200M
- /swap 交换分区 这个可以理解为虚拟内存吧 一般设置为当前linux内存的2倍
- / 根目录挂载区 这个直接将剩余的硬盘可以全部分配给它
创建主分区
这里的n 命令代表的是创建分区
p代表的主分区 e 代表逻辑分区
分区编号1-4是主分区 和拓展分区
First sectos 代表就是起始扇区位置,这里直接点回车选择默认
Last sectos 当然就是结束位置,这里摁下回车直接默认
记得摁下 w进行保存 q不保存退出
格式化分区
mkfs.ext4
将指定分区格式化成ext4 分区格式,这与Windows 默认的NTFS 格式是一样的
重启机器
注意:重启命令只有在 root 权限下有用 在前面我们已经通过 sudo su 进行权限的提升
重启后可以发现出现了两个挂载点,sr0 是我们的ISO 文件挂载出的光盘,sda1 就不用说了,就是我们分区后的硬盘
mount 命令挂载
具体参考:https://www.runoob.com/linux/linux-comm-mount.html
Linux mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。
下面命令的意思是:将/dev/sda1 分区挂载到 /mnt/sda1 下面
这里我们可以直接进行挂载,而不用指定/dev 文件夹下面的,其实是一样的
挂载后,顺利的可以看到挂载点下面存在的文件
连接网络,安装grub
通过ping 命令连接百度后发现网络通畅
修改国内镜像源
网易镜像站:http://mirrors.163.com/tinycorelinux/
参考:http://mirrors.163.com/.help/tinycorelinux.html
更改源为国内的源后,下载速度就会快很多。
修改完成后 使用cat 命令进行查看
软件浏览器 tce-ab
键入tce-ab 命令后,即可出现如下界面,需要注意的是,这个命令不能使用root 身份进行打开
我们键入S后搜索grub
选择第一个 grub-0.97 xxxxxx 进行安装 摁下q 后接着摁下 i 进行安装
显示安装成功,
mkdir [-p] 在硬盘中创建boot 目录以及grub目录
当然,光盘作为一种可以启动的系统,它里面也是含有启动项的,我们现在需要把光盘里面的引导文件拷贝过来
拷贝安装grub 后的grub 引导库
我们刚才在软件商店安装了grub 现在需要将文件进行一个拷贝,放到硬盘的grub 文件目录下,
ls 命令
ls 命令用于列出指定路径下所有的子目录与文件 这就好比我们查看文件夹是一样的
当前情况下,我们有两个已经挂载好的目录,可以理解的像windows 里面的此电脑一样,打开后有CDEF盘(分区)
cp 拷贝命令
cp 命令用于文件的拷贝与文件夹的拷贝
具体参考:https://www.runoob.com/linux/linux-comm-cp.html
注意:需要使用root 权限,否则会出现:
这样的问题:如下
配置GRUB 菜单
简介:GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
这就好比:我们现在需要构建一个菜单来告诉系统,如何加载我们的引导文件,这里我们就需要配置一个引导菜单文件
编辑挂载的sda分区下的menu.lst 文件,注意这是一个新建文件,
编辑默认值以及超时时间等,引导文件所在的位置,wq 进行保存
键入 sudo grub 命令后进入grub界面 我们安装刚才
键入根和分区号来选择根目录,打印出的是这个系统的文件类型 extf2 以及主分区类型 83 Linux
安装后 quiet 退出grub 菜单
关机后,取出虚拟机里面的光盘
重启系统后发现目录出现,安装成功
小结
使用Tinycore 进行分区以及挂载系统,并且通过简单的命令去安装GRUB 引导,为的就是了解一个linux 在启动过程中需要经过的一些过程
以及自己能够了解到对于分区以及挂载的一些基础知识,当然Tinycore 对于新手还是很不友好的,因为特别小 而且很多驱动不像Centos 一样完全
新手和难操作,当然,学习完后你发现自己对于分区以及GRUB 的引导有了一个简单的了解和认识的话,其实就已经足够了,其他的Linux的知识,
我们将通过Centos 进行讲解,因为Centos 在服务端还是特别常用的一款,盘他 就没错了
遇到的问题:
原因:估计是在分区的时候未全部分配,只分配了500M,没有分配全面导致在读取hd0的时候的问题
或者是复制grub 文件库的时候复制错误
参考:
https://www.cnblogs.com/yinheyi/p/7279508.html
http://forum.tinycorelinux.net/index.php?topic=797.0
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/13273119.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
posted on 2020-07-09 13:25 jack_Meng 阅读(4323) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用
2019-07-09 .Net Core控制台生成exe能独立运行
2016-07-09 通过Jquery异步获取股票实时数据
2016-07-09 JSONP -- 跨域数据交互协议
2016-07-09 js跨域及解决方案
2016-07-09 三种方法实现js跨域访问
2016-07-09 js跨域请求方式 ---- JSONP原理解析
2016-07-09 获取股票数据的2个简单方法