slax linux的定制
由于数据结构教学的需要,需要用到linux,要求就是小,启动快,可定制性强,恰好slax正好满足要求,以下就是定制slax linux的过程记录:
什么是Slax
Slax是一个基于Linux的Live操作系统。实时意味着它可以从外部媒体运行,而无需永久安装。Slax从USB大容量存储设备(例如闪存驱动器密钥)以及常规硬盘驱动器和CD / DVD光盘引导。只需插入设备并从中启动即可。整个Slax操作系统位于设备上的单个目录中/slax/
,从而可以更轻松地与其他数据进行组织。
Slax提供的FluxBox窗口管理器已经针对最常见的任务进行了预配置。包括一个Web浏览器chromium
,终端仿真器xterm
以及简单的文本编辑器leafpad
和计算器qalculate
。您可以将Slax放在各种不同的文件系统上,包括EXT(ext2,ext3,ext4),btrfs,甚至FAT和NTFS。
从只读介质(例如CD / DVD)启动Slax时,它将所有系统修改仅保留在内存中,并且在重新引导时所有修改都将丢失。另一方面,如果从可写设备(例如USB闪存驱动器)运行Slax,则它可以在其中存储所有更改,因此即使您位于另一台计算机上,也可以在下次启动时恢复所有配置和修改。此功能称为“持久更改”,您可以在单独的章节中阅读有关此功能的更多信息。
选择最佳的Slax架构(32位或64位)
您可能已经注意到Slax可用于32位和64位处理器体系结构。32位版本旨在在非常老旧的计算机(与Intel 686一样古老;可追溯到1995年)上运行。它也可以在全新的计算机上正常运行,但是下载量更大。此外,还有一个限制,即单个应用程序只能寻址4GB的RAM。另一方面,64位版本较小,没有这种限制,它将在当今可用的大多数计算机上运行。因此,通常,如果您打算在非常古老的旧计算机上使用Slax,请选择32位。如果您打算在本世纪制造的机器上使用Slax,则最好选择64位。而且,如果您不知道目标硬件是什么,
运行Slax的系统要求
Slax 32bit版本 | Slax 64位版本 | |
---|---|---|
处理器: | i686或更高版本的CPU,所有Intel处理器 和AMD处理器均可使用 |
x86_64 CPU,例如AMD Athlon 64,Opteron, Sempron,Intel Core 2 / i3 / i5 / i7等 |
记忆: | 128 MB RAM用于桌面 512 MB RAM用于运行Web浏览器 |
128 MB RAM用于桌面 512 MB RAM用于运行Web浏览器 |
外设: | CD或USB驱动器从中启动 | CD或USB驱动器从中启动 |
可选地: | 网卡,声卡 | 网卡,声卡 |
Slax的源代码和许可证
Slax是免费软件:您可以根据自由软件基金会发布的GNU通用公共许可(GPL)的条款,重新分发和/或修改它。分发Slax希望是有用的,但是没有任何担保;使用风险自负。GNU GPL许可证要求发布所有源代码,以便其他人可以重用,修改或从中学习。您可以相信我,这是一个非常好的主意-没有它,根本就不会有Slax。Slax本身与Debian共享大多数代码,Debian的源代码也可以公开获得。
CD / DVD上的Slax
如果计划从CD或DVD光盘运行Slax,则需要将Slax作为ISO文件下载。实际上,ISO文件是CD的完整映像,因此您需要将其刻录到CD / DVD介质上。实际上,选择CD还是DVD都没关系,两者都可以工作。最重要的部分是您不能将其刻录为常规文件。那是行不通的。相反,您必须将其刻录为光盘映像。例如,在Windows 7中,只需右键单击ISO文件并选择Burn disc image
从上下文菜单中。在较旧的Windows上,您将需要一些特殊的软件来执行此任务,例如,可以尝试使用Free ISO Burner。完成后,将Slax CD / DVD光盘放入CD / DVD驱动器,然后重新启动。在计算机启动时,您可能需要按一些键以显示启动菜单,然后选择从CD / DVD启动。这神奇的钥匙,其显示启动菜单通常F11
,F9
或者Esc
,请咨询您的BIOS文件或观看屏幕上的说明当你的计算机重新启动,以确保。
在硬盘或USB闪存驱动器上安装Slax
为了从硬盘驱动器或USB设备运行Slax,您需要将ISO文件的内容直接复制到磁盘的根目录中。只有一个名为的文件夹/slax/
,需要复制。例如,Windows 8.1会像为目录一样为您打开ISO文件。如果您的操作系统无法访问ISO文件的内容,则可能需要一些特殊的软件来执行此任务。或者,您可以将ISO文件刻录到CD / DVD光盘,然后从那里复制。您应该以/slax/
磁盘上的文件夹结尾,例如E:\slax\
。建议您的磁盘使用msdos分区方案(而不是GPT)。此外,它需要进行格式化,建议使用FAT32或ext4。
完成后,还需要执行一个步骤来使驱动器可启动:导航到/slax/boot/
USB设备或硬盘上的目录,然后在其中找到 bootinst.bat
文件(Linux用户在其中寻找bootinst.sh
)。只需双击运行它,它将对设备的主启动记录进行所有必要的更改,因此您计算机的BIOS实际上可以理解如何从磁盘启动Slax。请记住,引导安装程序不支持多重引导,因此只能从给定的驱动器引导Slax。
接下来,按照与从CD引导相同的步骤进行操作-重新引导计算机,然后从计算机的引导菜单中选择从USB驱动器或硬盘引导。同样,您可能需要查阅BIOS文档,以了解如何从所需的设备引导计算机上的操作系统。
Slax启动选项
在Slax本身开始加载之前,您可以在屏幕中间看到一个大的三叶草图像。这是启动徽标。它会显示一小会儿,Esc
在此期间您只有四秒钟的时间按一下键,以微调Slax的启动方式。按下Esc
将调用一个简单的启动菜单,如下所示:
运行Slax(永久保留更改)
运行Slax(新启动)
运行Slax(复制到RAM)
您可以使用此菜单在启动过程中将Slax数据复制到RAM或以“新启动”模式运行Slax,以防持久更改被破坏。使用箭头键进行导航,然后使用Enter
键选择任何选项。
持续的变化
从CD / DVD等只读介质运行时,Slax仅将所有系统更改存储在内存中,并且在重新引导时会丢失这些更改。如果您从可写媒体(例如USB驱动器)启动Slax,则对操作系统本身所做的所有更改都将在下次引导时保存并恢复。如果您的设备使用FAT文件系统(这是USB闪存驱动器上最常见的文件),则对Slax本身的所有文件修改都将保存到一个特殊文件中changes.dat
,该文件在启动设备的/slax/changes/
目录中创建,并会自动增长到4GB。如果您的引导设备使用本地Linux文件系统(例如ext4),则更改后的文件将本地保存到 /slax/changes/
目录,而无需中间的changes.dat文件。如果由于某种原因您不喜欢持久性更改,只需在启动菜单中选择一个不同的选项,您的Slax将开始使用默认的“新”配置,并且不会保存任何修改。如果您想在系统范围内进行测试,这也可能很有用,因为您始终可以通过简单的重新引导就恢复为默认状态(以防万一)。
该文件changes.dat
旨在甚至在大多数USB闪存驱动器上常用的FAT文件系统上也可以使用。不幸的是,FAT的文件大小限制为4GB。因此,持久变化再也不会增长。如果您需要保存更多内容,请使用某些Linux文件系统(例如EXT4或BTRFS)格式化存储驱动器,然后在其中安装Slax。Slax将能够本地保存更改,并且仅受设备实际容量的限制。永久更改功能(当然)不会影响您计算机硬盘驱动器上的文件。如果您修改这些文件,则无论您的永久更改设置如何,都将始终对其进行修改。
安全关闭Slax
Slax运行时,它将从其引导的设备读取系统数据。如果您使用的是永久更改,则Slax甚至会将数据写入启动设备。拔出或弹出它可能会使操作系统崩溃。因此,只有在计算机关闭或重新引导至其他操作系统之后,才能拔出引导设备。同样,如果在运行Slax时访问计算机的硬盘驱动器,这些硬盘驱动器将保持挂载状态并标记为“正在使用”。确保始终从关闭菜单或使用poweroff
或 reboot
命令正确关闭Slax ,并始终等待直到系统结束。
从内存运行Slax
但是,在某些情况下,您需要在保持Slax运行的同时尽快拔出引导设备。确实有可能。它需要您的计算机在启动过程中将所有Slax数据加载(复制)到RAM内存中,因此即使在不再插入引导设备后也可以访问它。为了使此“复制到RAM”功能生效,请确保使用启动菜单中的该启动选项启动Slax。启动Slax所需的时间将会增加,因为它将需要复制整个/slax
目录从CD或USB到计算机的内存,但随后它将从那里运行Slax,使您可以断开引导设备的连接。您的计算机将需要至少512 MB的RAM来保存所有Slax数据,同时仍具有足够的可用RAM用于操作系统本身。请记住,即使从内存运行Slax,也必须在需要时正确关闭它,以安全地卸下硬盘驱动器(如果有)。
Slax的秘籍
引导参数(也称为作弊码)用于影响Slax的引导过程。其中一些是所有Linux通用的,其他则仅适用于Slax。您可以使用它们禁用所需的硬件检测,从硬盘驱动器启动Slax等。要使用作弊码,请Esc
像往常一样在Slax启动过程中按键激活启动菜单,然后在看到启动菜单时按Tab
。屏幕底部将显示一个命令行,您可以在其末尾编辑或添加新的引导参数:
Cheatcode | 含义 | 例 |
---|---|---|
来自= | 从指定目录 甚至从ISO文件加载Slax数据 |
来自= / slax7 / 来自= / Downloads / slax.iso 来自= http://domain.com/slax.iso |
noload = | 禁止加载 指定为正则表达式的特定.sb模块 |
noload = 04-apps noload = apps |铬 noload = 04 | 05 |
没有声音 | 启动时静音 | 没有声音 |
toram | 激活复制到RAM功能 | slax.flags = toram |
栖息 | 激活永久更改功能 | slax.flags = toram,栖息 |
文本 | 禁用X的启动并仅停留在文本模式控制台中 | 文本 |
调试 | 启用Slax启动调试 | 调试 |
用空格分开命令。有关man bootparam
所有Linux常用的更多作弊码,请参见手册页。
Slax中包含的文本模式实用程序
文本模式提供了多种可以使用的系统工具。这些工具当然也可以在图形用户界面中使用,您只需要在诸如的终端窗口中运行它们即可xterm
。以下是一些您可能会发现最有用的工具:
档案实用程序 |
|
gzip 和 gunzip |
使用Lempel-Ziv编码减少命名文件的大小 |
bzip2 和 bunzip2 |
使用Burrows-Wheeler块排序文本压缩算法压缩文件 |
xz 和 unxz |
基于Igor Pavlov作为7-Zip一部分的LZMA算法的压缩实用程序 |
zip 和 unzip |
与PKZIP(Phil Katz的ZIP)兼容的压缩和文件打包实用程序 |
cpio 和 tar |
用于管理文件存档的程序 |
磁盘工具 |
|
fdisk |
Linux分区表操纵器,仅支持MBR(主引导记录)分区 |
hdparam 和 sdparam |
列出和可能更改ATA / IDE和SCSI磁盘参数的实用程序 |
mdadm |
用于创建,管理和监视Linux MD(软件RAID)设备的实用程序 |
硬件监控工具 |
|
dmidecode |
转储计算机的DMI表内容。下表包含系统硬件组件的说明 |
smartctl |
使用自我监视,分析和报告技术(SMART)控制和监视存储设备 |
文件系统实用程序 |
|
mkfs |
用于构建Linux或其他受支持的文件系统的工具,例如:ext2 / 3/4,reiserfs,btrfs,xfs,jfs,ntfs,fat等 |
fsck |
用于检查和修复支持的文件系统的实用程序(请参见上文) |
tune2fs |
允许在Linux ext2,ext3或ext4文件系统上调整各种可调文件系统参数 |
系统实用程序 |
|
lsof |
列出有关由系统上运行的进程打开的文件的信息 |
htop |
类似于著名的“顶部”程序的进程查看器,但提供了更多功能 |
数据恢复工具 |
|
ddrescue |
将数据从文件或设备复制到另一文件或设备,并尝试在发生读取错误的情况下抢救数据 |
rsync |
远程文件同步程序 |
联网工具 |
|
ip |
显示和操纵路由,设备,策略路由和隧道 |
nc |
使用TCP或UDP协议跨网络连接读取和写入数据的实用程序 |
networkctl |
反思网络链接的状态 |
wpa_supplicant |
Textmode wifi客户端 |
Windows共享支持 |
|
mount -t cifs |
安装Windows共享的命令,使其看起来像本地文件系统 |
其他工具 |
|
ssh |
OpenSSH客户端 |
service ssh start |
OpenSSH服务器 |
mc |
午夜指挥官文件管理器,包括FTP / SCP客户端,十六进制查看器和文本编辑器 |
apt |
应用程序打包工具以安装其他软件 |
特定于Slax的命令 |
|
savechanges |
将在当前会话期间所做的所有文件系统修改保存到模块文件中 |
sb2dir |
将.sb模块转换为目录 |
dir2sb |
将目录转换为.sb模块 |
rmsbdir |
擦除sb2dir创建的目录 |
genslaxiso |
使用新模块生成Slax iso文件 |
Slax中的桌面应用程序
xterm |
终端程序(命令行GUI) |
chromium |
互联网网络浏览器和视频播放器(以访客身份运行) |
leafpad |
简单的文字编辑器 |
qalculate |
强大的计算器 |
scrot |
屏幕截图捕获程序,按PrintScreen按钮调用 |
feh |
简单的图像查看器和背景设置器 |
wicd-manager |
网络管理员 |
pcmanfm |
文件管理器 |
自定义Slax
即使Slax从CD / DVD等只读介质运行,它仍然提供完全可写的根文件系统(更改存储在内存中),使您可以从联机存储库或其他来源安装其他软件。除非您使用永久更改,否则安装的所有内容仅保留在内存中,并且在重新启动后丢失。下面介绍了向Slax添加软件的工具以及使更改永久生效的工具。
使用apt添加软件
Slax完全支持apt
命令,这是一个功能强大的命令行工具,适用于诸如安装新软件包或升级现有软件包之类的任务。例如,为了安装vlc视频播放器,只需执行apt install vlc
并完成所有设置,Slax将下载所请求的程序包,包括运行该程序所需的所有库和其他依赖项。如果不确定要安装的软件包名称,可以使用进行搜索apt search your_keyword
。请记住,apt会在您首次运行时自动下载其可用软件包的数据库。如果系统连续运行几天,则可能需要运行apt update
不时手动进行操作,以确保数据库是最新的。
手动添加软件
如果您希望手动将软件添加到Slax,可以通过从Internet下载和编译源代码来完成。只需记住,为了能够在Slax中编译源代码,您将需要apt install build-essential
提供,gcc编译器,make以及该任务所需的其他工具。如果您正在使用github从github下载源git clone
,则可能还需要apt install git
。
使您的更改永久生效
如果从可写介质运行Slax,则更改将被永久存储,并且无需任何其他步骤。但是,如果从CD / DVD等只读介质运行Slax,或者选择在引导过程中禁用持久更改功能,则仍然可以通过创建模块来保存更改。在任何时候,当您安装并配置了所需的应用程序后,请使用savechanges
命令将对当前系统所做的所有修改保存到模块中。该命令需要一个参数,该参数是将保存更改的文件的路径。例如,使用savechanges /tmp/mychanges.sb
。除了一些预定义的文件和目录(例如临时文件,缓存等)外,对系统所做的所有修改都将被存储。
一旦您的更改存储在模块中,您所需要做的就是将此模块包括在您的Slax中,并且它将在启动期间自动激活。将.sb模块复制到/slax/modules/
目录并重新启动。如果从可写介质(例如USB驱动器)运行Slax,则可以将模块直接复制到/run/initramfs/memory/data/slax/modules/
,该模块已映射到USB磁盘。如果从CD / DVD等只读介质运行Slax,则可能需要使用genslaxiso
命令重新生成ISO映像。
如果要检查模块的内容或修改模块中的文件,可以使用Slax中提供的两个命令: sb2dir
将模块转换为目录,然后dir2sb
将其转换为.sb文件。要记住的重要一点是,转换为目录的模块存储在内存中(从技术上讲,该目录已用tmpfs重载),因此即使使用空目录,您也可能无法用rmdir删除该目录(您将得到EBUSY错误)。使用rmsbdir
命令删除由sb2dir创建的目录。
请注意,这些命令在较旧的Slax版本中的工作方式有所不同,因此请确保您使用的是Slax 9.6.4或更高版本。
即时激活模块
如果您有一个Slax模块(.sb),并且希望在运行Slax时将其激活,而无需重新启动,则可以使用slax activate
command。同样,您可以使用停用任何模块slax deactivate
。但是,如果打开或使用了模块中的任何文件,则无法停用,因此在尝试停用模块之前,请确保杀死所有可能使用模块中文件的进程。
回顾一下,这是我们刚刚学到的命令 |
|
apt search keyword |
通过关键字搜索可用的软件包 |
apt install package |
下载并安装软件包 |
savechanges target.sb |
将当前会话期间进行的所有文件系统修改保存到模块文件中 |
sb2dir module.sb |
将.sb模块转换为目录 |
dir2sb directory.sb |
将目录转换为.sb模块 |
rmsbdir directory.sb |
清除sb2dir创建的目录 |
genslaxiso slax.iso module.sb |
用新模块生成Slax iso文件 |
slax activate module.sb |
即时激活模块 |
slax deactivate module.sb |
即时停用模块 |
示例:使用新墙纸制作模块
#Slax使用/usr/share/wallpapers/slax_wallpeper.jpg中的墙纸
#因此,我们将替换此文件
#首先,创建一个临时模块树
#注意目录本身的扩展名为.sb
DIR = / tmp / module.sb
mkdir $ DIR
mkdir -p $ DIR / usr / share / wallpapers / #现在将墙纸文件复制到该目录
猫new_wallpaper.jpg> $ DIR / usr / share / wallpapers / slax_wallpaper.jpg #最后,将模块目录转换为文件
#目录将被删除,并将创建具有相同名称的模块文件
dir2sb $ DIR
示例:将FireFox添加到Slax
#首先,我们启动新的Slax并尝试apt
apt安装firefox #如您所见,没有名为“ firefox”的软件包。让我们尝试搜索单词
apt搜索Firefox | 更多 #啊,现在我们得到了一些东西。该软件包称为firefox-esr。所以让我们安装它
apt安装firefox-esr #我们只希望它叫Firefox,所以让我们编辑负责该名称的桌面文件
sed -i -r“ s / ^ Name = FireFox ESR / Name = Firefox /” /usr/share/applications/firefox-esr.desktop #现在保存新安装的软件,包括我们对模块的更改
#在我们的示例中,该模块将保存在当前目录中
savechanges firefox.sb #如果从只读CD运行,则可以使用我们的模块创建一个新的ISO
#然后将ISO刻录到新的CD上,并且在引导时可以使用Firefox
#在我们的示例中,该ISO文件将在当前目录中创建
genslaxiso slax.iso firefox.sb #如果我们正在从USB驱动器运行Slax,我们可以将其直接放入模块文件夹
#这样,firefox将在重启后可用
mv firefox.sb / run / initramfs / memory / data / slax / modules /
Slax目录结构
所有Slax数据文件都位于引导媒体上的单个目录中。该目录的名称为“ slax”也就不足为奇了。所有的魔力都发生在里面。这里是简化目录结构的概述;目录为红色,使用斜体字还提到了一些有趣的文件 :
├─── boot
│ ├─── isolinux.bin
│ ├─── syslinux.cfg
│ ├─── initrfs.img
│ ├─── vmlinuz
│ └─── ...
├─── changes
├─── rootcopy
├─── 01-core.sb
├─── 02-xorg.sb
├─── 03-desktop.sb
├─── 04-chromium.sb
└─── ...
引导Linux内核
当计算机的BIOS启动Slax时,它实际上仅运行SYSLINUX引导加载程序。引导加载程序本身存储在文件isolinux.bin或ldlinux.sys中,具体取决于您的引导介质-CD / DVD使用isolinux.bin,USB磁盘或硬盘驱动器使用ldlinux.sys。
一旦SYSLINUX引导加载程序执行完毕,它就会从配置文件syslinux.cfg(您猜对了)中了解下一步要做什么。在Slax中,此配置文件包含显示一些很酷的启动徽标的说明,如果用户在超时之前按了某个键,则可以选择提供启动菜单。当超时计数器达到零或用户退出引导菜单时,SYSLINUX引导加载程序会将两个文件加载到内存中:vmlinuz(Linux内核)和initrfs.img(基本根文件系统)。进度由打印在屏幕上的连续点流指示。加载文件后,将执行vmlinuz二进制文件以启动Linux内核。
预初始化
在正常情况下(从硬盘驱动器开始使用标准Linux发行版时),Linux内核将从硬盘驱动器挂载根文件系统, /sbin/init
并将其作为执行系统启动的主要过程来执行。在Slax中,情况有所不同-没有硬盘驱动器可从中挂载根文件系统,但是内核肯定需要启动一些初始化过程。为此,Slax在initrfs.img文件中带有一个基本文件系统-它是一个压缩的CPIO存档,其中包含一些目录和文件,包括核心Linux工具(命令)和所需的init。
因此,在Linux内核成功初始化并完全控制了计算机之后,它的最后一个任务是在内存中找到所提到的CPIO存档(如您所记得,它是通过syslinux boot loader从文件initrfs.img加载到那里的),然后解压缩它(进入用作临时根文件系统的内存区域,称为initramfs)并/init
从那里执行临时过程。
转义initramfs
这时,我们已经运行了一个完全初始化的Linux内核,内存中的initramfs区域由仅具有最基本的Linux命令的临时根文件系统填充,并且临时init刚刚启动。
在initramfs中拥有临时根文件系统并不理想,因为它不支持pivot_root
系统调用-这是一项重要的操作,将在启动过程中稍后使用。我们需要从initramfs切换到其他内容。为此,临时init首先在其上安装tmpfs文件系统/m
,将所有文件和目录(包括init脚本本身)移至其中,然后使用switch_root使该tmpfs /m
成为新的根目录,并从那里重新启动init本身。蓝星号表示已移动的目录。
/
├─── bin
│ ├─── sh
│ ├─── mount
│ └─── ...
├─── dev
├─── mnt
├─── m (tmpfs) ★
├─── memory
├─── proc
├─── sys
├─── init
└─── shutdown
/
└─── m (tmpfs) ★
├─── bin
│ ├───sh
│ ├───mount
│ └─── ...
├─── dev
├─── mnt
├─── memory
├─── proc
├─── sys
├─── init
└─── shutdown
/
├─── bin
│ ├─── sh
│ ├─── mount
│ └─── ...
├─── dev
├─── mnt
├─── memory
├─── proc
├─── sys
├─── init
└─── shutdown
不管整个操作看起来多么奇怪(我们最终都获得了与以前相同的目录结构,似乎根本没有任何改善),但是更改是非常重要的。从现在开始,临时根文件系统位于tmpfs而不是initramfs上,因此 pivot_root
将来需要时可以使用该操作。
您可能想知道为什么当前的根文件系统仍标记为临时文件系统。这是因为我们仍处于构建阶段的开始,我们稍后将通过将Slax压缩数据映像组合到AUFS联合来构建真正的根文件系统,如下所述。
Slax数据查询
在初始化过程可以开始在可用设备上搜索Slax数据之前,它需要设置工作环境。proc和sysfs文件系统分别安装在/proc
和之上/sys
。一些重要的内核驱动程序(例如aufs,squashfs和loop)使用modprobe加载,设备文件/dev
通过mdev命令在目录中创建。
只要可通过中的设备文件访问存储设备/dev
,blkid命令将仅过滤掉那些可以挂载的设备(其中包含正在运行的内核已知的文件系统)。依次检查设备(通过只读方式安装/memory/data/
),直到找到有效的Slax数据目录。然后,处理所有扩展名为.sb的文件(Slax捆绑包)-对于每个Slax捆绑包,将在/memory/bundles/
其中创建目录, 并将捆绑包(实际上是squashfs压缩映像文件)循环安装在其上。在下图中,squashfs的内容为绿色。
/
├─── bin
├─── dev
├─── ...
├─── memory
│ ├─── bundles
│ │ ├─── 01-core.sb (squasfhs mount) < ───┐
│ │ │ ├─── bin │
│ │ │ ├─── etc │
│ │ │ ├─── sbin │
│ │ │ └─── ... │
│ │ ├─── 02-xorg.sb ......................│...
│ │ │ ├─── etc │ :
│ │ │ ├─── usr │ :
│ │ │ └─── ... │ :
│ │ ├─── 03-desktop.sb ...................│..:...
│ │ │ ├─── usr │ : :
│ │ │ └─── ... │ : :
│ │ └─── ... │ : : loop
│ ├─── data (slax device mounted here) │ : : mounts
│ │ └─── slax │ : :
│ │ ├─── boot │ : :
│ │ ├─── changes │ : :
│ │ ├─── rootcopy │ : :
│ │ ├─── 01-core.sb ──── > ──── > ───┘ : :
│ │ ├─── 02-xorg.sb ....................: :
│ │ ├─── 03-desktop.sb ....................:
│ │ └─── ...
│ ├─── changes (empty yet)
│ └─── union (empty yet)
├─── proc (procfs mounted here)
├─── sys (sysfs mounted here)
└─── init
与AUFS放在一起
现在,最终根文件系统的各个部分以只读方式安装在中的单独文件夹下 /memory/bundles
。核心Linux系统实用程序和库(例如/bin/bash
或/lib/ld-linux.so
位于中) /memory/bundles/01-core.sb/
,与桌面环境相关的文件可在等中找到/memory/bundles/03-desktop.sb/
。归功于AUFS(由Junjiro Okajima先生开发的类似工会的文件系统),将它们组合到一个甚至可以写的单个根文件系统中成为可能。AUFS能够容纳多个文件夹(所谓的分支)并将它们组合在一起形成一个目录。这就是接下来要发生的事情,将分离的部分与目录一起合并/memory/changes/
到AUFS联合目录,该目录将安装在/memory/union
。
/
├─── ...
└─── memory
├─── bundles
│ ├─── 01-core.sb ───────── > ──────┐
│ ├─── 02-xorg.sb ..................│.......
│ ├─── 03-desktop.sb ...............│......:........
│ └─── ... │ : :
├─── changes ──────── > ───────┐ │ : :
├─── ... ˅ ˅ : :
└─── union < ═══════ < ═══════ < ───── < ─────┘ < ────┘
├─── bin AUFS
├─── etc mount
├─── mnt
├─── root
├─── sbin
├─── usr
├─── ...
└─── var
变化
空目录/memory/changes
是可写的,因此整个AUFS挂载/memory/union
也可写。联盟中所有新的或更改的文件都将被复制到此空目录,然后系统会创建或修改它们。由于更改目录位于tmpfs(即RAM)上,因此所有新文件和修改后的文件都存储在RAM中,因此在重新启动时丢失。
但是,如果Slax是从USB设备或硬盘等可写介质启动的,则它会识别并/memory/changes
在将其与其他分支并入联盟之前装入可写驱动器,这实际上意味着已更改和新文件将存储在该驱动器上。引导设备而不是RAM,重新引导不会删除它们。此功能称为“永久更改”,可以通过启动菜单设置来打开或关闭。
切换到真实根
至此,已经内置了完全可写的最终根文件系统/memory/union
。临时init的寿命即将结束。它使用pivot_root
和 chroot
系统调用创建/memory/union
新的根,将临时tmpfs根转移到/run/initramfs/
新的根中。下图的蓝色和绿色星星表示移动的位置。最后,/sbin/init
执行来自aufs根文件系统的real 。Slax操作系统的启动才刚刚开始。
/
├─── ...
└─── memory
└─── union (aufs) ★
├─── bin
├─── etc
├─── root
├─── run
│ └─── initramfs (empty)
├─── sbin
│ ├─── ...
│ └───init
├─── usr
├─── ...
└─── var
/
├─── bin
├─── etc
├─── root
├─── run
│ └─── initramfs (tmpfs) ★
│ ├─── ...
│ └─── memory
│ └─── union (empty)
├─── sbin
│ ├─── ...
│ └─── init <- gets executed
├─── usr
├─── ...
└─── var
快速向Slax添加模块
根文件系统是可写的,我们可以通过拆包的方式以常规方式安装新软件包,同时运行Slax。还有另一种可能性,可以在不安装任何软件包的情况下,将新文件和目录即时添加到Slax。由于Slax以AUFS作为根运行,因此我们可以采用其他squashfs压缩文件系统,将其循环挂载到位于aufs树之外的目录中(例如,/run/initramfs/memory/bundles/name.sb/
该目录位于tmpfs上),然后发出重新挂载该命令将新安装的目录作为新分支添加到aufs。
新的squashfs模块中的所有文件和目录将立即显示,就像它们是从一开始就安装在系统中一样,而解压缩是即时进行的,仅适用于实际访问的文件。
同样,我们可以通过另一个remount命令从aufs根目录中删除先前添加的AUFS分支(挂载的squashfs)。分支中的文件将立即从系统中消失,这将有效地卸载软件包。
Slax关机
当Slax关闭以进行重新引导或关闭系统电源时,它会像其他Linux一样执行所有标准任务,例如卸载用户安装的所有分区,终止所有进程,等等。但是由于引导设备可能仍会在最后安装并用于永久更改,因此在发出真正的电源关闭之前,还需要执行一些其他步骤,以确保完全卸载引导设备。
Slax不会在init认为应该这样做的时候关闭系统,而是切换回initramfs(由systemd自动处理)并执行关闭脚本/run/initramfs/shutdown
。
然后,关闭脚本负责将剩余的从Slax启动并已完全弹出引导设备的已安装磁盘取消掉。最后,计算机将根据用户的意图重新启动或关闭。
现在开始了定制了:
1、虽然slax可在只读介质上运行,它依旧提供了可写的根文件系统,将更改暂存在内存中,可在使用中从网络或其他来源更新和安装软件,对系统进行配置等。如果完成操作后,不做任何处理,所有的更改将随着系统的重启而烟消云散。
2、使用apt安装新软件、更新老软件,同时更新或安装软件依赖的库或者软件包:
1)、apt edit-sources #编辑软件源
2)、apt update #更新软件源
3)、apt upgrade #更新所有有更新的包,有依赖的不更
4)、apt search fileName #查找指定的软件包
5)、apt list fileName #列出指定的软件包的所有信息
6)、apt show fileName #显示指定的软件包
7)、apt insall fileName #安装指定的软件包
8)、apt remove fileName #删除指定的软件包
9)、apt full-upgrade #更新软件包,可能会删除某些软件包为了满足依赖
10)、apt autoremove #自动删除无用的软件包
3、可以使用源码安装软件,如果需要使用github的包,需要安装git软件包,同时也需要gcc、make等软件包,最好把所有需要的一并装上vim gdb git cmake,需要使用:
apt install build-essential vim gdb git cmake
4、系统配置,可以配置vim配置文件、git配置文件、bash配置文件等
5、若想将2或3或4的工作保存,主要有以下两种情况:如果是在可写介质上运行slax,所有的更改都是自动保存,无需其他操作,直接将更改保存到/slax/changes/目录下,重启后系统自动读取,就会重新到配置后的状态。另外一种情况是截至不能被写入时,无论是介质本身不能写入还是介质被禁止写入都一样的,使用:
savechanges /tmp/mychanges.sb #将系统的更改保存到指定的/tmp目录下,文件名为mychanges,
将文件保存到可写的介质中,以便后来的使用。
6、使用自己的配置或更改,若介质不能写入,使用genslaxiso重新生成镜像文件,如果介质可写,将mychanges.sb文件放置到其他sb文件一样的目录下,就会在系统启动后自动被加载,从而变相实现了运行环境的保存。
7、模块修改总结:
1)、生成模块 savechanges /tmp/mychanges.sb
2)、模块变成目录 sb2dir mychanges.sb
3)、目录生成模块 dir2sb mychanges
4)、删除模块目录 rmsbdir mychanges
5)、新模块生成ISO genslaxiso slax.iso mychanges.sb
6)、及时激活模块 slax activate mychanges.sb
7)、及时停用模块 slax deactivate mychanges.sb
slax linux的定制的更多相关文章
- linux的定制和发布(二)
Linux的发布 有时候希望将定制好的Linux移植到其他的机器上使用,所以我们将定制好的Linux制作 成安装光盘的形式,可以方便在其他机器上安装. 为此我们要先制作一个引导系统,由 ...
- linux的定制和发布(一)
如果总是仰视高山,就会挫伤我们攀登的勇气,使我们固步自封.我们需要做的就 是迈开自己的脚步,踏出第一步,let's go! Linux的裁剪一般有三种方法: 1.以一个已经安装好的系统为基 ...
- 基于busybox和LFS的linux系统定制
自从在大学知道了Linux这玩意是可以定制的之后,一直想做出一版属于自己的Linux系统.最近工作比较闲,终于塌下心来好好学习了一下. 目前来说,我接触的定制Linux的方法主要有两种: 1. ...
- linux个性化定制登录信息
1./etc/motd /etc/motd即messageoftoday(布告栏信息),每次用户登录时,/etc/motd文件的内容会显示在用户的终端.系统管理员可以在文件中编辑系统活动消息,例如:管 ...
- linux设置定制器自动执行任务
基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 ...
- 定制x86 Linux系统
/************************************************************************************* * 定制x86 Linux ...
- Linux 定制X86平台操作系统
/********************************************************************************* * Linux 定制X86平台操作 ...
- linux 环境变量
电脑中必不可少的就是操作系统.而Linux的发展非常迅速,有赶超微软的趋势.这里介绍Linux的知识,让你学好应用Linux系统.比如要把/etc/apache/bin目录添加到PATH中,方法有三: ...
- Kali Linux 2.0配置并安装常用的工具
Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Linux 发行版,包含很多安全和取证方面的相关工具. Kali Linux 2.0是基于Debian ...
随机推荐
- oracle查询十分钟之前的数据
select * from TABLE as of timestamp sysdate - 10/1440 t WHERE ColName='1111'; TABLE:表名 WHERE:查询子句 sy ...
- [JZOJ100019]A--dfn序+扫描线
[JZOJ100019]A--dfn序+扫描线 题目链接 太懒了自行搜索 分析 这道题查了一个下午的错,真的心态崩了 不过这道题确实妙啊 类比于喝喝喝,我们发现任何一条覆盖了非法路径的路径一定不合法, ...
- ajax对数据删除、查看详情功能
运用bootstrap,jquery和ajax显示一些数据,附加删除功能并且点击能弹出模态框详情功能 主页面main.php <!DOCTYPE html PUBLIC "-//W3C ...
- RANSAC拟合算法
最小二乘法只适合与误差较小的情况.试想一下这种情况,假使需要从一个噪音较大的数据集中提取模型(比方说只有20%的数据时符合模型的)时,最小二乘法就显得力不从心了. 算法简介 随机抽样一致算法(RANd ...
- centos 升级glibc-2.17
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55. ...
- 9.Redis的Java客户端Jedis
Redis的Java客户端Jedis Jedis所需jar包 commons-pool-1.6.jar jedis-2.1.0.jar 1.Jedis常用操作(jedis中的api 和 我们在 l ...
- [基础累积] C#计算时间差
TimeSpan nowTime = new TimeSpan(DateTime.Now.Ticks); TimeSpan nextTime = new TimeSpan(nextDispatcher ...
- 文本三剑客之grep及正则表达式
1.grep 1. 什么是grep.egrep和fgrep Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红).grep全称是Glo ...
- awk 内置函数的使用
转自:http://gdcsy.blog.163.com/blog/static/12734360920130241521280/ 一.split 初始化和类型强制 awk的内建函数sp ...
- IntelliJ IDEA详细配置和使用教程(适用于Java开发人员)
关闭Intellij IDEA自动更新在File->Settings->Appearance & Behavior->System Settings->Updates下 ...