贡献者: addis
sudo dd 是一个很危险的命令,它直接操作硬盘上的任意位置的数据,无论是否被挂载。sudo dd if=/dev/random of=/dev/sda 会把整个硬盘包括分区方式(MBR,GPT)等所有信息抹掉
dd if=/dev/sda of=/data/disk.img bs=446 count=1,还原同理,但还原最好只用 440 字节
dd 把一个硬盘的分区克隆的另一个硬盘的分区后(两个分区大小必须完全相同),再 clone MBR 用 dd if=/dev/sda of=/dev/sdc bs=440 count=1
sudo dd if=/dev/zero of=/dev/sdx bs=440 count=1
Gparted 是一个 GUI 硬盘分区工具,在 Ubuntu live CD 中自带
GParted 使用 e2image -ra -p /dev/sda1 /dev/sdb1 来复制分区,没有数据的部分不会复制,Arch Wiki 中的 disk cloning 文章列出了很多工具。用 e2image 来备份和恢复参考这里。
sda, sdb 等编号是不稳定的,可能重启等操作之后会变
fdisk -l 查看所有挂载的硬盘
lsblk 也可以查看
sudo e2fsck -f test.img 可以检查并自动修复文件系统。
resize2fs -p /dev/sd? ???K 可以改变 ext4 文件系统的大小,Gparted 用的就是这个命令。这个命令需要很长时间。
mklabel 修改分区的 label,ntfslabel /dev/nvme0n1p3 win 改变 ntfs 分区的 label,还有 e2label 用法一样。注意用 gparted 里面的 label 功能似乎并不是真正的 label,/etc/fstab 识别不出后者。用 e2label /dev/sda1 可以查看某个分区的 label。
mkfs.ext4 /dev/sdx1 或者 mke4fs -t ext4 /dev/sdb1 把某个分区格式化为 ext4
extFAT 在 Ubuntu 中并不怎么支持 resize 和移动,还是用 windows 的傲梅比较好
/etc/fstab 用于设置如何把不同的分区或网络硬盘挂载到不同文件夹。
<file system> <mount point> <type> <options> <dump> <pass>
uid=1000,gid=1000 是当前登录用户的 user/group id,也可以直接把数字换成用户名和组名。
NTFS 的设置是 LABEL=mydrive2 /mnt/drive2 ntfs-3g nofail,x-gvfs-show,uid=1000,gid=1000 0 0
LABEL=win /mnt/win ntfs defaults,auto,rw,nofail,umask=000,uid=addis,gid=addis 0 0
exFAT 的设置是 LABEL=mydrive1 /mnt/drive1 exfat nofail,x-gvfs-show,uid=1000,gid=1000 0 0
LABEL= 或者 UUID=,第二列是 mount point,第三列是文件系统,用 auto 可以自动检测。第四列是一些选项,nofail 是即使硬盘没有插入也不会报错,x-gvfs-show 是在 gnome 文件浏览器和 taskbar 中显示。uid 和 gid 是挂载后文件的 owner,1000 是当前用户。auto 是开机的时候自动挂载,umask=000 设置挂在以后所有文件夹和文件都对所有用户有最高权限,注意这个选项一般用于 NTFS 文件系统,linux 原生文件系统用 chmod 即可。
defaults 选项相当于 rw, suid, dev, exec, auto, nouser, async.
rw 是支持读写,suid 支持 SetUID 权限,exec 支持可执行文件。dev 选项可以支持挂载文件夹中的设备文件(block device 和 character device), nodev 则禁止。nouser 只允许管理员挂载或弹出硬盘。user 允许任何用户挂载或弹出硬盘。users 允许任何用户挂载,但只有挂载的用户可以弹出某个硬盘。
user 和 users 自动开启 noexec,除非明确指定 exec 选项。此时即使文件显示有 x 权限也无法执行(但 script 仍然可以用 source 执行)。
sudo mount -a 会挂载 fstab 中的所有硬盘(如果没有已经挂载)。sudo umount -a 同理(如果被占用则不会弹出)。
mount 未必需要 sudo,如果被挂载的目录不需要管理员权限。
sudo mount 挂载目录 可以根据 fstab 中该目录的设置挂载。umount 挂载目录 同理。可以是相对或绝对目录。
umount 就会失败(target is busy)。
sudo dd if=/dev/zero of=/路径/虚拟硬盘名.img bs=1M count=100。其中镜像文件 .img 是不必须的。
sudo mkfs -t ext4 /路径/虚拟硬盘名.img。注意运行完以后,镜像文件会自动缩小的刚好够用,所以第一步中不需要弄太大的文件。
sudo mount -t auto -o loop /路径/虚拟硬盘名.img 挂载目录 其中 -t 是文件系统类型。镜像文件甚至可以存在于 挂载目录 中。但是挂载以后并不能看到该文件。
/路径/虚拟硬盘名.img /挂载目录 ext4 nofail 0 0
df -h 查看文件系统会看到例如 /dev/loop13 488M 24K 452M 1% /mnt/test_dir
resize2fs 虚拟硬盘名.img 1G 可以改变分区大小。
ext4 系统中 du 镜像文件,那么 resize 后所占硬盘空间仍然会是刚好够用。这只是 ext4 特有的优化,实际上文件的大小的确是 resize2fs 的目标大小(可以用 stat 文件 确认)。如果把这个文件移动到比如说 exFat 文件系统中,那么占用空间就会变成后者的大小。
可以把多个物理硬盘融合为一个逻辑硬盘,见 Logical Volume Management(LVM)笔记。
grub-customizer, 可以设置 grub 菜单,记住上次的选择,检测新系统,等。
os-prober 也可以发现新系统并加入 grub 菜单(会被 grub-customizer 使用)
/boot/grub/grub.cfg,GPT 的在 /boot/efi/EFI/ubuntu/grub.cfg
lilo 是一个可以安装 generic windows boot loader on MBR 的命令
sda, sdb 等在 grub2 命令行里面的 ls 名字叫做 hd1, hd2...
sudo grub-install /dev/sd# 可以在某个硬盘中安装 grub (注意如果硬盘只有一个分区的话,分区名和硬盘名相同,安装可能就会出错)
grub-install 可能使用 grub-pc 包也可能使用 grub-efi-amd64 包。前者给 MBR 硬盘安装,后者给 GPT 硬盘安装。它们可以同时安装。
failed to get canonical path of... 就用 sudo grub-install /dev/sdX --root-directory=/mnt/[mount point directory]
will not proceed with blocklist,就在安装命令后面加 --force。
df 只会显示已挂载的硬盘,而 fdisk 或者 disk, gparted 软件才会显示所有连接的硬盘
sudo dd bs=4M if=/path/to/ISOfile of=/dev/sda status=progress oflag=sync 注意 sda 后面不能有数字! 这样 dd 会把整个硬盘克隆成 iso 的内容而无视之前的任何 partition table 和分区。此时 u 盘和光盘完全等效,都是只读的(亲测成功).
/boot/grub/grub.cfg 或者 grub.config 定义的
sudo grub-install ... 在新硬盘上面安装 grub(如果说什么不推荐用啥不稳定的,就在后面加 --force). 然后再把原来的 grub.cfg 拷贝到新硬盘就好了(不确定新安装 grub 会不会把 cfg 重置).
blkid 可以查看所有分区的 uuid
tune2fs -U random /dev/sdb? , disk 中会看到变化,如果 blkid 看见 uuid 没有变化,就 mount 再 umount 即可刷新
fdisk 也可以改变 uuid, sudo fdisk /dev/sd? 然后按 x 再按 i 即可
/etc/default/grub 文件中设置 GRUB_DEFAULT=saved(GRUB_DEFAULT=0 设置第一个操作系统)还需要在下面加一行 GRUB_SAVEDEFAULT=true。保存了以后运行命令 sudo update-grub 即可。
以下步骤亲测成功。
dd 命令备份并拷贝 MBR
grub-install /dev/sd? 重新安装 grub,确认目标硬盘中 /boot/grub/grub.cfg 配置文件中所有 UUID 都是新分区的 UUID 而不是老的。如果是老的就全部替换。
sudo add-apt-repository universe
sudo apt update
sudo apt install exfat-fuse exfat-utils
sudo apt-get install smartmontools,然后 sudo smartctl -i /dev/sdX 查看是否开启了 smart,sudo smartctl -a /dev/sdX 查看具体 smart 信息。
Unknown USB bridge,加一个选项即可,如 sudo smartctl -d sat -a /dev/sdX(如果硬盘使用 sata 接口)。
sudo smartctl -t short /dev/sdX 可以做一个简短自测,
sudo smartctl -t long /dev/sdX 做一个长自测
VALUE 是当前的归一化的分数,0-100,100 是最佳,越低越差。WORST 是历史出现过的最低分。THRESH 是阈值,若分数低于阈值就是出问题了。
TYPE 是每一行的类型,Pre-fail 就是如果低于阈值随时可能会挂,Old_age 就是如果低于阈值就说明设计的使用寿命到了,会增加故障的风险。
 
 
 
 
 
 
 
 
 
 
 
友情链接: 超理论坛 | ©小时科技 保留一切权利