自动化拱门安装

自动化拱门安装

为了减少安装 Arch 的麻烦,我只是将所有常用命令稍微修改一下放在一个文件中,然后放在#!/bin/bash上面。它看起来是这样的:

#!/bin/bash
pacman -Sy reflector --noconfirm
timedatectl set-ntp true

parted --script /dev/sda \
    mklabel msdos \
    mkpart primary ext4 1MiB 10GiB \
    set 1 boot on \
    mkpart primary ext4 10GiB 100%

mkfs.ext4 -F /dev/sda1
mkfs.ext4 -F /dev/sda2
mount /dev/sda1 /mnt

reflector --country Bangladesh --country 'United States' --protocol http --protocol https --sort rate --save /etc/pacman.d/mirrorlist

pacstrap /mnt base
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt

ln -sf /usr/share/zoneinfo/Asia/Dhaka /etc/localtime
hwclock --systohc
sed -i -e 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen
locale-gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
echo 'haque' > /etc/hostname

echo '127.0.0.1 localhost
::1 localhost
127.0.1.1   haque.localdomain   haque' >> /etc/hosts

pacman -S base-devel grub bash-completion sddm plasma-desktop plasma-nm plasma-pa konsole kwrite dolphin breeze-gtk kde-gtk-config falkon sudo --noconfirm

grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

echo '[Theme]
Current=breeze' >> /etc/sddm.conf

sed -i -e 's/# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/g' /etc/sudoers

echo 'Set root password'
passwd

echo 'Set Username'
read name
useradd -m $name
echo "Set password for $name"
passwd $name
usermod -aG wheel,audio,video,optical,storage $name

systemctl enable sddm NetworkManager

echo 'Setup Complete!'
exit

一旦它击中

arch-chroot /mnt 

执行停止!我可以用一个脚本来完成吗?或者我必须将脚本分成两个并使用 中的其余命令执行第二个脚本chroot

答案1

正如建议的比斯瓦普里约,我将脚本分为两部分:script1script2。的内容script1是:

#!/bin/bash
pacman -Sy reflector --noconfirm
timedatectl set-ntp true

parted --script /dev/sda \
    mklabel msdos \
    mkpart primary ext4 1MiB 10GiB \
    set 1 boot on \
    mkpart primary ext4 10GiB 100%

mkfs.ext4 -F /dev/sda1
mkfs.ext4 -F /dev/sda2
mount /dev/sda1 /mnt

reflector --country Bangladesh --country 'United States' --protocol http --protocol https --sort rate --save /etc/pacman.d/mirrorlist

pacstrap /mnt base
genfstab -U /mnt >> /mnt/etc/fstab
cp script2 /mnt/home/
arch-chroot /mnt sh /home/script2

rm /mnt/home/script2
echo 'Setup Complete!'
echo 'type "reboot" and remove installation media.'

相同的script2是:

#!/bin/bash
ln -sf /usr/share/zoneinfo/Asia/Dhaka /etc/localtime
hwclock --systohc
sed -i -e 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen
locale-gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
echo 'haque' > /etc/hostname
echo '127.0.0.1 localhost
::1 localhost
127.0.1.1   haque.localdomain   haque' >> /etc/hosts

pacman -S base-devel grub bash-completion sddm plasma-desktop plasma-nm plasma-pa konsole kwrite dolphin breeze-gtk kde-gtk-config falkon --noconfirm

grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

echo '[Theme]
Current=breeze' >> /etc/sddm.conf

sed -i -e 's/# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/g' /etc/sudoers

echo 'Set root password'
passwd

read -p "Enter username: " name
useradd -m $name
echo "Set password for $name"
passwd $name

usermod -aG wheel,audio,video,optical,storage $name
systemctl enable sddm NetworkManager

exit 

有了这两个实时 USB,我只需sh script1首先输入,在出现提示时设置 root 密码、用户名和用户密码,最后输入reboot

现在我可以在不到 5 分钟的时间内安装 Arch!

答案2

这是我用来设置的脚本ArchLinux对于虚拟机

我已从 archiso 运行此脚本,并通过更改磁盘的主名称(sda 与 vda)在 qemu-kvm 和 virtualbox 安装中运行。

让我帮您解决一下:

  • 作为故障安全,告诉 bash 在发生错误时退出脚本(set -e)
  • 创建分区表软盘、IBM-DOS分区表下的一个分区
  • 格式化分区并挂载到/mnt/目录下
  • 更新 pacman 的仓库
  • 在 /mnt/ 下安装带有 pacstrap 的 archlinux 库
  • 生成fstab
  • 准备grub.sh。该文件将在 archroot 中安装和设置 grub(旧版)。另外,我创建了一个交换文件用作交换。
  • 将Root更改为/mnt/并运行grub.sh文件。
  • 重启

优点:

  • 超级简单快速
  • 使用 sfdisk (oneline) 准备分区表。
  • 使用 grub.sh 在 arch-root 中运行我们需要的每个命令
  • 自动化!
  • 易于适应和改变。

缺点

  • 没有什么花哨
  • 没有语言设置(默认)
  • 网络应该已经存在
  • 无密码(root/用户)

这个脚本已经自动化了我的构建。然后我通常运行 ansible (配置管理)来设置更复杂的设置。但我需要的是一种超级快速的方式来构建 archlinux,而不需要任何额外的东西。重新启动 -> 登录并修复所有其他问题之后,而不是之前。

#!/usr/bin/bash
set -e

# Archlinux Installation Script for VMs
# ebal, Wed 21 Aug 2019

#Disk=sda # VirtualBox
Disk=vda # Qemu/KVM

echo ',,,*;' | sfdisk /dev/$Disk

mkdir -pv /mnt/$Disk
mkfs.ext4 -v -L rootfs /dev/${Disk}1
mount /dev/${Disk}1 /mnt/$Disk

pacman -Syy

pacstrap /mnt/$Disk base
genfstab -U /mnt/$Disk >> /mnt/$Disk/etc/fstab

# Install Grub
cat > /mnt/$Disk/root/grub.sh <<EOF
pacman -S --noconfirm grub vim
grub-install /dev/$Disk
grub-mkconfig -o /boot/grub/grub.cfg
# Add Swap Partition
dd if=/dev/zero of=/swapfile bs=2048 count=1048576
mkswap /swapfile -L swapfs
chmod 0600 /swapfile
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
EOF

chmod +x /mnt/$Disk/root/grub.sh

arch-chroot /mnt/$Disk/ /root/grub.sh

reboot

希望您会发现它对您有用。

相关内容