我在Ubuntu安装过程中没有创建交换分区。后来,我释放了一些空间,并创建了交换分区。现在,每次启动后,我都手动打开gparted右键单击交换分区以打开“ swapon”选项。

如何在引导时自动启用交换分区?

而且,如果我还没有创建交换分区,那么我还有其他选择吗?

评论

askubuntu.com/questions/299417/…

#1 楼

您需要编辑/etc/fstab并添加新的交换分区。

sudo nano /etc/fstab


您需要添加类似于

UUID=735b3be3-779c-4d21-a944-b033225f3ab4 none   swap    sw      0       0


,您将使用命令获取UUID

sudo blkid /dev/sda3


(用适当的设备名称替换/dev/sda3;为了查看适当的设备名称,我们可以使用lsblk-如此处所述)。

相关:


如何在带有nano的终端中编辑文件?


评论


我需要/ etc / fstan的帮助才能获取输出:-bash:/ etc / fstab:权限被拒绝

– Ashu_FalcoN
2014年8月31日上午8:20

使用sudo gedit / etc / fstab

–user323419
2014年11月29日在22:37

要找到适当的设备名称:sudo fdisk -l(来自:askubuntu.com/questions/182446/…),然后查找“ Type:Linux swap”。

– NumesSanguis
16年8月17日在12:30

sudo blkid / dev / sda4不为我打印任何内容(sda4是代码为82h的新创建分区,fdisk说它是“ Linux swap / Solaris”分区)。

– Egor Skriptunoff
17-2-25在21:02



@ elvis.dukaj也可以使用设备名称。他们基本上表达了两种不同的东西。一个说使用与该UUID完全相同的卷(某些情况会随着另一个mkswap运行而改变),另一个说使用该磁盘/ dev / sda的主分区号3。有些人更喜欢UUID,因为即使设备名称的分配发生了变化,UUID也会保持不变。这就是差异如此重要的原因。但是,如果您确定不会重新分区驱动器,则/ dev / sda3应该同样安全使用。

– 0xC0000022L
18年5月24日在19:49

#2 楼

要在安装后创建交换分区,请创建一个空分区。它应该没有孔。然后,您可以使用以下格式格式化该分区:

sudo mkswap /dev/sdX


用分区替换/dev/sdX。将此分区安装为与

sudo swapon -U UUID


交换,其中UUID是您的/dev/sdX的UUID,如下所示:

blkid /dev/sdX


通过添加以下行来在/etc/fstab中绑定新交换:

UUID=xxx    none    swap    sw      0   0


如果要使用交换进行休眠,则需要使用以下命令更新/etc/initramfs-tools/conf.d/resume中的UUID内容RESUME=UUID=xxx。不要忘记$ sudo update-initramfs -u。完成操作:如果没有备用分区,也可以创建交换文件。此答案为您提供了有关如何创建交换文件并在启动时启用它的想法。

评论


截至目前,我有一个带有两个分区的SSD,但我想制作第三个分区。如果我有一个主要的ext4分区来保存操作系统和我的文件,我可以用它将2GB的分区剥离成一个新分区吗?该主分区具有足够的可用空间,因此这不是问题。

–达斯汀
15年4月4日在22:46

查看gparted调整分区大小。

– NumesSanguis
16年8月17日在12:35

#3 楼

如果您不希望或不确定如何创建交换分区,则可以创建一个交换文件,该文件的工作方式与分区相同。以下是步骤(使用终端):



创建一个空文件(1K * 4M = 4 GiB)。

sudo mkdir -v /var/cache/swap
cd /var/cache/swap
sudo dd if=/dev/zero of=swapfile bs=1K count=4M
sudo chmod 600 swapfile



将新创建的文件转换为交换空间文件。

sudo mkswap swapfile



启用文件进行页面调度和交换。

sudo swapon swapfile


验证者:swapon -stop

top -bn1 | grep -i swap


应显示如下行:KiB Swap: 4194300 total, 4194300 free

