Instal Ubuntu dari Linux / LiveCD lain

Artikel ini akan fokus pada penginstalan Ubuntu dari Linux lain tanpa menggunakan image ISO. Ini diperlukan terutama untuk membuat lingkungan pengujian yang disesuaikan. Ada cukup informasi tentang prosedur semacam itu di Internet, itu mudah dicari di Google, tetapi, ternyata, pada beberapa titik, instruksi yang ada sudah ketinggalan zaman, ya, dan semuanya memiliki kesalahan fatal yang diketahui.





Jadi, pernyataan masalahnya: ada mesin virtual telanjang dengan akses Internet dan EFI BIOS, ada beberapa Linux (dalam kasus kami adalah SystemRescue LiveCD ), Anda perlu menginstal Ubuntu. Dan semua tindakan harus mudah diotomatiskan sehingga dapat dijalankan dalam bentuk skrip.





Pertama-tama, kami boot ke SysRCD kami. Kami akan bekerja melalui SSH, dan agar dapat berfungsi, Anda perlu mengatur kata sandi root dan mengaktifkan SSH di iptables (awalnya, koneksi masuk apa pun dilarang di SysRCD):





iptables -I INPUT -p tcp --dport 22 -j ACCEPT
passwd
      
      



Dan kami terhubung melalui SSH:





ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@192.168.56.110
      
      



Sekarang Anda perlu menyiapkan partisi di hard drive Anda. Karena sistem kami adalah EFI, tabel partisi akan menjadi GPT, kami memerlukan partisi EFI FAT, dan sistem itu sendiri akan berada di partisi ext4. Partisi EFI bisa sangat kecil - secara harfiah 10 MB, tetapi untuk operasi pembaruan sistem yang stabil, lebih baik membuatnya setidaknya 32 MB. Dan catatan penting! Semua instruksi mengatakan bahwa partisi harus dalam format FAT32, tetapi dalam praktiknya VirtualBox menolak untuk bekerja dengan partisi EFI kecil dalam format ini (baik, atau mkfs.vfat tidak memformat partisi FAT32 kecil dengan benar - percobaan diperlukan di sini)! Plus, ada perbedaan dengan ukuran disk, ukuran cluster, dan kompatibilitas EFI BIOS. Oleh karena itu, kami akan memformatnya dalam FAT16. Kami akan berpisah menggunakan parted.

Untuk menandai partisi sebagai layanan EFI di parted, ia perlu menyetel flag "esp".





parted
unit KiB
mktable gpt
mkpart fat16 1024KiB 32MiB
name 1 EFI  
set 1 esp on
mkpart ext4 32MiB -1s
  - .
name 2 LINUX
quit
      
      



. , EFI- FAT16, VirtualBox.





# VirtualBox EFI      FAT32!  FAT16.
mkfs.fat -F 16 -n EFI /dev/sda1
mkfs.ext4 -O ^64bit -L LINUX /dev/sda2
      
      



debootstrap. DEB- . Debian DEB- . LiveCD . DEB- AR, "tar.gz".





mkdir /tmp/1
cd /tmp/1
wget http://ftp.ru.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.123_all.deb
#   -    deb-    .
ar -p *.deb data.tar.gz | tar -xz -C /
      
      



Ubuntu 20.04 "Focal" - deboostrap. , .





, , - . "/tmp/".





mkdir /tmp/newroot
cd /tmp
mount -o relatime /dev/sda2 newroot
/usr/sbin/debootstrap --arch=amd64 --include=wget,nano focal /tmp/newroot https://mirror.linux-ia64.org/ubuntu/
      
      



, . /etc/apt/sources.list





( RELEASE=focal ; echo "
deb http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE} main restricted
# deb-src http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE} main restricted
deb http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE}-updates main restricted
# deb-src http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE}-updates main restricted
deb http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE} universe
# deb-src http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE} universe
deb http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE}-updates universe
# deb-src http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE}-updates universe
deb http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE} multiverse
# deb-src http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE} multiverse
deb http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE}-updates multiverse
# deb-src http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE}-updates multiverse
deb http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE}-backports main restricted universe multiverse
# deb-src http://ru.archive.ubuntu.com/ubuntu/ ${RELEASE}-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu ${RELEASE} partner
# deb-src http://archive.canonical.com/ubuntu ${RELEASE} partner
deb http://security.ubuntu.com/ubuntu focal-security main restricted
# deb-src http://security.ubuntu.com/ubuntu ${RELEASE}-security main restricted
deb http://security.ubuntu.com/ubuntu ${RELEASE}-security universe
# deb-src http://security.ubuntu.com/ubuntu ${RELEASE}-security universe
deb http://security.ubuntu.com/ubuntu ${RELEASE}-security multiverse
# deb-src http://security.ubuntu.com/ubuntu ${RELEASE}-security multiverse
" >newroot/etc/apt/sources.list )
      
      



chroot- :





