]> gitweb.morketsmerke.org Git - greenOS.git/commitdiff
Dalszy rozwój instalatora dla greenOS main
authorxf0r3m <jakubstasinski@protonmail.com>
Sat, 9 Sep 2023 17:06:34 +0000 (19:06 +0200)
committerxf0r3m <jakubstasinski@protonmail.com>
Sat, 9 Sep 2023 17:06:34 +0000 (19:06 +0200)
installation_greenOS2.txt

index 4d8ffbbc35f744d17c82c559bf70688a08016c36..7203158436e50e2e6ab55b2d3ec4d98a9605f38d 100644 (file)
-1. Wybór dysku:
-       $(lsblk | grep 'disk' | awk '{printf $1" "}')
-       disk=(dysk np. sda)
-2. Określenie trybu instalacji:
-       ( [ -d /sys/firmware/efivars ] || $(sudo efibootmgr > /dev/null 2>&1))
-       # a = BIOS
+# 1. Wybór dysku:
+       diskList=$(lsblk | grep 'disk' | awk '{printf $1" "}');
+       select target in $diskList; do disk=$target; break; done
+# 2. Określenie trybu instalacji:
+       [ -d /sys/firmware/efivars ] || $(sudo efibootmgr > /dev/null 2>&1)
+       # Jeśli powyższy warunek jest prawdziwy to:
+               mode='efi'
        # b = EFI
-3. Sposób partycjonowania:
-       ( [auto] || manual )
+       # W przeciwnym wypadku:
+               mode='bios'
+       # a = BIOS
+# 3. Sposób partycjonowania:
+       while true; do
+               select scheme in 'auto' 'manual'; do partScheme=$scheme; break; done
        # c = auto
        # d = manual
-4ac. Partycjonowanie automatyczne:
-       4ac.1. Wyzerowanie pierwszego megabajtu dysku:
-               ( dd if=/dev/zero bs=1M of=/dev/$disk count=1 )
-       4ac.2. Określenie tablicy partycji:
+               [ "$partScheme" = "manual" ]
+               # Jeśli tak to:
+                       break;
+# 4c. Partycjonowanie automatyczne:
+       # 4c.1. Wyzerowanie pierwszego megabajtu dysku:
+               dd if=/dev/zero bs=1M of=/dev/$disk count=1 
+       # 4c.2. Określenie tablicy partycji:
                disksize=$(lsblk | grep "$disk" | awk '{printf $4}');
                $(echo $diskSize | grep -Eq "T$|P$")
-               Jeśli tak to:
+               Jeśli tak to:
                        diskSize=$(echo $diskSize | grep -o '[0-9]\.[0-9]' | sed 's/\.//')
                        [ $diskSize -gt $(echo "1.8" | sed 's/\.//') ]
-                       Jeśli tak: to diskScheme="gpt";
-                                       # e = GPT
-                       jeśli nie: to diskScheme="msdos";
-                                       # f = MSDOS
-               jeśli nie to:
-                       diskScheme="msdos";
+                       # Jeśli tak to:
+                               diskScheme="gpt";
+                       # e = GPT
+                       # Jeśli nie to:
+                               diskScheme="msdos";
+                       # f = MSDOS
+               # Jeśli nie to:
+                       # To jeśli flaga 'mode' jest ustawiona i posiada wartość 'efi' to:
+                               diskScheme="gpt";
+                       # W przeciwnym wypadku: 
+                               diskScheme="msdos";
                        # f = MSDOS
-       4acf.3. Utworzenie odpowiedniej tablicy partycji:
+       # 4c.3. Utworzenie odpowiedniej tablicy partycji:
                parted /dev/${disk} mklabel $diskScheme
-       4acf.4. Partycjonowanie:
-               4acf.4.1. Zapytanie czy rootfs ma być szyfrowany?
-                       ( yes || [no] )
-                               # g = encypted
-                               # h = non-encrypted
-               #Tryb h:
-                       4acfh.4.2. Utworzenie partycji przestrzeni wymiany:
+       # 4c.4. Partycjonowanie:
+               # 4c.4.1. Zapytanie czy rootfs ma być szyfrowany?
+                       select yesno in 'yes' 'no'; do encrypt=$yesno; break; done
+                       # g = encypted
+                       # h = non-encrypted
+               [ "$diskScheme" = "msdos" ]
+               # Jeśli tak to:
+                       # 4cfh.4.2. Utworzenie partycji przestrzeni wymiany:
                                parted /dev/${disk} mkpart primary 1 1G
-                               swapPart="${disk}1"
-                       4acfh.4.3. Utworzenie partycji dla rootfs:
+                       # 4cfh.4.3. Utworzenie partycji dla rootfs:
                                parted /dev/${disk} mkpart primary 1G 100%Free