要禁用,请使用sudo swapoff swapfile命令。


将其添加到fstab文件中,以使其在下一次系统引导时持久。

echo "/var/cache/swap/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab



启动时重新测试交换文件的方式如下:

sudo swapoff swapfile
sudo swapon -va


注:上面的命令重新检查fstab文件的语法,否则您的Linux无法正常启动。



评论


感谢您使用交换文件而不是交换分区的唯一答案。在这种情况下,我无法创建分区。命令效果很好。

–萨拉·博塔(Sarel Botha)
17年2月4日在14:53

对于需要更大大小交换空间的用户,对于X GiB交换空间,将count = 4M增加到XM。万一有人错过。

–saurabheights
17年5月15日在8:52

我不确定第5步。为什么我要关闭掉交换进行测试?

–拉菲·哈特查杜安(Raffi Khatchadourian)
18年1月2日,16:02

啊,我现在明白了。您需要在重新启动之前执行此操作。我在启动时就被甩了。

–拉菲·哈特查杜安(Raffi Khatchadourian)
18年1月3日,下午3:49

这对于远程VPS非常有用,在远程VPS中,磁盘实际上是虚拟设备,您无法控制分区。谢谢!

– ColinM
19-10-25在21:16

#4 楼

有一种使用gparted的图形方式。

运行Gparted,方法如下:

sudo gparted


如果没有安装,则可以使用

sudo apt-get install gparted

安装它,一旦gparted运行:


通过右键单击任何未分配的块来分配分区然后单击new

将分区格式化为linux-swap

右键单击该分区,然后单击swapon


应该有一个钥匙图标完成后,分区名称旁边的

评论


到目前为止,最简单的答案

–索比
17年1月1日下午5:45

要使其永久,您仍然必须按照@ user4124的答案编辑fstab文件

– Madura Pradeep
18 Mar 17 '18 at 4:20

问题已经表明他们这样做。

–柴T.雷克斯
18-10-16在18:31

这根本无法回答问题。

–mook765
18-10-17在7:22

@ mook765,问题是“系统安装后如何添加交换?”。这完全可以回答这个问题。

–泰勒
19年8月29日在14:47

#5 楼

您必须在/ etc / fstab中定义一个交换文件系统。它应该包含与

UUID=67682d1b-a1d8-4377-a3dd-67340c141619 none            swap    sw              0       0


类似的行。当然,您需要用设备的标识符替换UUID的值。

评论


我怎么才能得到它?

–user13593
2011年4月5日在20:21

您可以改用设备名称,例如/ dev / sda1(不带UUID)。

–亚当·伯特克(Adam Byrtek)
2011年4月5日在20:30

#6 楼

linux.com提供的交换文件更加灵活,您可以动态调整您拥有的交换存储空间的数量。
还可以将交换分区从系统磁盘上移开,从而使系统运行速度更快。另外,如果使用多个交换空间,请将其使用优先级调整为相同的值,因此使用循环写入它们,从而可以进一步提高速度。

p.s。我会使用UUID代替设备名称,因为如果偶然将USB存储设备留在USB插槽中并只需拔下并重新插入sata电缆,就可以轻松更改设备顺序-您无需担心什么驱动器连接在哪里。

评论


这是最有用的响应,因为它不需要重新分区驱动器。太糟糕了,当您在新计算机上安装Ubuntu时,默认情况下它不会创建交换!

–Ernie
15年2月27日在17:34

#7 楼

(将sdax中的“ x”替换为交换分区号,例如:sda5)

将“ xxx”替换为UUID号,例如:67682d1b-a1d8-4377-a3dd-67340c141619)


su(提供密码以获取root权限)

blkid / dev / sdax(获取UUID)
mkswap / dev / sdax(格式交换分区)
交换-U xxx

nano / etc / fstab(编辑fstab)
UUID = xxx none swap sw 0 0(输入并保存此文本以使交换永久化)
(然后关闭fsantab)


