miamondo

LFS_1.sh

Feb 13th, 2021 (edited)
195
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2.  
  3. # Copyright © 2021 Miamondo <https://miamondo.org/contact/>
  4. # This program is free software: you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License as published by
  6. # the Free Software Foundation, either version 3 of the License, or
  7. # any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. # GNU General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU General Public License
  15. # along with this program.  If not, see <http://www.gnu.org/licenses/>
  16. #
  17. # ______________________________________________________________________________
  18.  
  19. # Nom du script: LFS_1.sh
  20. # Auteur: Benoît Boudaud <https://miamondo.org/contact/>
  21. #
  22. # Placez ce script dans votre répertoire utilisateur.
  23. #
  24. # Première partie du programme d'installation de Linux From Scratch.
  25. # ATTENTION! Ce script s'exécute en root.
  26.  
  27. # === Chapitre n°1 : Choix du disque à partitionner ============================
  28.  
  29. lsblk
  30. echo "Quel disque voulez-vous partitionner?"
  31. echo "(exemple: /dev/sda, /dev/sdb, /dev/sdc etc...) : "
  32. read disk
  33. echo "Vous avez choisi de partitionner le disque $disk"
  34.  
  35. # utilitaire de partitionnement
  36. cfdisk $disk
  37.  
  38. # === Chapitre n°2 : Formatage des partitions ==================================
  39.  
  40. # Formatage
  41. mkfs.ext4 $disk"1"
  42. mkswap $disk"2"
  43. mkfs.ext4 $disk"3"
  44.  
  45. # Label de la première partition
  46. e2label $disk"1" LFS
  47.  
  48. # Répertoire de travail
  49. echo "Choisissez un nom pour le répertoire qui deviendra la racine du système"
  50. echo "lfs est le meilleur choix : "
  51. read rep
  52. LFS=/mnt/$rep
  53. mkdir -p $LFS
  54. mount $disk"1" $LFS
  55. swapon $disk"2"
  56.  
  57. # === Chapitre n°3 : Paquets et correctifs =====================================
  58.  
  59. mkdir $LFS/sources
  60.  
  61. # Droits d'exécution du répertoire $LFS/sources
  62. chmod -v a+wt $LFS/sources
  63. echo "Entrez l'adresse de téléchargement des sources :"
  64. read tar_sources # Par défaut : "http://ftp.wrz.de/pub/LFS/lfs-packages/10.0/"
  65. wget --input-file="$tar_sources" --continue --directory-prefix=$LFS/sources
  66. pushd $LFS/sources
  67. md5sum -c md5sums
  68. popd
  69.  
  70. # Création de différents répertoires nécessaires à la construction
  71. mkdir -p $LFS/{bin,etc,lib,sbin,usr,var,tools}
  72. if [ "`uname -m`" = "x86_64" ]
  73. then
  74.     mkdir -p $LFS/lib64    # Architecture 64-bit
  75. fi
  76.  
  77. # === Chapitre n°4 : Préparations finales ======================================
  78.  
  79. # Création profil utilisateur + groupe
  80.  
  81. echo "Choisissez un nom d'utilisateur pour votre nouveau système :"
  82. read user
  83. groupadd $user
  84. useradd -s /bin/bash -g $user -m -k /dev/null $user
  85. passwd $user
  86. usermod -a -G wheel $user # Ajout nouvel utilisateur au groupe wheel
  87.  
  88. # Définition du propriétaire pour les répertoires ci-dessous
  89. chown -R $user $LFS/{usr,lib,var,etc,bin,sbin,tools,sources}
  90. if [ "`uname -m`" = "x86_64" ]
  91. then
  92.     chown -R $user $LFS/lib64
  93. fi
  94.  
  95. cp `pwd`/LFS_2.sh /home/$user
  96. chmod +x /home/$user/LFS_2.sh
  97.  
  98. cp `pwd`/LFS_3.sh /home/$user
  99. chmod +x /home/$user/LFS_3.sh
  100.  
  101. # Désactivation de /etc/bash.bashrc
  102. [ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
  103.  
  104. echo "exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash" > \
  105.     /home/$user/.bash_profile
  106.  
  107. {
  108. echo "set +h"
  109. echo "umask 022"
  110. echo "LFS=/mnt/lfs"
  111. echo "LC_ALL=POSIX"
  112. echo "LFS_TGT=$(uname -m)-lfs-linux-gnu"
  113. echo "PATH=/usr/bin"
  114. echo "if [ ! -L /bin ]; then PATH=/bin:$PATH; fi"
  115. echo "PATH=$LFS/tools/bin:$PATH"
  116. echo "export LFS LC_ALL LFS_TGT PATH"
  117. } >> /home/$user/.bashrc
  118.  
  119. chown -R $user /home/$user
  120.  
  121. source /home/$USER/.bash_profile
RAW Paste Data