V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
hiplon
V2EX  ›  Linux

从现有 Linux 系统上安装 Gentoo [云环境无 VNC]

  •  1
     
  •   hiplon ·
    kunlunh · 2023-11-03 23:28:44 +08:00 · 1438 次点击
    这是一个创建于 415 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基本思路和以前发过的从现有 Linux 系统上安装 Archlinux[云环境无 VNC] 差不多,主要就是在现有系统上先挂载 stage3,然后将磁盘挂在载第一层 chroot 下的/mnt/gentoo ,然后通过删除原系统、安装新 stage3 的方式实现。

    Install Gentoo ON Exsit Linux without VNC

    NO WARRANTY!!! BACKUP ALL YOUR DATA BEFORE OPERATING!

    Operating the following In the Exsiting Linux Distribution

    # Download and move the Gentoo stage3 tar package to /tmp (Exsiting Linux Distribution).
    root@ali:/tmp/stage3# cp /root/stage3-amd64-systemd-20231029T164701Z.tar.xz .
    
    # Unzip the Gentoo stage3 tar package.
    root@ali:/tmp/stage3# tar -xf stage3-amd64-systemd-20231029T164701Z.tar.xz 
    root@ali:/tmp/stage3# ls
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  stage3-amd64-systemd-20231029T164701Z.tar.xz  sys  tmp  usr  var
    root@ali:/tmp/stage3# rm stage3-amd64-systemd-20231029T164701Z.tar.xz 
    root@ali:/tmp/stage3# ls
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  sys  tmp  usr  var
    root@ali:/tmp/stage3# cd ..
    root@ali:/tmp# ls
    # Editing the make file (Actually it can be done later)
    root@ali:/tmp/stage3# vim etc/portage/make.conf 
    # Editing the repos file (Actually it can be done later)
    root@ali:/tmp/stage3# vim etc/portage/repos.conf/gentoo.conf
    root@ali:/tmp/stage3# cp /etc/resolv.conf etc/.
    
    # Mount Dynamic links for the system
    root@ali:/tmp/stage3# mount --types proc /proc /tmp/stage3/proc
    root@ali:/tmp/stage3# mount --rbind /sys /tmp/stage3/sys
    root@ali:/tmp/stage3# mount --make-rslave /tmp/stage3/sys
    root@ali:/tmp/stage3# mount --rbind /dev /tmp/stage3/dev
    root@ali:/tmp/stage3# mount --make-rslave /tmp/stage3/dev
    root@ali:/tmp/stage3# mount --bind /run /tmp/stage3/run
    root@ali:/tmp/stage3# mount --make-slave /tmp/stage3/run
    root@ali:/tmp/stage3# test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
    root@ali:/tmp/stage3# mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
    root@ali:/tmp/stage3# chmod 1777 /dev/shm /run/shm
    root@ali:/tmp/stage3# 
    
    
    # Now mount to the /tmp Gentoo system
    root@ali:/tmp# mount --bind /tmp/stage3/ /tmp/stage3/
    root@ali:/tmp# 
    root@ali:/tmp# vim /tmp/stage3/^C
    root@ali:/tmp# chroot /tmp/stage3/
    ali / # 
    # export for easily oberve
    ali / # export PS1='root@gentoo-chroot-1 #'
    root@gentoo-chroot-1 #
    
    

    Operating the following In 1st chroot environment

    ali / # export PS1='root@gentoo-chroot-1 # '
    root@gentoo-chroot-1 #env-update 
    !!! Section 'gentoo' in repos.conf has location attribute set to nonexistent directory: '/var/db/repos/gentoo'
    !!! Invalid Repository Location (not a dir): '/var/db/repos/gentoo'
    >>> Regenerating /etc/ld.so.cache...
    root@gentoo-chroot-1 # mkdir /var/db/repos/gento
    root@gentoo-chroot-1 #env-update 
    
    root@gentoo-chroot-1 # lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    loop0    7:0    0  61.9M  1 loop 
    loop1    7:1    0  63.5M  1 loop 
    loop2    7:2    0 111.9M  1 loop 
    loop3    7:3    0  79.9M  1 loop 
    loop4    7:4    0  40.9M  1 loop 
    vda    252:0    0    40G  0 disk 
    ├─vda1 252:1    0     1M  0 part 
    ├─vda2 252:2    0   200M  0 part 
    └─vda3 252:3    0  39.8G  0 part 
    
    # Mount the hard disk according to your actual environment
    root@gentoo-chroot-1 # mount /dev/vda3 /mnt/gentoo
    mount: /mnt/gentoo: mount point does not exist.
           dmesg(1) may have more information after failed mount system call.
    

    ! Mount the disk to /mnt/gentoo

    Actually, From the step, you can follow the Gentoo's Handbook to install the System !

    root@gentoo-chroot-1 # mkdir /mnt/gentoo
    root@gentoo-chroot-1 # mount /dev/vda3 /mnt/gentoo
    
    root@gentoo-chroot-1 # mount /dev/vda2 /mnt/gentoo/boot/efi
    root@gentoo-chroot-1 # lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    loop0    7:0    0  61.9M  1 loop 
    loop1    7:1    0  63.5M  1 loop 
    loop2    7:2    0 111.9M  1 loop 
    loop3    7:3    0  79.9M  1 loop 
    loop4    7:4    0  40.9M  1 loop 
    vda    252:0    0    40G  0 disk 
    ├─vda1 252:1    0     1M  0 part 
    ├─vda2 252:2    0   200M  0 part /mnt/gentoo/boot/efi
    └─vda3 252:3    0  39.8G  0 part /mnt/gentoo
    root@gentoo-chroot-1 #
    root@gentoo-chroot-1 # ls /mnt/gentoo/
    bin  boot  dev  etc  home  lib  lib32  lib64  libx32  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var
    root@gentoo-chroot-1 # 
    root@gentoo-chroot-1 # 
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  stage3-amd64-systemd-20231029T164701Z.tar.xz  sys  tmp  usr  var
    
    root@gentoo-chroot-1 # cd /mnt/gentoo/
    
    # Copy the stage file to /mnt/gentoo (will be the new system's root)
    
    root@gentoo-chroot-1 # cp root/stage3-amd64-systemd-20231029T164701Z.tar.xz  .
    root@gentoo-chroot-1 # pwd
    /mnt/gentoo
    root@gentoo-chroot-1 # ls
    bin   dev  home  lib32  libx32      media  opt   root  sbin  srv                                           sys  usr
    boot  etc  lib   lib64  lost+found  mnt    proc  run   snap  stage3-amd64-systemd-20231029T164701Z.tar.xz  tmp  var
    root@gentoo-chroot-1 # 
    
    root@gentoo-chroot-1 # pwd
    /mnt/gentoo
    root@gentoo-chroot-1 # 
    
    # Delete the existing linux distribution, NOT ALL DIRs.
    root@gentoo-chroot-1 # rm -rf bin home etc lib  lib64 opt root sbin srv usr var
    root@gentoo-chroot-1 # ls
    boot  dev  lib32  libx32  lost+found  media  mnt  proc  run  snap  stage3-amd64-systemd-20231029T164701Z.tar.xz  sys  tmp
    root@gentoo-chroot-1 # rm lib32 libx32
    root@gentoo-chroot-1 # ls
    boot  dev  lost+found  media  mnt  proc  run  snap  stage3-amd64-systemd-20231029T164701Z.tar.xz  sys  tmp
    
    # Unzip the stage3 as the new system NOW!
    root@gentoo-chroot-1 # tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
    
    root@gentoo-chroot-1 # ls
    bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  snap  stage3-amd64-systemd-20231029T164701Z.tar.xz  sys  tmp  usr  var
    root@gentoo-chroot-1 # 
    
    # Copy the Configurations or Editing it as you like Now.
    root@gentoo-chroot-1 # cp /etc/portage/make.conf /mnt/gentoo/etc/portage/make.conf
    root@gentoo-chroot-1 # mkdir --parents /mnt/gentoo/etc/portage/repos.conf
    root@gentoo-chroot-1 # cp /etc/portage/repos.conf/gentoo.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
    root@gentoo-chroot-1 # cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
    
    root@gentoo-chroot-1 # cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
    root@gentoo-chroot-1 # mount --types proc /proc /mnt/gentoo/proc
    root@gentoo-chroot-1 # mount --rbind /sys /mnt/gentoo/sys
    root@gentoo-chroot-1 # mount --make-rslave /mnt/gentoo/sys
    root@gentoo-chroot-1 # mount --rbind /dev /mnt/gentoo/dev
    root@gentoo-chroot-1 # mount --make-rslave /mnt/gentoo/dev
    root@gentoo-chroot-1 # mount --bind /run /mnt/gentoo/run
    root@gentoo-chroot-1 # mount --make-slave /mnt/gentoo/run
    root@gentoo-chroot-1 # test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
    root@gentoo-chroot-1 # mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
    root@gentoo-chroot-1 # chmod 1777 /dev/shm /run/shm
    root@gentoo-chroot-1 # 
    

    Now CAN chroot to the New Gentoo System !

    chroot /mnt/gentoo/ /bin/bash  
    source /etc/profile  
    ali / # eselect profile list
    
    ali / # emerge -auvDN --with-bdeps=y @world
    
     * IMPORTANT: 10 news items need reading for repository 'gentoo'.
     * Use eselect news read to view new items.
    
    Total: 16 packages (3 upgrades, 3 new, 10 reinstalls), Size of downloads: 31022 KiB
    
    Would you like to merge these packages? [Yes/No] Yes
    
    ali / # echo "Hongkong" >/etc/timezone
    ali / # emerge --config sys-libs/timezone-data
    
    
    Configuring pkg...
    
     * Found a regular file at /etc/localtime.
     * Some software may expect a symlink instead.
     * You may convert it to a symlink by removing the file and running:
     *   emerge --config sys-libs/timezone-data
     * Copying /usr/share/zoneinfo/Hongkong to /etc/localtime.
    
    ali / # echo "en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8" >> /etc/locale.gen
    ali / # locale-gen
     * Generating 3 locales (this might take a while) with 2 jobs
     *  (1/3) Generating en_US.UTF-8 ...                                                                                                                        [ ok ]
     *  (2/3) Generating zh_CN.UTF-8 ...                                                                                                                        [ ok ]
     *  (3/3) Generating UTF-8 ...                                                                                                                              [ ok ]
     * Generation complete
     * Adding locales to archive ...                                                                                                                            [ ok ]
    ali / # 
    ali / # eselect locale list
    Available targets for the LANG variable:
      [1]   C
      [2]   C.utf8
      [3]   POSIX
      [4]   en_US.utf8
      [5]   zh_CN.utf8
      [6]   C.UTF8 *
      [ ]   (free form)
    ali / # es
    esac     eselect  
    ali / # eselect locale set 4
    Setting LANG to en_US.utf8 ...
    Run ". /etc/profile" to update the variable in your shell.
    ali / # 
    
    ali / # env-update && source /etc/profile
    >>> Regenerating /etc/ld.so.cache...
    ali / # emerge --ask sys-kernel/gentoo-kernel-bin  
    ali / # emerge --depclean
    ali / # emerge --ask vim genfstab
    ali ~ # genfstab -U /  > /etc/fstab
    
    # Remember to edit the network setting!
    ali ~ # vim /etc/systemd/network/20-wired.network
    
    # Install the Grub for booting systems !
    ali ~ # emerge --ask --verbose sys-boot/grub
    ali ~ # grub-install --target=x86_64-efi --efi-directory=/boot/efi
    
    ali ~ # grub-install --target=x86_64-efi --efi-directory=/boot/efi
    Installing for x86_64-efi platform.
    Installation finished. No error reported.
    ali ~ # grub-mkconfig -o /boot/grub/grub.cf^C
    ali ~ # ls /boot/efi/
    EFI  NvVars
    ali ~ # grub-mkconfig -o /boot/grub/grub.cfg
    
    
    # Enable DHCP and sshd
    ali ~ # systemd-machine-id-setup
    ali ~ # systemctl enable systemd-networkd
    ali ~ # systemctl enable sshd
    
    
    ali ~/.ssh # reboot
    ali ~/.ssh # Connection closing...Socket close.
    

    After rebooting the system, expectedly can boot the the New Gentoo System!

    Connection established.
    To escape to local shell, press 'Ctrl+Alt+]'.
    
    WARNING! The remote SSH server rejected X11 forwarding request.
    gentoo ~ # ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host noprefixroute 
           valid_lft forever preferred_lft forever
    2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:16:3e:01:b8:12 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
    
    gentoo ~ # emerge neofetch
    
    gentoo ~ # neofetch
             -/oyddmdhs+:.                root@gentoo 
         -odNMMMMMMMMNNmhy+-`             ----------- 
       -yNMMMMMMMMMMMNNNmmdhy+-           OS: Gentoo Linux x86_64 
     `omMMMMMMMMMMMMNmdmmmmddhhy/`        Host: Alibaba Cloud ECS pc-i440fx-2.1 
     omMMMMMMMMMMMNhhyyyohmdddhhhdo`      Kernel: 6.1.57-gentoo-dist 
    .ydMMMMMMMMMMdhs++so/smdddhhhhdm+`    Uptime: 7 mins 
     oyhdmNMMMMMMMNdyooydmddddhhhhyhNd.   Packages: 324 (emerge) 
      :oyhhdNNMMMMMMMNNNmmdddhhhhhyymMh   Shell: bash 5.1.16 
        .:+sydNMMMMMNNNmmmdddhhhhhhmMmy   Resolution: 1024x768 
           /mMMMMMMNNNmmmdddhhhhhmMNhs:   Terminal: /dev/pts/1 
        `oNMMMMMMMNNNmmmddddhhdmMNhs+`    CPU: Intel Xeon Platinum (2) @ 2.500GHz 
      `sNMMMMMMMMNNNmmmdddddmNMmhs/.      GPU: 00:02.0 Cirrus Logic GD 5446 
     /NMMMMMMMMNNNNmmmdddmNMNdso:`        Memory: 89MiB / 1865MiB 
    +MMMMMMMNNNNNmmmmdmNMNdso/-
    yMMNNNNNNNmmmmmNNMmhs+/-`                                     
    /hMMNNNNNNNNMNdhs++/-`                                        
    `/ohdmmddhys+++/:.`
      `-//////:--.
    
    gentoo ~ # 
    
    

    Enjoying Gentoo!

    refer:

    1.Install Gentoo ON Exsit Linux without VNC

    2.Gentoo's Handbook

    3. 从现有 Linux 系统上安装 Archlinux

    4.Quick Gentoo Setup

    4 条回复    2024-01-25 19:15:40 +08:00
    learningman
        1
    learningman  
       2023-11-04 01:23:11 +08:00 via Android
    做一个 rootfs 然后直接 dd 不行吗
    LindsayZhou
        2
    LindsayZhou  
       2023-11-04 12:10:48 +08:00
    你这个把 boot 分区留下来了吧,我一般 Arch 重装用的 https://github.com/felixonmars/vps2arch
    它把 boot 分区也给扬了。
    hiplon
        3
    hiplon  
    OP
       2023-11-04 12:31:39 +08:00
    @LindsayZhou 为 UEFI 留一个引导分区,在第二步的时候删除原 boot 分区内容或者更改分区名字都行,最后都是生成 Gentoo 的引导文件给 grub 用
    mhjyzs
        4
    mhjyzs  
       332 天前
    这样是不是没法更改文件系统?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1194 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:46 · PVG 01:46 · LAX 09:46 · JFK 12:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.