nano /etc/initramfs-tools/conf.d/resume(创建“恢复”文件并保存此文本以使用休眠/恢复)
RESUME = UUID = xxx(ctrl + x关闭nano)->(y保存)

重新启动计算机

登录,现在您可以测试休眠/恢复了

#8 楼

这是一个有关如何为Ubuntu制作Ram Drive的综合教程。
..不幸的是..屏幕截图并未通过剪切和粘贴显示。.
稍​​后我将添加它们,但它们不是

您需要做的第一件事是为ram驱动器创建空间。
我有一个只有32GB硬盘驱动器的双启动系统。我的Ubuntu实际上安装在SD卡上(是的,是实际安装,而不是Live Casper)。我的交换也位于SD上,可能很快就会用完。我查看了如何更改交换,并找到了这篇文章,但不喜欢答案,因此在进行更改时我编写了一个教程。

如果您只是想增加或减少Swap分区,则可以只需要通过您喜欢的分区管理器来增加或减少分区。 Ubuntu已经知道要去哪里并且它不受大小限制。
如果要更改位置或进行新的Swap,请继续阅读。
您需要做的第一件事是收缩硬盘。为交换提供空间。如果要收缩装有Windows系统的磁盘,则最好使用Windows收缩磁盘(它知道它自己的东西)。如果您使用的是纯Ubuntu,请尝试使用实时Ubuntu USB调整大小。

Windows调整大小说明:


备份系统,并整理驱动器碎片。 br />右键单击开始栏。
选择磁盘管理
右键单击正确的驱动器
选择收缩。
输入正确的数量。

如果您使用的是Ubuntu。确保使用Ubuntu工具。
要完成分配,我将使用Ubuntu的可引导Live USB,其中包括GParted。无论出于任何原因,Live USB都是使用Gparted的最佳方式,您应该在首次安装时就拥有USB或随身携带以方便使用。

不允许在2000年键入内容,因为即使我对驱动器进行了碎片整理,也没有足够的空间进行操作(我不相信Windows会对它进行了碎片整理)。经过一些试验,我被允许1000。然后我又尝试了1000,它奏效了。我应该感谢我的小学数学老师比MS Windows程序员更多的感谢。剩下的1.95gb足够我的小学数学学习了。

格式化分区

现在我已经准备好让gparted将该空间格式化为适当的交换驱动器。
如果您使用的是Windows,并且在Ubuntu和Windows之间来回切换,请确保在单击“电源”和“关闭”时按住SHIFT键。这是非常重要的,尤其是当您弄混另一个操作系统中的“ C”驱动器详细信息时。如果您是双启动,则应该已经知道Windows在正常情况下会进行伪关闭。有些人禁用了“快速启动”。我的系统(Windows 10)上没有该选择,必须使用Shift键,这要感谢我的朋友Google。如果使用活动USB引导,并且无法安装“ C”驱动器(单击该驱动器),则说明未完全完全关闭。重新加载Windows并使用Shift键再次关闭。

现在您处于Ubuntu Live模式,请阅读以下内容:


如果您是纯Ubuntu,并且在Windows中不会缩小。您将在gParted中使用“调整大小”选项。如果已经收缩驱动器,请不要执行调整大小步骤。您可以在Dash栏中输入GParted并快速获取应用程序。右键单击要调整大小的驱动器。


现在我们将未分配的空间格式化为分区驱动器:

之前:

我不知道该怎么做,所以我看了我以前在SD上的Ram Drive。它的格式为Linux交换。因此,我格式化了新的分配格式,最近我也将其压缩为Linux Swap。
我对主分区和警告通知说“确定”,它可以正常工作!


格式化分区


格式化和新分区后
巧合的是,sd上的旧交换分区被称为mmblk1p5,而新的交换分区也被称为p5,前面是mmblk0。您的可能是p6或p7。不用担心。

