由于几天前我切换到 Linux,我尝试配置我的机器。最后一件事是:我有一个带有 16GB DDR2 Ram 的物理 RAM 驱动器。此设备安装为真正的物理 SATA 硬盘。通常,它连接到外部电源,以便它将保存信息直到下次启动计算机。
现在我想将其连接到内部 PSU 以节省一些能源。如果机器启动,则 RAM 驱动器是空的且未格式化。在 fstab 发生之前,如何在启动过程中对其进行格式化?
我正在使用 elementaryOS。我知道有启动脚本的位置,但我不知道如何编写自己的“auto-partition-Hyperdrive”脚本。这样的脚本应该放在 fstab 发生之前的某个位置,这样我就可以将 /tmp 挂载到 RAM 驱动器。
有人能帮助我吗?
最佳马丁
答案1
花了很长时间才找到解决方案。我不确定这是否是一种合适且方便的方法,但对我来说它有效。
以下脚本将执行自动格式化和安装操作:
#!/bin/bash
# search the device name 'ANS9010_22222222' and construct the path to it
DEV='/dev/'$( lsblk -n -o name,MODEL | grep ANS | cut -f 1 -d ' ' )
echo $DEV # this schould give something like /dev/sda
# This is now specific to the device
# set the disc label
parted -s $DEV mklabel msdos
# make the partition
parted -s $DEV unit kB mkpart primary 34 100%
# now we have to work with the 1st partition e.g. /dev/sda1
# so we must generate a $DEVP variable
# finally initialize the filesystem and give it a name
DEVP=$DEV'1'
mkfs.ext3 -L HYPERDRIVE $DEVP
# mount it via a 3 way change of dirs
echo '+++ make-dirs +++'
# make a temporary dir for the hyperdrive and mount it to that
mkdir /tmp_hyp
echo '+++ mount +++'
mount /dev/sda1 /tmp_hyp
# move everything to /tmp_hyp
echo '+++ move +++'
mv -f /tmp/* /tmp_hyp
# unmount, clean and remount as /tmp
echo '+++ umount +++'
umount /tmp_hyp
rmdir /tmp_hyp
echo '+++ remount /tmp +++'
mount -t ext3 -o defaults $DEVP /tmp
# !! very important !! change permissions to tms's defaults
chmod 0777 /tmp
有了这些,我们必须实现在启动期间执行此脚本。由于通过 rc.locale 的方法仍然很棘手,因此在“/etc/crontab”中添加一行可以解决这个问题:
# m h dom mon dow user command
... ... ... ... ... ... ...
@reboot root /usr/local/etc/auto-format-hyperdrive.sh
这里最重要的是“root”用户和“@reboot”,它告诉 cron 在每次重新启动时以 root 身份执行脚本。“TaTahha”,这对我来说很有效。