Source: https://wiki.archlinux.org/title/Solid_state_drive/Memory_cell_clearing
Make sure SSD is not frozen.
sudo hdparm -I /dev/sdX | grep frozen
Enable security by setting a user password.
sudo hdparm --user-master u --security-set-pass PasSWorD /dev/sdX
Check if it says "enabled".
sudo hdparm -I /dev/sdX
SATA secure erase.
sudo hdparm --user-master u --security-erase PasSWorD /dev/sdX
Check if it says "not enabled".
sudo hdparm -I /dev/sdX
Verify support:
nvme id-ctrl /dev/nvme0 -H | grep -E 'Format |Crypto Erase|Sanitize'
Crypto erase:
nvme sanitize /dev/nvme0 -a start-crypto-erase
Block erase (optional):
nvme sanitize /dev/nvme0 -a start-block-erase
Open.
sudo cryptsetup open --type plain -d /dev/urandom /dev/sdX to_be_wiped
Verify existence.
lsblk
Write all.
sudo dd if=/dev/zero of=/dev/mapper/to_be_wiped status=progress
Close.
sudo cryptsetup close to_be_wiped
Create.
sudo gdisk /dev/nvme0n1n<default>(1)<default>(e.g.2048)+500Mef00wY
Format.
sudo mkfs.fat -F32 /dev/nvme0n1p1
Create.
sudo gdisk /dev/nvme0n1n<default>(2)<default>(e.g.1026048)+867G8309wY
To the end of the drive.
Run powercfg -h off in an administrator command prompt.
cryptsetup luksFormat --pbkdf pbkdf2 /dev/nvme0n1pX(remove pbkdf downgrade once https://savannah.gnu.org/bugs/?59409 is resolved)cryptsetup open /dev/nvme0n1pX cryptlvmpvcreate /dev/mapper/cryptlvmvgcreate VolGrp /dev/mapper/cryptlvmlvcreate -L 250G VolGrp -n rootlvcreate -L 250G VolGrp -n homelvcreate -l 100%FREE VolGrp -n datamkfs.ext4 /dev/VolGrp/rootmkfs.ext4 /dev/VolGrp/homemkfs.ext4 /dev/VolGrp/datamkswap /dev/VolGrp/swapmount /dev/VolGrp/root /mntmkdir /mnt/homemount /dev/VolGrp/home /mnt/homeswapon /dev/VolGrp/swapmkdir /mnt/efimount /dev/nvme0n1p1 /mnt/efi
loadkeys de-latin1cat /sys/firmware/efi/fw_platform_sizeshould return64- connect to the internet
iwctlstation liststation wlan0 get-networksstation wlan0 connect <SSID_NAME>- input password and exit (ctrl+c)
ping archlinux.orgtimedatectlshould return correct timeecho "Server = https://archive.archlinux.org/repos/2024/06/28/$repo/os/$arch" > /etc/pacman.d/mirrorlistpacstrap /mnt base base-devel efibootmgr git gnome grub intel-ucode linux linux-firmware lvm2 networkmanager ntfs-3g os-prober rsync vim zshmv /mnt/etc/fstab /mnt/etc/fstab.origgenfstab -U /mnt >> /mnt/etc/fstabarch-chroot /mntsystemctl enable gdmsystemctl enable NetworkManagersystemctl enable bluetoothln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtimehwclock --systohcvim /etc/locale.gen, uncomment en_US.UTF-8locale-genvim /etc/locale.conf, setLANG=en_US.UTF-8vim /etc/vconsole.conf, setKEYMAP=de-latin1vim /etc/hostname, set hostname
-
vim /etc/mkinitcpio.conf, setHOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt lvm2 filesystems fsck) -
passwd, set root password -
useradd -U -G users,wheel -m -s /bin/zsh jonas(keep/bin/bashif you don't have a.zshrcat hand) -
visudo, uncomment the first%wheelline -
mkdir -m 700 /etc/cryptsetup-keys.d -
dd bs=512 count=4 if=/dev/random of=/etc/cryptsetup-keys.d/cryptlvm.key iflag=fullblock -
chmod 600 /etc/cryptsetup-keys.d/cryptlvm.key -
cryptsetup -v luksAddKey /dev/sda3 /etc/cryptsetup-keys.d/cryptlvm.key -
add
/etc/cryptsetup-keys.d/cryptlvm.keyto/etc/mkinitcpio.conf -
mkinitcpio -P -
vim /etc/default/grub- to
GRUB_CMDLINE_LINUXaddcryptdevice=UUID=<device-UUID>:cryptlvm cryptkey=rootfs:/etc/cryptsetup-keys.d/cryptlvm.key, - to
GRUB_CMDLINE_LINUX_DEFAULTaddresume=/dev/VolGrp/swap, - to
GRUB_PRELOAD_MODULESaddlvm, - set
GRUB_DISABLE_OS_PROBER=falseand - set
GRUB_ENABLE_CRYPTODISK=y
- to
-
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --recheck -
grub-mkconfig -o /boot/grub/grub.cfg -
git clone https://aur.archlinux.org/yay.git cd yay makepkg -si -
yay -S oh-my-zsh-git
powercfg -h on, as described above.
- copy:
sudo rsync --acls --archive --checksum --hard-links --numeric-ids --sparse --xattrs --info=progress2 /mnt/data_old/X /mnt/data/ - check:
sudo rsync --acls --archive --checksum --delete --dry-run --hard-links --numeric-ids --sparse --verbose --xattrs /mnt/data_old/X /mnt/data/