mmblk0是物理磁盘,p是该物理磁盘上的分区。 mmblk01是另一个物理磁盘,等等(这是我的SD)。
在进行其他工作之前,我再次打开Windows以确保Windows仍然可以启动。如果您懒惰或在纯ubuntu机器上,则无需执行此步骤。如果它破坏了Windows,我可能会擦拭Windows在该磁盘上重新安装Ubuntu(也要进行交换)。如果我破坏了系统,则无需执行任何其他步骤,因为我可以在新安装中分配交换空间。一切顺利,Windows启动。现在,您可以在Windows磁盘管理器中看到新分区:(右键单击开始栏以获取磁盘管理)

现在将Swap附加到启动例程中。

上一个该问题的答案实际上具有不需要/可能很复杂的交换/关闭命令。所有需要做的就是找到正确的文件,然后将交换指向新分区。
再次,如果只调整分区的大小,则无需执行任何操作。已经设置找到分区。大小会自动完成。

如果您更改分区或进行首次交换,请阅读以下内容:

让我告诉你,这是第一次我正在做这个。我不是UNIX极客,我更喜欢GUI工具。在编写本教程时,我正在学习并且用手指交叉。到目前为止一切进展顺利。
在系统的根目录下有一个名为etc的目录。该目录内有一个名为fstab的文件(无扩展名)。您将需要使用超级用户“ su”权限编辑该文件。在此之前,我们需要使用实时USB创建的新交换分区的UUID。
键入sudo su
现在您处于超级用户模式。您可以做任何事情(包括擦除自己的存在)。

键入blkid,然后查找新交换分区的uuid。我在下面看到了我的并突出显示了它:

不要关注PartUID的内容。

现在,其他人会说:

sudo gedit /etc/fstab


但是,我尝试了一下,但找不到正确的文件(请发表评论)。

因此,我只是键入gedit并以奇妙的GUI方式打开它(成功!)。从那时起,我已经处于超级用户模式(sudo su),我具有root权限,可以在Gedit中执行任何操作,包括在更改文件后保存文件。精彩!在更改或破坏任何内容之前,请将fstab保存为名为fstab.bak的备份。

通过使用简便的GUI方式进行备份,然后选择熟悉的“另存为”并将“ bak”添加到文件fstab.bak。检查它是否以.bak扩展名存在。极客会告诉您使用terminal cp命令,但是我们新手无法在terminal中找到该文件,因此无法做到这一点。就像任何文字处理程序一样,在“另存为”命令之后,您当前的文件现在是fstab.bak。打开之前的真实文件,然后关闭备份文件。
再次检查以查看您正在编辑的真实Q4312079q没有扩展名。如果您编辑备份文件,则重新启动时不会发生任何事情,而且备份副本也不会是原始文件的真实备份。<​​br />
我的原始fstab文件如下所示:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/mmcblk1p6 during installation
UUID=a611601a-6ea8-4e34-9859-42a2470cac29 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/mmcblk0p1 during installation
UUID=00F2-C0CE  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/mmcblk1p5 during installation
UUID=8fb20159-62e4-41a3-8550-791c7a66c328 none            swap    sw              0       0


最后一行(我为您准备了红色)具有原始交换信息,该交换信息可能在启动时使用。从上一个blkid命令中,我可以看到新的驱动器UUID。通过突出显示终端中的文本,然后右键单击并选择复制来复制该短语。将该短语粘贴到没有fstab权限的另一个单独的编辑器中作为便笺簿(您可以使用Libre Office,而极客可以使用su)。此步骤可帮助您轻松地获得正确的文本而不带引号,因此您可以轻松地将其粘贴到nano文件中。您希望尽可能少地更改此文件。

New UUID
UUID="709ea197-e6fb-428b-9c1f-4b258452b10c"


因此,我的新UUID上面以红色列出。我需要做的就是更改交换的uuid。如果没有交换驱动器,请在上面的fstab文件中复制我的行,然后从前面的blkid命令添加适当的uuid。 (请选择正确的uuid!)
如果这是您的第一条Swap行,请确保包含完整行以及其他内容

