由于数据结构教学的需要,需要用到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启动。这神奇的钥匙,其显示启动菜单通常F11F9 或者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的启动并仅停留在文本模式控制台中 文本
调试 启用S​​lax启动调试 调试

用空格分开命令。有关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 activatecommand。同样,您可以使用停用任何模块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”也就不足为奇了。所有的魔力都发生在里面。这里是简化目录结构的概述;目录为红色,使用斜体字还提到了一些有趣的文件 :

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本身。蓝星号表示已移动的目录。

initramfs as root:

(initramfs)
/
├─── bin
│    ├─── sh
│    ├─── mount
│    └─── ...
├─── dev
├─── mnt
├─── m (tmpfs) ★
├─── memory
├─── proc
├─── sys
├─── init
└─── shutdown
->
initramfs after move to tmpfs:

(initramfs)
/
└─── m (tmpfs) ★
     ├─── bin
     │    ├───sh
     │    ├───mount
     │    └─── ...
     ├─── dev
     ├─── mnt
     ├─── memory
     ├─── proc
     ├─── sys
     ├─── init
     └─── shutdown
->
tmpfs after switch_root:

(tmpfs) ★
/
├─── 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的内容为绿色。

(tmpfs)
/
├─── 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

(tmpfs)
/
├─── ...
└─── 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操作系统的启动才刚刚开始。

tmpfs根在pivot_root系统调用之前:

tmpfs root before pivot_root syscall:

(tmpfs) ★
/
├─── ...
└─── memory
     └─── union (aufs) ★
          ├─── bin
          ├─── etc
          ├─── root
          ├─── run
          │    └─── initramfs (empty)
          ├─── sbin
          │    ├─── ...
          │    └───init
          ├─── usr
          ├─── ...
          └─── var
aufs as new root:

(aufs) ★
/
├─── 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的定制的更多相关文章

  1. linux的定制和发布(二)

    Linux的发布         有时候希望将定制好的Linux移植到其他的机器上使用,所以我们将定制好的Linux制作 成安装光盘的形式,可以方便在其他机器上安装. 为此我们要先制作一个引导系统,由 ...

  2. linux的定制和发布(一)

    如果总是仰视高山,就会挫伤我们攀登的勇气,使我们固步自封.我们需要做的就 是迈开自己的脚步,踏出第一步,let's go!       Linux的裁剪一般有三种方法: 1.以一个已经安装好的系统为基 ...

  3. 基于busybox和LFS的linux系统定制

    自从在大学知道了Linux这玩意是可以定制的之后,一直想做出一版属于自己的Linux系统.最近工作比较闲,终于塌下心来好好学习了一下.   目前来说,我接触的定制Linux的方法主要有两种:   1. ...

  4. linux个性化定制登录信息

    1./etc/motd /etc/motd即messageoftoday(布告栏信息),每次用户登录时,/etc/motd文件的内容会显示在用户的终端.系统管理员可以在文件中编辑系统活动消息,例如:管 ...

  5. linux设置定制器自动执行任务

    基本格式 :  * * * * * command  分 时 日 月 周 命令  第1列表示分钟1-59 每分钟用*或者 */1表示  第2列表示小时1-23(0表示0点)  第3列表示日期1-31  ...

  6. 定制x86 Linux系统

    /************************************************************************************* * 定制x86 Linux ...

  7. Linux 定制X86平台操作系统

    /********************************************************************************* * Linux 定制X86平台操作 ...

  8. linux 环境变量

    电脑中必不可少的就是操作系统.而Linux的发展非常迅速,有赶超微软的趋势.这里介绍Linux的知识,让你学好应用Linux系统.比如要把/etc/apache/bin目录添加到PATH中,方法有三: ...

  9. Kali Linux 2.0配置并安装常用的工具

    Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Linux 发行版,包含很多安全和取证方面的相关工具. Kali Linux 2.0是基于Debian ...

随机推荐

  1. oracle查询十分钟之前的数据

    select * from TABLE as of timestamp sysdate - 10/1440 t WHERE ColName='1111'; TABLE:表名 WHERE:查询子句 sy ...

  2. [JZOJ100019]A--dfn序+扫描线

    [JZOJ100019]A--dfn序+扫描线 题目链接 太懒了自行搜索 分析 这道题查了一个下午的错,真的心态崩了 不过这道题确实妙啊 类比于喝喝喝,我们发现任何一条覆盖了非法路径的路径一定不合法, ...

  3. ajax对数据删除、查看详情功能

    运用bootstrap,jquery和ajax显示一些数据,附加删除功能并且点击能弹出模态框详情功能 主页面main.php <!DOCTYPE html PUBLIC "-//W3C ...

  4. RANSAC拟合算法

    最小二乘法只适合与误差较小的情况.试想一下这种情况,假使需要从一个噪音较大的数据集中提取模型(比方说只有20%的数据时符合模型的)时,最小二乘法就显得力不从心了. 算法简介 随机抽样一致算法(RANd ...

  5. centos 升级glibc-2.17

    wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55. ...

  6. 9.Redis的Java客户端Jedis

    Redis的Java客户端Jedis Jedis所需jar包   commons-pool-1.6.jar jedis-2.1.0.jar 1.Jedis常用操作(jedis中的api 和 我们在 l ...

  7. [基础累积] C#计算时间差

    TimeSpan nowTime = new TimeSpan(DateTime.Now.Ticks); TimeSpan nextTime = new TimeSpan(nextDispatcher ...

  8. 文本三剑客之grep及正则表达式

    1.grep 1. 什么是grep.egrep和fgrep Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红).grep全称是Glo ...

  9. awk 内置函数的使用

    转自:http://gdcsy.blog.163.com/blog/static/12734360920130241521280/ 一.split 初始化和类型强制        awk的内建函数sp ...

  10. IntelliJ IDEA详细配置和使用教程(适用于Java开发人员)

    关闭Intellij IDEA自动更新在File->Settings->Appearance & Behavior->System Settings->Updates下 ...