init-desk
本文最后更新于145 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
#!/bin/bash
## 2.0 脚本
# 定义目标目录和磁盘
TARGET_DIR="/xhzyadp"
DISK="/dev/vdb"

# 检查是否以root用户运行
if [ "$(id -u)" != "0" ]; then
   echo "错误:此脚本必须以root权限运行!" 
   exit 1
fi

# 1. 检查并安装xfsprogs
if ! command -v mkfs.xfs &> /dev/null; then
    echo "安装xfsprogs工具..."
    if command -v yum &> /dev/null; then
        yum install -y xfsprogs
    elif command -v apt-get &> /dev/null; then
        apt-get update && apt-get install -y xfsprogs
    else
        echo "错误:无法确定包管理器,请手动安装xfsprogs"
        exit 1
    fi
fi

# 2. 创建目标目录
echo "创建目录 ${TARGET_DIR}..."
mkdir -p ${TARGET_DIR} || {
   echo "错误:无法创建目录 ${TARGET_DIR}"
   exit 1
}

# 3. 检查磁盘是否存在
echo "检查磁盘 ${DISK}..."
[ -b ${DISK} ] || {
   echo "错误:磁盘 ${DISK} 不存在!"
   exit 1
}

# 4. 卸载任何现有挂载
echo "检查并卸载现有挂载..."
umount ${TARGET_DIR} 2>/dev/null
umount ${DISK}* 2>/dev/null

# 5. 检查磁盘是否已分区
PARTITION_EXIST=$(lsblk -n ${DISK} 2>/dev/null | grep -c 'part')
if [ ${PARTITION_EXIST} -gt 0 ]; then
   echo "警告:磁盘 ${DISK} 已有分区!"
   read -p "是否继续?这将删除所有现有数据!(y/n) " -n 1 -r
   echo
   if [[ ! $REPLY =~ ^[Yy]$ ]]; then
      exit 1
   fi
   echo "清除现有分区..."
   wipefs -a ${DISK} || {
      echo "错误:清除磁盘失败!"
      exit 1
   }
fi

# 6. 创建MBR分区(使用整个磁盘)
echo "在 ${DISK} 上创建MBR分区..."
parted -s ${DISK} mklabel msdos || {
   echo "错误:创建分区表失败!"
   exit 1
}

parted -s ${DISK} mkpart primary xfs 0% 100% || {
   echo "错误:创建分区失败!"
   exit 1
}

# 7. 刷新分区表
echo "刷新分区表..."
partprobe ${DISK} || {
   echo "警告:partprobe失败,尝试使用blockdev"
   blockdev --rereadpt ${DISK}
}

# 8. 确定分区路径
# 对于NVMe磁盘可能是/dev/vdbp1而不是/dev/vdb1
if [[ ${DISK} =~ "nvme" ]]; then
   PARTITION="${DISK}p1"
else
   PARTITION="${DISK}1"
fi

# 等待分区设备出现
echo "等待分区设备 ${PARTITION}..."
for i in {1..10}; do
   [ -b ${PARTITION} ] && break
   sleep 1
done

[ -b ${PARTITION} ] || {
   echo "错误:分区设备 ${PARTITION} 未出现!"
   exit 1
}

# 9. 格式化分区为XFS
echo "格式化分区 ${PARTITION} 为XFS文件系统..."
mkfs.xfs -f ${PARTITION} || {
   echo "错误:格式化分区失败!"
   echo "可能原因:"
   echo "1. 分区设备不存在"
   echo "2. 磁盘有硬件问题"
   echo "3. 系统资源不足"
   exit 1
}

# 10. 获取UUID
UUID=$(blkid -s UUID -o value ${PARTITION})
[ -z "${UUID}" ] && {
   echo "错误:无法获取分区UUID!"
   exit 1
}
echo "分区UUID: ${UUID}"

# 11. 配置fstab
FSTAB_ENTRY="UUID=${UUID} ${TARGET_DIR} xfs defaults 0 0"
echo "添加fstab条目: ${FSTAB_ENTRY}"

# 检查是否已存在挂载点
grep -q "${TARGET_DIR}" /etc/fstab && {
   echo "警告:/etc/fstab中已存在${TARGET_DIR}的条目"
   sed -i "\|${TARGET_DIR}|d" /etc/fstab
}

echo "${FSTAB_ENTRY}" >> /etc/fstab

# 12. 挂载文件系统
echo "挂载文件系统到 ${TARGET_DIR}..."
mount -a || {
   echo "错误:挂载文件系统失败!"
   exit 1
}

# 13. 验证挂载
MOUNT_RESULT=$(df -hT ${TARGET_DIR} 2>/dev/null)
[ -z "${MOUNT_RESULT}" ] && {
   echo "错误:验证挂载失败!"
   exit 1
}

echo -e "\n操作成功完成!"
echo "文件系统已挂载:"
echo "${MOUNT_RESULT}"
echo "UUID: ${UUID}"
男孩子都是香香软软的小猪
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