none            swap    sw              0       0


不要

我太担心确切的间距了。

我的新文件看起来像这样:注意我也在更改上方添加了一个注释
fstab字符表示这是一个注释。

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/mmcblk1p6 during installation
UUID=a611601a-6ea8-4e34-9859-42a2470cac29 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/mmcblk0p1 during installation
UUID=00F2-C0CE  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/mmcblk1p5 during installation  NOW changed to mmcblk0p5
UUID= 709ea197-e6fb-428b-9c1f-4b258452b10c  none            swap    sw              0       0


请勿粘贴引号。 #符号后不能有空格。

保存您的文件。

再次打开它,以确保您的更改已保存。
以危险的=权限关闭gedit和终端,极客会责骂您进行操作(因为它操作起来很容易,而且也很容易破坏东西)。

重新引导,然后用手指交叉!

我重新启动,然后检查了一下通过查看系统性能应用程序来查看我的交换是否正常。
我还有交换驱动器!但这是新的还是旧的?我无法验证我的新驱动器是否已实际加载,因为新驱动器的大小与旧驱动器的大小相同。因此,我键入:su(不要输入任何超过交换的内容,它只会为您列出交换内容:安全)。现在,我在swapon上看到了我的新驱动器,它与我在mmblk0p5上所做的UUID工作相匹配。我超薄的32gb主驱动器生效了:


这是一个以前从未做过的新手用户总结的本教程。我制作本教程的一半原因是,帮助我们(并感谢您)的极客可以看到如何帮助新手用户。我怀疑以前的答案会误导我,因此决定在工作时进行教程...通过从其他有用的答案中猜测,我得出的结论是,我所要做的就是编辑fstab文件并重新启动。一切正常,我仍然有Windows 10,尚未擦除系统。如果有人知道如何将Windows fstab共享为Linux交换文件,我会很感兴趣,因为Windows占用了2 gb,而我的32 GB机器上的hd空间非常昂贵。

#9 楼

如果安装了新的空磁盘,则需要在其上创建交换分区。



显示分区:

$ sudo fdisk -l <​​br / >
磁盘/ dev / sdb:4.1 GiB,4420796416字节,8634368扇区
单位:1 * 512的扇区= 512字节
扇区大小(逻辑/物理):512字节/ 512字节I / O大小(最小/最佳):512字节/ 512字节


创建交换分区:

$ sudo fdisk / dev / sdb

欢迎使用fdisk(util-linux 2.31.1)。
更改将仅保留在内存中,直到您决定将其写入为止。
在使用write命令之前要小心。

设备不包含可识别的分区表。
创建一个新的DOS磁盘标签,磁盘标识符为0xbf65f113。

命令(m表示帮助):m

帮助:

DOS(MBR)
a切换可启动标志
b编辑嵌套的BSD disklabel
c切换dos兼容性标志

通用
d删除分区
F列表可用的未分区空间
l列出已知的分区类型
n添加新分区
p打印分区表
t更改分区类型
v验证分区表
i打印有关分区的信息

其他
m打印此菜单
u更改显示/输入单位
x附加功能(仅限专家)

脚本
我从sfdisk脚本文件加载磁盘布局
O转储磁盘布局到sfdisk脚本文件

保存并退出
w将表写入磁盘并退出
q退出而不保存更改

创建新标签
g创建新的空GPT分区表
G创建新的空SGI(IRIX)分区表< br o创建一个新的空DOS分区表
s创建一个新的空Sun分区表

命令(m以获取帮助):n
分区类型
p主要(0个主要,0个扩展,4个免费)
e扩展的(逻辑分区的容器)
选择(默认p):p
分区号(1-4,默认1):
第一个扇区(2048-8634367,默认2048):
最后一个扇区,+扇区或+ size {K,M,G,T,P}(2048-8634367,默认8634367):

创建了类型为'Linux'的新分区1,大小为4.1 GiB。