-                               rootfsPart="${disk}2"
-                       4acfh.4.4. Wyświetlenie tablicy partycji:
+                       # 4cfh.4.4. Ustawienie flagi partycji rozruchowej:
+                               parted /dev/${disk} set 2 boot on;
+               # Jeśli nie to:
+                       [ "$encrypt" = "no" ]
+                       # Jeśli tak to:
+                               [ "$mode" = "efi" ]
+                               # Jeśli tak to:
+                                       # 4bceh.4.2. Utworzenie partycji partycji rozruchowej EFI:
+                                               parted /dev/${disk} mkpart primary EFI 1 512M
+                                       # 4bceh.4.3. Utworzenie partycji przestrzeni wymiany:
+                                               parted /dev/${disk} mkpart primary swap 512M 1G
+                                       # 4bceh.4.4. Utworzenie partycji dla rootfs:
+                                               parted /dev/${disk} mkpart primary rootfs 1G 100%Free
+                                       # 4bceh.4.5. Ustawienie odpowiedniej flagi dla partycji EFI:
+                                               parted /dev/${disk} set 1 esp on;
+                               # Jeśli nie to:
+                                       # 4aceh.4.2. Utworzenie partycji przestrzeni wymiany:
+                                               parted /dev/${disk} mkpart primary swap 1 1G
+                                       # 4aceh.4.3. Utworzenie partycji dla rootfs:
+                                               parted /dev/${disk} mkpart primary rootfs 1G 100%Free
+                       # Jeśli nie to:
+                       # 4ceg.4.2. Utworzenie partycji dla jądra
+                               parted /dev/${disk} mkpart primary boot 1 1G
+                       # 4ceg.4.2. Utworzenie partycji LUKS dla LVM
+                               parted /dev/${disk} mkpart primary luks 1G 100%Free
+               
+               [ "$encrypt" = "no" ]
+               # Jeśli tak to:
+               # Tryb h:
+                       [ "$mode" = "efi" ]
+                       # Jeśli tak to:
+                               efiPart="${disk}1";
+                               swapPart="${disk}2";
+                               rootfsPart="${disk}3";
+                       # Jeśli nie to:
+                               swapPart="${disk}1";
+                               rootfsPart="${disk}2";
+                       # 4ac.4.4. Wyświetlenie tablicy partycji:
                                parted /dev/${disk} print
-                       4acfh.4.5. Zapytanie czy taki układ partycji odpowiada użytkownikowi:
-                               ( [yes] || no )
-                               Jeśli tak to:
-                               4acfh.4.5.1. Ustawienie flagi partycji rozruchowej:
-                                       parted /dev/vda set 2 boot on
-                               Jeśli nie to idz do: 3
-                       4acfh.4.6. Instalacja systemu plików:
-                               4acfh.4.6.1. Instalacja systemu plików rootfs:
-                                       mkfs.ext4 /dev/${rootfsPart}
-                               4acfh.4.6.2. Instalacja instalacja przetrzenii wymiany na partycji:
-                                       mkswap /dev/${swapPart}
-               #Tryb g (dodać pakiet: lvm2 do obrazu płyty):
-                       4acfg.4.2. Utworzenie partycji dla jądra
-                               parted /dev/${disk} mkpart primary 1 1G
-                               bootPart="${disk}1"
-                       4acfg.4.2. Utworzenie partycji LUKS dla LVM
-                               parted /dev/${disk} mkpart primary 1G 100%Free
-                               luksPart="${disk}2"
-                       4acfg.4.3. Zainstalowanie luks2 na utworzonym wcześniej dysku (dodać pakiet: cryptsetup do obrazu płyty)
+                       # 4ac.4.5. Zapytanie czy taki układ partycji odpowiada użytkownikowi:
+                               select yesno in 'yes' 'no'; do partsAreOk=$yesno; break; done
+                               [ "$partsAreOk" = "yes" ]
+                               # Jeśli tak to:
+                                       break;
+                               # Jeśli nie to:
+                               # Wróć do 3
+                                       continue;
+               # W przeciwnym wypadku
+               # Tryb g:
+                       bootPart="${disk}1"
+                       [ "$mode" = "efi" ]
+                       #Jesli tak to:
+                               efiPart=$bootPart;
+                       luksPart="${disk}2"
+                       # 4cg.4.3. Zainstalowanie luks2 na utworzonym wcześniej dysku:
                                cryptsetup -y -v luksFormat --type luks2 /dev/${luksPart}
-                       4acfg.4.4. Odblokowanie partycji LUKS
+                       # 4cg.4.4. Odblokowanie partycji LUKS
                                crypsetup open /dev/${luksPart} luksPart
-                       4acfg.4.5. Utworzenie z partycji LUKS woluminu fizycznego LVM
+                       # 4cg.4.5. Utworzenie z partycji LUKS woluminu fizycznego LVM
                                pvcreate /dev/mapper/luksPart