mount --bind /dev newroot/dev
mount --bind /dev/pts newroot/dev/pts 
mount -t sysfs sys newroot/sys 
mount -t proc proc newroot/proc
LANG=C.UTF-8 chroot newroot
      
      



. , CP866 ( "IBM866"), windows-legacy .





/etc/locale.gen , CP866/IBM866 - , .





locale-gen en_US.UTF-8
echo "
en_GB ISO-8859-1
en_GB.UTF-8 UTF-8
en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU.CP1251 CP1251
ru_RU.IBM866 IBM866
ru_RU.KOI8-R KOI8-R
ru_RU.UTF-8 UTF-8
" >/etc/locale.gen
#      .
locale-gen
      
      



mc, aptitude, .





apt-get update
apt-get upgrade
apt-get install -y aptitude mc man
#    .
apt-get install -y language-pack-en
      
      



EFI /boot/efi. /etc/fstab.





echo "
 <file system>                           <mount point>          <type>  <options>                    <dump> <pass>
# / was on /dev/sda2 during installation
UUID=`blkid -o value -s UUID /dev/sda2`   /                      ext4    errors=remount-ro,relatime      0     2
# /boot/efi was on /dev/sda1 during installation
UUID=`blkid -o value -s UUID /dev/sda1`   /boot/efi              vfat    umask=0033                      0     1
" >/etc/fstab
#  EFI-.
mount /boot/efi
      
      



.





echo '
LANG="C"
LANGUAGE="en_US:C:ru_RU"
LC_CTYPE="ru_RU.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
' >/etc/default/locale
      
      



. "dpkg-reconfigure tzdata". , . "timedatectl list-timezones".





ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
echo "Europe/Moscow" >/etc/timezone
echo "test" >etc/hostname
#     :
timedatectl set-timezone "Europe/Moscow" 
#     timedatectl list-timezones
      
      



, UTC. , "0" UTC.





timedatectl set-local-rtc 0
      
      



, . :





apt-get install -y linux-image-virtual-hwe-20.04-edge linux-image-extra-virtual-hwe-20.04-edge linux-headers-virtual-hwe-20.04-edge
      
      



, , GRUB, SSH :





apt-get install -y console-setup console-common ssh
apt-get install -y net-tools bind9utils build-essential pixz pigz pv htop
apt-get install -y grub-efi-amd64
      
      



:





# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="us,ru"
XKBVARIANT=","
XKBOPTIONS="grp:rctrl_toggle,lv3:ralt_switch,grp_led:scroll"
BACKSPACE="guess"
' >/etc/default/keyboard

echo '
# CONFIGURATION FILE FOR SETUPCON
# Consult the console-setup(5) manual page.
ACTIVE_CONSOLES="/dev/tty[1-6]"
CHARMAP="UTF-8"
CODESET="guess"
FONTFACE="Terminus"
FONTSIZE="8x16"
VIDEOMODE=
" >/etc/default/console-setup
      
      



:

dpkg-reconfigure console-common

dpkg-reconfigure console-data

dpkg-reconfigure keyboard-configuration





GRUB EFI-:





grub-install --target=x86_64-efi --recheck --efi-directory=/boot/efi /dev/sda
      
      



, GRUB /etc/default/grub GRUB :





update-grub2
      
      



, :





update-initramfs -u
      
      



root root SSH . , SSH-.

SSH- /etc/ssh/sshd_config :

PermitRootLogin yes

root .





#   root
passwd
echo "PermitRootLogin yes" >>/etc/ssh/sshd_config
      
      



#   
echo "test1">/etc/hostname
      
      



. netplan networkd. MAC- . , DHCP ( NET- ). , IPv6 "link-local: [ ]" .





echo "
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      match:
        macaddress: 08:00:27:2e:69:24
      addresses:
        - 192.168.56.10/24
      gateway4: 192.168.56.1
" >/etc/netplan/eth0.yaml

echo "
network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      match:
        macaddress: 08:00:27:e4:46:31
      # Let's disable IPV6 for this interface.
      link-local: [ ] 
      dhcp4: yes
" >/etc/netplan/eth1.yaml
      
      



:





adduser user
usermod -G 'adm,dialout,sudo,cdrom,dip,plugdev,users' user
      
      



apt:





apt-get clean
      
      



! .





VirtualBox, , "Guest Additions CD Image" - :





sudo mkdir /cdrom
sudo mount -o loop,ro /dev/cdrom /cdrom
sudo /cdrom/VBoxLinuxAdditions.run
sudo umount /cdrom
      
      



Itu saja. Selanjutnya, Anda perlu terhubung melalui SSH dan mengisi kunci pengguna SSH. Kemudian hapus pengaturan " PermitRootLogin yes " dari / etc / ssh / sshd_config .





Jika ada yang tertarik, gambar Ubuntu 20.04 ini membutuhkan ruang disk 2,2 GB.








All Articles