命令(m以寻求帮助):t
所选分区1
十六进制代码(键入L以列出所有代码):L

0空24 NEC DOS 81 Minix /旧Lin bf Solaris
1 FAT12 27隐藏的NTFS Win 82 Linux swap / So c1 DRDOS / sec(FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS / sec(FAT-
3 XENIX usr 3c PartitionMagic 84 OS / 2隐藏或c6 DRDOS / sec(FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux扩展c7 Syrinx
5扩展41 PPC PReP引导86 NTFS卷集da非FS数据
6 FAT16 42 SFS 87 NTFS卷集db CP / M / CTOS /。
7 HPFS / NTFS / exFAT 4d QNX4.x 88 Linux明文de Dell Utility
8 AIX 4e QNX4.x第二部分8e Linux LVM df BootIt
9 AIX可启动4f QNX4.x第三部分93 Amoeba e1 DOS访问权限
OS / 2引导管理器50 OnTrack DM 94 Amoeba BBT e3 DOS R / O
b W95 FAT32 51 OnTrack DM6辅助9f BSD / OS e4 SpeedStor
c W95 FAT32(LBA)52 CP / M a0 IBM Thinkpad高清晰度Rufus对齐方式
e W95 FAT16(LBA)53 OnTrack DM6辅助a5 FreeBSD eb BeOS fs
f W95扩展(LBA)54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI(FAT-12 / 16 /
11隐藏FAT12 56金弓a8达尔文UFS f0 Linux / PA-RISC b
12 Compaq诊断5c Priam Edisk a9 NetBSD f1 SpeedStor
14隐藏的FAT16 <3 61 SpeedStor ab Darwin启动f4 SpeedStor
16隐藏的FAT16 63 GNU HURD或Sys af HFS / HFS + f2 DOS二级
17隐藏的HPFS / NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST SmartSleep 65 Novell Netware b8 BSDI交换fc VMware VMKCORE
1b隐藏的W95 FAT3 70 DiskSecure Mult bb引导向导隐藏的fd Linux raid auto
1c隐藏的W95 FAT3 75 PC / IX bc Acronis FAT32 L fe LANstep
1e隐藏的W95 FAT1 80 Old Minix被Solaris引导ff BBT
十六进制代码(键入L以列出所有代码):82
将分区'Linux'的类型更改为'Linux swap / Solaris'。

命令(寻求帮助的m ):m

帮助:

DOS(MBR)
a切换可启动标志
b编辑嵌套的BSD disklabel
c切换dos兼容性标志

通用
d删除分区
F列出可用的未分区空间
l列出已知的分区类型
n添加新分区
> p打印分区表
t chang ea分区类型
v验证分区表
我打印有关分区的信息

其他
m打印此菜单
u更改显示/输入单位
x额外功能(仅适用于专家)

脚本
我将磁盘布局从sfdisk脚本文件加载
O转储磁盘布局到sfdisk脚本文件

保存并退出
w将表写入磁盘并退出
q退出而不保存更改

创建新标签
g创建新的空GPT分区表
G创建一个新的空SGI(IRIX)分区表
o创建一个新的空DOS分区表
s创建一个新的空Sun分区表

命令(寻求帮助的m ):w
分区表已更改。
调用ioctl()重新读取分区表。
同步磁盘。


进行分区。交换:

$ sudo mkswap / dev / sdb1
设置交换空间版本1,大小= 4.1 GiB(4419743744字节)
没有标签,UUID = e2c53e87-c32c-4230-8405-25b471af6524


使用创建时打开交换分区:

sudo swapon -U e2c53e87-c32c-4230-8405-25b471af6524


永久进行交换:

sudo nano / etc / fstab


在下面添加行并保存文件。

UUID=e2c53e87-c32c-4230-8405-25b471af6524 none  swap    0




检查交换

sudo free -m
可用的总计可用共享buff /缓存
内存:1993 203 1271 6 518 1635
交换:4214 0 4214


完成。