-                       4acfg.4.6. Utworzenie na podstawie woluminu fizycznego grupy woluminów
+                       # 4cg.4.6. Utworzenie na podstawie woluminu fizycznego grupy woluminów
                                vgcreate luks_vg-gOS /dev/mapper/luksPart
-                       4acfg.4.7. Wydobycie ilości dostępnych PE w grupie woluminów
+                       # 4cg.4.7. Utworzenie woluminu logicznego ze swapem.
+                               lvcreate -L 1G -n swap luks_vg-gOS
+                       # 4cg.4.8. Wydobycie ilości dostępnych PE w grupie woluminów
                                freePE=$(vgdisplay luks_vg-gOS | grep 'Free  PE' | awk '{printf $5}')
-5. Montowanie systemów plików:
-       5.1. Montowanie głównego systemu plików:
+                       # 4cg.4.9. Utworzenie woluminu logicznego ze rootfs.
+                               lvcreate -l $freePE -n rootfs luks_vg-gOS
+                       rootPart="luks_vg-gOS/rootfs"
+                       swapPart="luks_vg-gOS/swap"
+# 4d. Partycjonowanie ręczne
+       # 4d.1. Wyzerowanie pierwszego megabajtu dysku:
+               dd if=/dev/zero bs=1M of=/dev/$disk count=1
+       # 4d.2. Wyświetlenie informacji o wymaganych partycjach
+       # 4d.3. Uruchomienie programu partcjonującego
+               fdisk /dev/$disk
+       # 4d.4. Przypisanie punktów montowania do utworzonych partycji:
+               while true; do
+               partList=$(lsblk | grep 'part' | awk '{print $1}' | grep '[a-z]*[0-9]*' | awk '{printf $1" "}')
+               select partition in $partList; do
+                       echo -n "Mount point for $partition: ";
+                       read mountPoint;
+                       partitionList="$partitionList ${partition}=${mountPoint}";
+               done
+       # 4d.5. Wyświetlenie zdefiniowanych przez użytkowwnika przypisań:
+               for partMP in partitionList; do
+                       echo "/dev/${partMP}" | sed 's,=,:\ ,g'
+               done
+       # 4d.6. Zapytanie czy przypisania są w porządku
+               select yesno in 'yes' 'no'; do assignsAreOk=$yesno; done
+               [ "$assignsAreOk" = "yes" ]
+               # Jeśli tak to:
+                       break;
+               # Jeśli nie to:
+                       continue;
+       # 4d.7. Określenie urządzenia dla partycji katalogu głównego:
+               rootfsPart=$(echo $partitionList | grep -Eo "${disk}[0-9]\=\/ |${disk}[0-9]\=\/$" | cut -d "=" -f1)
+       # 4d.8. Określenie urządzenia dla przetrzeni wymiany:
+               swapPart=$(echo $partitionList | grep -o "${disk}[0-9]\=swap" | cut -d "=" -f1) 
+5. Instalacja systemu plików:
+       5.1. Instalacja systemu plików rootfs:
+               mkfs.ext4 /dev/${rootfsPart}
+       [ "$mode" = "efi" ]
+       # Jeśli tak to:
+               5.2bgh. Instalacja odpowiedniego systemu plików dla partycji EFI:      
+               mkfs.fat -F 32 /dev/${efiPart};
+       # Jeśli nie to:
+               5.2ag. Instalacja odpowiedniego systemu plików dla partycji /boot:
+               mkfs.ext4 /dev/${bootPart};     
+       5.2d. Instalacja systemu plików na pozostałych partycjach:
+               partitionList=$(echo $partitionList | sed -e "s/${disk}[0-9]=\/\ //g" -e "s/${disk}[0-9]=\/$//g"
+               partitionList=$(echo $partitionList | sed -e "s/${disk}[0-9]=swap\ //g" -e "s/${disk}[0-9]=swap$//g"
+               for partMP in $partitionList; do
+                       device=$(echo $partMP | cut -d "=" -f1)
+                       mkfs.ext4 /dev/${device}
+               done
+6. Montowanie systemów plików:
+       6.1. Montowanie głównego systemu plików:
                mount /dev/${rootPart} /mnt
-       5d...   
+       6.2. Montowanie partycji wewnątrz katalogu głównego:
+               6.2.1abgh. Utworzenie punktu montowania partycji boot wewnątrz partycji rootfs:
+                       mkdir /mnt/boot
+               6.2.2d. Tworzenie punktów montowania dla innych partycji wewnątrz rootfs:
+                       partitionList=$(echo $partitionList | sed -e "s/${disk}[0-9]=/boot\ //g" -e "s/${disk}[0-9]=/boot$//g"
+                       for partMP in $partitionList; do
+                               mountPoint=$(echo $partMP | cut -d "=" -f2)
+                               mkdir /mnt/${mountPoint}
+                       done    
+               6.2.2abgh. Podmontowanie partycji boot wewnątrz rootfs:
+                       mount /dev/${bootPart} /mnt/boot