996 lines
		
	
	
	
		
			32 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			996 lines
		
	
	
	
		
			32 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						||
#-
 | 
						||
# Copyright (c) 2012-2015 Juan Romero Pardines <xtraeme@voidlinux.eu>.
 | 
						||
#               2012 Dave Elusive <davehome@redthumb.info.tm>.
 | 
						||
#				2016 milisarge <milisarge@gmail.com>.
 | 
						||
# All rights reserved.
 | 
						||
#
 | 
						||
# Redistribution and use in source and binary forms, with or without
 | 
						||
# modification, are permitted provided that the following conditions
 | 
						||
# are met:
 | 
						||
# 1. Redistributions of source code must retain the above copyright
 | 
						||
#    notice, this list of conditions and the following disclaimer.
 | 
						||
# 2. Redistributions in binary form must reproduce the above copyright
 | 
						||
#    notice, this list of conditions and the following disclaimer in the
 | 
						||
#    documentation and/or other materials provided with the distribution.
 | 
						||
#
 | 
						||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 | 
						||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 | 
						||
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 | 
						||
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 | 
						||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 | 
						||
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | 
						||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | 
						||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
						||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 | 
						||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
						||
#-
 | 
						||
 | 
						||
# Make sure we don't inherit these from env.
 | 
						||
SOURCE_DONE=
 | 
						||
HOSTNAME_DONE=
 | 
						||
KEYBOARD_DONE=
 | 
						||
LOCALE_DONE=
 | 
						||
TIMEZONE_DONE=
 | 
						||
ROOTPASSWORD_DONE=
 | 
						||
USERNAME_DONE=
 | 
						||
USERPASSWORD_DONE=
 | 
						||
BOOTLOADER_DONE=
 | 
						||
PARTITIONS_DONE=
 | 
						||
NETWORK_DONE=
 | 
						||
FILESYSTEMS_DONE=
 | 
						||
 | 
						||
TARGETDIR=/mnt/hedef
 | 
						||
LOG=/dev/tty8
 | 
						||
CONF_FILE=/tmp/.milis-kur.conf
 | 
						||
if [ ! -f $CONF_FILE ]; then
 | 
						||
    touch -f $CONF_FILE
 | 
						||
fi
 | 
						||
ANSWER=$(mktemp -t miliskur-XXXXXXXX || exit 1)
 | 
						||
TARGET_FSTAB=$(mktemp -t miliskur-fstab-XXXXXXXX || exit 1)
 | 
						||
 | 
						||
trap "DIE" INT TERM QUIT
 | 
						||
 | 
						||
# disable printk
 | 
						||
if [ -w /proc/sys/kernel/printk ]; then
 | 
						||
    echo 0 >/proc/sys/kernel/printk
 | 
						||
fi
 | 
						||
 | 
						||
# Detect if this is an EFI system.
 | 
						||
if [ -e /sys/firmware/efi/systab ]; then
 | 
						||
    EFI_SYSTEM=1
 | 
						||
fi
 | 
						||
 | 
						||
# dialog colors
 | 
						||
BLACK="\Z0"
 | 
						||
RED="\Z1"
 | 
						||
GREEN="\Z2"
 | 
						||
YELLOW="\Z3"
 | 
						||
BLUE="\Z4"
 | 
						||
MAGENTA="\Z5"
 | 
						||
CYAN="\Z6"
 | 
						||
WHITE="\Z7"
 | 
						||
BOLD="\Zb"
 | 
						||
REVERSE="\Zr"
 | 
						||
UNDERLINE="\Zu"
 | 
						||
RESET="\Zn"
 | 
						||
 | 
						||
# Properties shared per widget.
 | 
						||
MENULABEL="${BOLD}Ok tuşlarıyla menüyü gezinme,TAB tuşuyla butonlar arası geçiş,ENTER tuşuyla seçim yapın.${RESET}"
 | 
						||
MENUSIZE="14 60 0"
 | 
						||
INPUTSIZE="8 60"
 | 
						||
MSGBOXSIZE="8 70"
 | 
						||
YESNOSIZE="$INPUTSIZE"
 | 
						||
WIDGET_SIZE="10 70"
 | 
						||
 | 
						||
DIALOG() {
 | 
						||
    rm -f $ANSWER
 | 
						||
    dialog --colors --keep-tite --no-shadow --no-mouse \
 | 
						||
        --backtitle "${BOLD}${WHITE}Milis İşletim Sistemi kurulumu -- Milis 1.0 milisarge@gmail.com ${RESET}" \
 | 
						||
        --cancel-label "Geri" --aspect 20 "$@" 2>$ANSWER
 | 
						||
    return $?
 | 
						||
}
 | 
						||
 | 
						||
DIE() {
 | 
						||
    rval=$1
 | 
						||
    [ -z "$rval" ] && rval=0
 | 
						||
    clear
 | 
						||
    rm -f $ANSWER $TARGET_FSTAB
 | 
						||
    # reenable printk
 | 
						||
    if [ -w /proc/sys/kernel/printk ]; then
 | 
						||
        echo 4 >/proc/sys/kernel/printk
 | 
						||
    fi
 | 
						||
    umount_filesystems
 | 
						||
    exit $rval
 | 
						||
}
 | 
						||
 | 
						||
set_option() {
 | 
						||
    if grep -Eq "^${1}.*" $CONF_FILE; then
 | 
						||
        sed -i -e "/^${1}.*/d" $CONF_FILE
 | 
						||
    fi
 | 
						||
    echo "${1} ${2}" >>$CONF_FILE
 | 
						||
}
 | 
						||
 | 
						||
get_option() {
 | 
						||
    echo $(grep -E "^${1}.*" $CONF_FILE|sed -e "s|${1}||")
 | 
						||
}
 | 
						||
 | 
						||
show_disks() {
 | 
						||
    local dev size sectorsize gbytes
 | 
						||
 | 
						||
    # IDE
 | 
						||
    for dev in $(ls /sys/block|grep -E '^hd'); do
 | 
						||
        if [ "$(cat /sys/block/$dev/device/media)" = "disk" ]; then
 | 
						||
            # Find out nr sectors and bytes per sector;
 | 
						||
            echo "/dev/$dev"
 | 
						||
            size=$(cat /sys/block/$dev/size)
 | 
						||
            sectorsize=$(cat /sys/block/$dev/queue/hw_sector_size)
 | 
						||
            gbytes="$(($size * $sectorsize / 1024 / 1024 / 1024))"
 | 
						||
            echo "size:${gbytes}GB;sector_size:$sectorsize"
 | 
						||
        fi
 | 
						||
    done
 | 
						||
    # SATA/SCSI and Virtual disks (virtio)
 | 
						||
    for dev in $(ls /sys/block|grep -E '^([sv]|xv)d|mmcblk'); do
 | 
						||
        echo "/dev/$dev"
 | 
						||
        size=$(cat /sys/block/$dev/size)
 | 
						||
        sectorsize=$(cat /sys/block/$dev/queue/hw_sector_size)
 | 
						||
        gbytes="$(($size * $sectorsize / 1024 / 1024 / 1024))"
 | 
						||
        echo "size:${gbytes}GB;sector_size:$sectorsize"
 | 
						||
    done
 | 
						||
    # cciss(4) devices
 | 
						||
    for dev in $(ls /dev/cciss 2>/dev/null|grep -E 'c[0-9]d[0-9]$'); do
 | 
						||
        echo "/dev/cciss/$dev"
 | 
						||
        size=$(cat /sys/block/cciss\!$dev/size)
 | 
						||
        sectorsize=$(cat /sys/block/cciss\!$dev/queue/hw_sector_size)
 | 
						||
        gbytes="$(($size * $sectorsize / 1024 / 1024 / 1024))"
 | 
						||
        echo "size:${gbytes}GB;sector_size:$sectorsize"
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
show_partitions() {
 | 
						||
    local dev fstype fssize p part
 | 
						||
 | 
						||
    set -- $(show_disks)
 | 
						||
    while [ $# -ne 0 ]; do
 | 
						||
        disk=$(basename $1)
 | 
						||
        shift 2
 | 
						||
        # ATA/SCSI/SATA
 | 
						||
        for p in /sys/block/$disk/$disk*; do
 | 
						||
            if [ -d $p ]; then
 | 
						||
                part=$(basename $p)
 | 
						||
                fstype=$(lsblk -nfr /dev/$part|awk '{print $2}'|head -1)
 | 
						||
                [ "$fstype" = "iso9660" ] && continue
 | 
						||
                [ "$fstype" = "crypto_LUKS" ] && continue
 | 
						||
                [ "$fstype" = "LVM2_member" ] && continue
 | 
						||
                fssize=$(lsblk -nr /dev/$part|awk '{print $4}'|head -1)
 | 
						||
                echo "/dev/$part"
 | 
						||
                echo "size:${fssize:-unknown};fstype:${fstype:-none}"
 | 
						||
            fi
 | 
						||
        done
 | 
						||
    done
 | 
						||
    # Software raid (md)
 | 
						||
    for p in $(ls -d /dev/md* 2>/dev/null|grep '[0-9]'); do
 | 
						||
        part=$(basename $p)
 | 
						||
        if cat /proc/mdstat|grep -qw $part; then
 | 
						||
            fstype=$(lsblk -nfr /dev/$part|awk '{print $2}')
 | 
						||
            [ "$fstype" = "crypto_LUKS" ] && continue
 | 
						||
            [ "$fstype" = "LVM2_member" ] && continue
 | 
						||
            fssize=$(lsblk -nr /dev/$part|awk '{print $4}')
 | 
						||
            echo "$p"
 | 
						||
            echo "size:${fssize:-unknown};fstype:${fstype:-none}"
 | 
						||
        fi
 | 
						||
    done
 | 
						||
    # cciss(4) devices
 | 
						||
    for part in $(ls /dev/cciss 2>/dev/null|grep -E 'c[0-9]d[0-9]p[0-9]+'); do
 | 
						||
        fstype=$(lsblk -nfr /dev/cciss/$part|awk '{print $2}')
 | 
						||
        [ "$fstype" = "crypto_LUKS" ] && continue
 | 
						||
        [ "$fstype" = "LVM2_member" ] && continue
 | 
						||
        fssize=$(lsblk -nr /dev/cciss/$part|awk '{print $4}')
 | 
						||
        echo "/dev/cciss/$part"
 | 
						||
        echo "size:${fssize:-unknown};fstype:${fstype:-none}"
 | 
						||
    done
 | 
						||
    if [ -e /sbin/lvs ]; then
 | 
						||
        # LVM
 | 
						||
        lvs --noheadings|while read lvname vgname perms size; do
 | 
						||
            echo "/dev/mapper/${vgname}-${lvname}"
 | 
						||
            echo "size:${size};fstype:lvm"
 | 
						||
        done
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
menu_filesystems() {
 | 
						||
    local dev fstype fssize mntpoint reformat
 | 
						||
 | 
						||
    while true; do
 | 
						||
        DIALOG --title " Ayarlamak için bir disk bölümü seçiniz. " --menu "$MENULABEL" \
 | 
						||
            ${MENUSIZE} $(show_partitions)
 | 
						||
        [ $? -ne 0 ] && return
 | 
						||
 | 
						||
        dev=$(cat $ANSWER)
 | 
						||
        DIALOG --title " $dev için bir dosya sistemi seçiniz. " \
 | 
						||
            --menu "$MENULABEL" ${MENUSIZE} \
 | 
						||
            "btrfs" "Oracle's Btrfs" \
 | 
						||
            "ext2" "Linux ext2 (no journaling)" \
 | 
						||
            "ext3" "Linux ext3 (journal)" \
 | 
						||
            "ext4" "Linux ext4 (journal)" \
 | 
						||
            "f2fs" "Flash-Friendly Filesystem" \
 | 
						||
            "swap" "Linux swap" \
 | 
						||
            "vfat" "FAT32" \
 | 
						||
            "xfs" "SGI's XFS"
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            fstype=$(cat $ANSWER)
 | 
						||
        else
 | 
						||
            continue
 | 
						||
        fi
 | 
						||
        if [ "$fstype" != "swap" ]; then
 | 
						||
            DIALOG --inputbox " $dev için bir bağlama noktası seçiniz:" ${INPUTSIZE}
 | 
						||
            if [ $? -eq 0 ]; then
 | 
						||
                mntpoint=$(cat $ANSWER)
 | 
						||
            elif [ $? -eq 1 ]; then
 | 
						||
                continue
 | 
						||
            fi
 | 
						||
        else
 | 
						||
            mntpoint=swap
 | 
						||
        fi
 | 
						||
        DIALOG --yesno " $dev üzerinde yeni bir dosya sistemi oluşturmak istiyor musunuz?" ${YESNOSIZE}
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            reformat=1
 | 
						||
        elif [ $? -eq 1 ]; then
 | 
						||
            reformat=0
 | 
						||
        else
 | 
						||
            continue
 | 
						||
        fi
 | 
						||
        fssize=$(lsblk -nr $dev|awk '{print $4}')
 | 
						||
        set -- "$fstype" "$fssize" "$mntpoint" "$reformat"
 | 
						||
        if [ -n "$1" -a -n "$2" -a -n "$3" -a -n "$4" ]; then
 | 
						||
            local bdev=$(basename $dev)
 | 
						||
            local ddev=$(basename $(dirname $dev))
 | 
						||
            if [ "$ddev" != "dev" ]; then
 | 
						||
                sed -i -e "/^MOUNTPOINT \/dev\/${ddev}\/${bdev}.*/d" $CONF_FILE
 | 
						||
            else
 | 
						||
                sed -i -e "/^MOUNTPOINT \/dev\/${bdev}.*/d" $CONF_FILE
 | 
						||
            fi
 | 
						||
            echo "MOUNTPOINT $dev $1 $2 $3 $4" >>$CONF_FILE
 | 
						||
        fi
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
menu_partitions() {
 | 
						||
    DIALOG --title " Bölümleme yapmak için bir disk seçiniz. " \
 | 
						||
        --menu "$MENULABEL" ${MENUSIZE} $(show_disks)
 | 
						||
    if [ $? -eq 0 ]; then
 | 
						||
        local device=$(cat $ANSWER)
 | 
						||
 | 
						||
        DIALOG --title "Modify Partition Table on $device" --msgbox "\n
 | 
						||
${BOLD}cfdisk will be executed in disk $device.${RESET}\n\n
 | 
						||
For BIOS systems, MBR or GPT partition tables are supported.\n
 | 
						||
To use GPT on PC BIOS systems an empty partition of 1MB must be added\n
 | 
						||
at the first 2GB of the disk with the TOGGLE \`bios_grub' enabled.\n
 | 
						||
${BOLD}NOTE: you don't need this on EFI systems.${RESET}\n\n
 | 
						||
For EFI systems GPT is mandatory and a FAT32 partition with at least\n
 | 
						||
100MB must be created with the TOGGLE \`boot', this will be used as\n
 | 
						||
EFI System Partition. This partition must have mountpoint as \`/boot/efi'.\n\n
 | 
						||
At least 1 partitions is required for the rootfs (/).\n
 | 
						||
For swap, RAM*2 must be really enough. For / 600MB are required.\n\n
 | 
						||
${BOLD}WARNING: /usr is not supported as a separate partition.${RESET}\n
 | 
						||
${RESET}\n" 18 80
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            while true; do
 | 
						||
                clear; cfdisk $device; PARTITIONS_DONE=1
 | 
						||
                break
 | 
						||
            done
 | 
						||
        else
 | 
						||
            return
 | 
						||
        fi
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
menu_keymap() {
 | 
						||
    local _keymaps="$(find /lib/kbd/keymaps/ -type f -iname "*.map.gz" -printf "%f\n" | sed 's|.map.gz||g' | sort)"
 | 
						||
    local _KEYMAPS=
 | 
						||
 | 
						||
    for f in ${_keymaps}; do
 | 
						||
        _KEYMAPS="${_KEYMAPS} ${f} -"
 | 
						||
    done
 | 
						||
    while true; do
 | 
						||
        DIALOG --title " Select your keymap " --menu "$MENULABEL" 14 70 14 ${_KEYMAPS}
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            set_option KEYMAP "$(cat $ANSWER)"
 | 
						||
            loadkeys "$(cat $ANSWER)"
 | 
						||
            KEYBOARD_DONE=1
 | 
						||
            break
 | 
						||
        else
 | 
						||
            return
 | 
						||
        fi
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
set_keymap() {
 | 
						||
    local KEYMAP=$(get_option KEYMAP)
 | 
						||
 | 
						||
    if [ -f /etc/vconsole.conf ]; then
 | 
						||
        sed -i -e "s|KEYMAP=.*|KEYMAP=$KEYMAP|g" $TARGETDIR/etc/vconsole.conf
 | 
						||
    else
 | 
						||
        sed -i -e "s|#\?KEYMAP=.*|KEYMAP=$KEYMAP|g" $TARGETDIR/etc/rc.conf
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
menu_locale() {
 | 
						||
    local _locales="$(locale --all-locales |awk '{print $1}'|sed -e 's/^#//')"
 | 
						||
    local _LOCALES=
 | 
						||
 | 
						||
    for f in ${_locales}; do
 | 
						||
        _LOCALES="${_LOCALES} ${f} -"
 | 
						||
    done
 | 
						||
    while true; do
 | 
						||
        DIALOG --title " yerel bilgi seçimi " --menu "$MENULABEL" 14 70 14 ${_LOCALES}
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            set_option LOCALE "$(cat $ANSWER)"
 | 
						||
            LOCALE_DONE=1
 | 
						||
            break
 | 
						||
        else
 | 
						||
            return
 | 
						||
        fi
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
set_locale() {
 | 
						||
    if [ -f $TARGETDIR/etc/default/libc-locales ]; then
 | 
						||
        #yerelleştirme ayarı yapılacak bashrc de değişim olacak.
 | 
						||
        local LOCALE=$(get_option LOCALE)
 | 
						||
        sed -i -e "s|LANG=.*|LANG=$LOCALE|g" $TARGETDIR/etc/locale.conf
 | 
						||
        # Uncomment locale from /etc/default/libc-locales and regenerate it.
 | 
						||
        sed -e "/${LOCALE}/s/^\#//" -i $TARGETDIR/etc/default/libc-locales
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
menu_timezone() {
 | 
						||
    local _tzones="$(cd /usr/share/zoneinfo; find Africa/ America/ Antarctica/ Arctic/ Asia/ Atlantic/ Australia/ Europe/ Indian/ Pacific/ posix/ -type f | sort)"
 | 
						||
    local _TIMEZONES=
 | 
						||
 | 
						||
    for f in ${_tzones}; do
 | 
						||
        _TIMEZONES="${_TIMEZONES} ${f} -"
 | 
						||
    done
 | 
						||
    while true; do
 | 
						||
        DIALOG --title " Select your timezone " --menu "$MENULABEL" 14 70 14 ${_TIMEZONES}
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            set_option TIMEZONE "$(cat $ANSWER)"
 | 
						||
            TIMEZONE_DONE=1
 | 
						||
            break
 | 
						||
        else
 | 
						||
            return
 | 
						||
        fi
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
set_timezone() {
 | 
						||
    local TIMEZONE="$(get_option TIMEZONE)"
 | 
						||
 | 
						||
    sed -i -e "s|#TIMEZONE=.*|TIMEZONE=$TIMEZONE|g" $TARGETDIR/etc/rc.conf
 | 
						||
}
 | 
						||
 | 
						||
menu_hostname() {
 | 
						||
    while true; do
 | 
						||
        DIALOG --inputbox "Set the machine hostname:" ${INPUTSIZE}
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            set_option HOSTNAME "$(cat $ANSWER)"
 | 
						||
            HOSTNAME_DONE=1
 | 
						||
            break
 | 
						||
        else
 | 
						||
            return
 | 
						||
        fi
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
set_hostname() {
 | 
						||
    echo $(get_option HOSTNAME) > $TARGETDIR/etc/hostname
 | 
						||
}
 | 
						||
 | 
						||
menu_rootpassword() {
 | 
						||
    local _firstpass= _secondpass= _desc=
 | 
						||
 | 
						||
    while true; do
 | 
						||
        if [ -n "${_firstpass}" ]; then
 | 
						||
            _desc="Enter the root password again (password won't be displayed)"
 | 
						||
        else
 | 
						||
            _desc="Enter the root password (password won't be displayed)"
 | 
						||
        fi
 | 
						||
        DIALOG --passwordbox "${_desc}" ${MSGBOXSIZE}
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            if [ -z "${_firstpass}" ]; then
 | 
						||
                _firstpass="$(cat $ANSWER)"
 | 
						||
            else
 | 
						||
                _secondpass="$(cat $ANSWER)"
 | 
						||
            fi
 | 
						||
            if [ -n "${_firstpass}" -a -n "${_secondpass}" ]; then
 | 
						||
                if [ "${_firstpass}" != "${_secondpass}" ]; then
 | 
						||
                    DIALOG --infobox "Passwords do not match! please reenter it again" 6 80
 | 
						||
                    unset _firstpass _secondpass
 | 
						||
                    sleep 2 && continue
 | 
						||
                fi
 | 
						||
                set_option ROOTPASSWORD "${_firstpass}"
 | 
						||
                ROOTPASSWORD_DONE=1
 | 
						||
                break
 | 
						||
            fi
 | 
						||
        else
 | 
						||
            return
 | 
						||
        fi
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
set_rootpassword() {
 | 
						||
    echo "root:$(get_option ROOTPASSWORD)" | chpasswd -R $TARGETDIR -c SHA512
 | 
						||
}
 | 
						||
 | 
						||
menu_useraccount() {
 | 
						||
    local _firstpass= _secondpass= _desc=
 | 
						||
 | 
						||
    while true; do
 | 
						||
        DIALOG --inputbox "Birincil kullanıcı adını seçin:" ${INPUTSIZE} "miliskuv"
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            set_option USERNAME "$(cat $ANSWER)"
 | 
						||
            USERNAME_DONE=1
 | 
						||
            break
 | 
						||
        else
 | 
						||
            return
 | 
						||
        fi
 | 
						||
    done
 | 
						||
 | 
						||
    while true; do
 | 
						||
        if [ -n "${_firstpass}" ]; then
 | 
						||
            _desc="Enter the password for '$(get_option USERNAME)' again (password won't be displayed)"
 | 
						||
        else
 | 
						||
            _desc="Enter the password for '$(get_option USERNAME)' (password won't be displayed)"
 | 
						||
        fi
 | 
						||
        DIALOG --passwordbox "${_desc}" ${MSGBOXSIZE}
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            if [ -z "${_firstpass}" ]; then
 | 
						||
                _firstpass="$(cat $ANSWER)"
 | 
						||
            else
 | 
						||
                _secondpass="$(cat $ANSWER)"
 | 
						||
            fi
 | 
						||
            if [ -n "${_firstpass}" -a -n "${_secondpass}" ]; then
 | 
						||
                if [ "${_firstpass}" != "${_secondpass}" ]; then
 | 
						||
                    DIALOG --infobox "Passwords do not match! please reenter it again" 6 80
 | 
						||
                    unset _firstpass _secondpass
 | 
						||
                    sleep 2 && continue
 | 
						||
                fi
 | 
						||
                set_option USERPASSWORD "${_firstpass}"
 | 
						||
                USERPASSWORD_DONE=1
 | 
						||
                break
 | 
						||
            fi
 | 
						||
        else
 | 
						||
            return
 | 
						||
        fi
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
set_useraccount() {
 | 
						||
    useradd -R $TARGETDIR -m -G wheel,audio,video,floppy,cdrom,optical,kvm,xbuilder \
 | 
						||
         "$(get_option USERNAME)"
 | 
						||
    echo "$(get_option USERNAME):$(get_option USERPASSWORD)" | chpasswd -R $TARGETDIR -c SHA512
 | 
						||
}
 | 
						||
 | 
						||
menu_bootloader() {
 | 
						||
    while true; do
 | 
						||
        DIALOG --title " Select the disk to install the bootloader" \
 | 
						||
            --menu "$MENULABEL" ${MENUSIZE} $(show_disks) none "Manage bootloader otherwise"
 | 
						||
        if [ $? -eq 0 ]; then
 | 
						||
            set_option BOOTLOADER "$(cat $ANSWER)"
 | 
						||
            BOOTLOADER_DONE=1
 | 
						||
            break
 | 
						||
        else
 | 
						||
            return
 | 
						||
        fi
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
set_bootloader() {
 | 
						||
    local dev=$(get_option BOOTLOADER) grub_args=
 | 
						||
 | 
						||
    if [ "$dev" = "none" ]; then return; fi
 | 
						||
 | 
						||
    # Check if it's an EFI system via efivars module.
 | 
						||
    if [ -n "$EFI_SYSTEM" ]; then
 | 
						||
        grub_args="--target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=milis_grub --recheck"
 | 
						||
    fi
 | 
						||
    echo "Running grub-install $grub_args $dev..." >$LOG
 | 
						||
    chroot $TARGETDIR grub-install $grub_args $dev >$LOG 2>&1
 | 
						||
    if [ $? -ne 0 ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} \
 | 
						||
        failed to install GRUB to $dev!\nCheck $LOG for errors." ${MSGBOXSIZE}
 | 
						||
        DIE 1
 | 
						||
    fi
 | 
						||
    echo "Running grub-mkconfig on $TARGETDIR..." >$LOG
 | 
						||
    chroot $TARGETDIR grub-mkconfig -o /boot/grub/grub.cfg >$LOG 2>&1
 | 
						||
    if [ $? -ne 0 ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}${RED}ERROR${RESET}: \
 | 
						||
        failed to run grub-mkconfig!\nCheck $LOG for errors." ${MSGBOXSIZE}
 | 
						||
        DIE 1
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
test_network() {
 | 
						||
    #ağ testi
 | 
						||
    if [ $? -eq 0 ]; then
 | 
						||
        DIALOG --msgbox "Ağ düzgün çalışıyor!" ${MSGBOXSIZE}
 | 
						||
        NETWORK_DONE=1
 | 
						||
        return 1
 | 
						||
    fi
 | 
						||
    DIALOG --msgbox "Ağda sorun var,gerekli ayarları yapınız." ${MSGBOXSIZE}
 | 
						||
}
 | 
						||
 | 
						||
configure_wifi() {
 | 
						||
    local dev="$1" ssid enc pass _wpasupconf=/etc/wpa_supplicant/wpa_supplicant.conf
 | 
						||
 | 
						||
    DIALOG --form "Wireless configuration for ${dev}\n(encryption type: wep or wpa)" 0 0 0 \
 | 
						||
        "SSID:" 1 1 "" 1 16 30 0 \
 | 
						||
        "Encryption:" 2 1 "" 2 16 4 3 \
 | 
						||
        "Password:" 3 1 "" 3 16 50 0 || return 1
 | 
						||
    set -- $(cat $ANSWER)
 | 
						||
    ssid="$1"; enc="$2"; pass="$3";
 | 
						||
 | 
						||
    if [ -z "$ssid" ]; then
 | 
						||
        DIALOG --msgbox "Invalid SSID." ${MSGBOXSIZE}
 | 
						||
        return 1
 | 
						||
    elif [ -z "$enc" -o "$enc" != "wep" -a "$enc" != "wpa" ]; then
 | 
						||
        DIALOG --msgbox "Invalid encryption type (possible values: wep or wpa)." ${MSXBOXSIZE}
 | 
						||
        return 1
 | 
						||
    elif [ -z "$pass" ]; then
 | 
						||
        DIALOG --msgbox "Invalid AP password." ${MSGBOXSIZE}
 | 
						||
    fi
 | 
						||
 | 
						||
    rm -f ${_wpasupconf%.conf}-${dev}.conf
 | 
						||
    cp -f ${_wpasupconf} ${_wpasupconf%.conf}-${dev}.conf
 | 
						||
    if [ "$enc" = "wep" ]; then
 | 
						||
        echo "network={" >> ${_wpasupconf%.conf}-${dev}.conf
 | 
						||
        echo "  ssid=\"$ssid\"" >> ${_wpasupconf%.conf}-${dev}.conf
 | 
						||
        echo "  wep_key0=\"$pass\"" >> ${_wpasupconf%.conf}-${dev}.conf
 | 
						||
        echo "  wep_tx_keyidx=0" >> ${_wpasupconf%.conf}-${dev}.conf
 | 
						||
        echo "  auth_alg=SHARED" >> ${_wpasupconf%.conf}-${dev}.conf
 | 
						||
        echo "}" >> ${_wpasupconf%.conf}-${dev}.conf
 | 
						||
    else
 | 
						||
        wpa_passphrase "$ssid" "$pass" >> ${_wpasupconf%.conf}-${dev}.conf
 | 
						||
    fi
 | 
						||
 | 
						||
    configure_net_dhcp $dev
 | 
						||
    return $?
 | 
						||
}
 | 
						||
 | 
						||
configure_net() {
 | 
						||
    local dev="$1" rval
 | 
						||
 | 
						||
    DIALOG --yesno "Do you want to use DHCP for $dev?" ${YESNOSIZE}
 | 
						||
    rval=$?
 | 
						||
    if [ $rval -eq 0 ]; then
 | 
						||
        configure_net_dhcp $dev
 | 
						||
    elif [ $rval -eq 1 ]; then
 | 
						||
        configure_net_static $dev
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
iface_setup() {
 | 
						||
    ip addr show dev $1|grep -q 'inet '
 | 
						||
    return $?
 | 
						||
}
 | 
						||
 | 
						||
configure_net_dhcp() {
 | 
						||
    local dev="$1"
 | 
						||
 | 
						||
    iface_setup $dev
 | 
						||
    if [ $? -eq 1 ]; then
 | 
						||
        dhcpcd -t 10 -w -4 -L $dev -e "wpa_supplicant_conf=/etc/wpa_supplicant/wpa_supplicant-${dev}.conf" 2>&1 | tee $LOG | \
 | 
						||
            DIALOG --progressbox "Initializing $dev via DHCP..." ${WIDGET_SIZE}
 | 
						||
        if [ $? -ne 0 ]; then
 | 
						||
            DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} failed to run dhcpcd. See $LOG for details." ${MSGBOXSIZE}
 | 
						||
            return 1
 | 
						||
        fi
 | 
						||
        iface_setup $dev
 | 
						||
        if [ $? -eq 1 ]; then
 | 
						||
            DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} DHCP request failed for $dev. Check $LOG for errors." ${MSGBOXSIZE}
 | 
						||
            return 1
 | 
						||
        fi
 | 
						||
    fi
 | 
						||
    test_network
 | 
						||
    if [ $? -eq 1 ]; then
 | 
						||
        set_option NETWORK "${dev} dhcp"
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
configure_net_static() {
 | 
						||
    local ip gw dns1 dns2 dev=$1
 | 
						||
 | 
						||
    DIALOG --form "Static IP configuration for $dev:" 0 0 0 \
 | 
						||
        "IP address:" 1 1 "192.168.0.2" 1 21 20 0 \
 | 
						||
        "Gateway:" 2 1 "192.168.0.1" 2 21 20 0 \
 | 
						||
        "DNS Primary" 3 1 "8.8.8.8" 3 21 20 0 \
 | 
						||
        "DNS Secondary" 4 1 "8.8.4.4" 4 21 20 0 || return 1
 | 
						||
 | 
						||
    set -- $(cat $ANSWER)
 | 
						||
    ip=$1; gw=$2; dns1=$3; dns2=$4
 | 
						||
    echo "running: ip link set dev $dev up" >$LOG
 | 
						||
    ip link set dev $dev up >$LOG 2>&1
 | 
						||
    if [ $? -ne 0 ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} Failed to bring $dev interface." ${MSGBOXSIZE}
 | 
						||
        return 1
 | 
						||
    fi
 | 
						||
    echo "running: ip addr add $ip dev $dev"
 | 
						||
    ip addr add $ip dev $dev >$LOG 2>&1
 | 
						||
    if [ $? -ne 0 ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} Failed to set ip to the $dev interface." ${MSGBOXSIZE}
 | 
						||
        return 1
 | 
						||
    fi
 | 
						||
    ip route add $gw dev $dev >$LOG 2>&1
 | 
						||
    if [ $? -ne 0 ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} failed to setup your gateway." ${MSGBOXSIZE}
 | 
						||
        return 1
 | 
						||
    fi
 | 
						||
    echo "nameserver $dns1" >/etc/resolv.conf
 | 
						||
    echo "nameserver $dns2" >>/etc/resolv.conf
 | 
						||
    test_network
 | 
						||
    if [ $? -eq 1 ]; then
 | 
						||
        set_option NETWORK "${dev} static $ip $gw $dns1 $dns2"
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
menu_network() {
 | 
						||
    local dev addr f DEVICES
 | 
						||
 | 
						||
    for f in $(ls /sys/class/net); do
 | 
						||
        [ "$f" = "lo" ] && continue
 | 
						||
        addr=$(cat /sys/class/net/$f/address)
 | 
						||
        DEVICES="$DEVICES $f $addr"
 | 
						||
    done
 | 
						||
    DIALOG --title " Select the network interface to configure " \
 | 
						||
        --menu "$MENULABEL" ${MENUSIZE} ${DEVICES}
 | 
						||
    if [ $? -eq 0 ]; then
 | 
						||
        dev=$(cat $ANSWER)
 | 
						||
        if $(echo $dev|egrep -q "^wl.*" 2>/dev/null); then
 | 
						||
            configure_wifi $dev
 | 
						||
        else
 | 
						||
            configure_net $dev
 | 
						||
        fi
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
validate_filesystems() {
 | 
						||
    local mnts dev size fstype mntpt mkfs rootfound fmt
 | 
						||
    local usrfound efi_system_partition
 | 
						||
 | 
						||
    unset TARGETFS
 | 
						||
    mnts=$(grep -E '^MOUNTPOINT.*' $CONF_FILE)
 | 
						||
    set -- ${mnts}
 | 
						||
    while [ $# -ne 0 ]; do
 | 
						||
        dev=$2; fstype=$3; size=$4; mntpt="$5"; mkfs=$6
 | 
						||
        shift 6
 | 
						||
 | 
						||
        if [ "$mntpt" = "/" ]; then
 | 
						||
            rootfound=1
 | 
						||
        elif [ "$mntpt" = "/usr" ]; then
 | 
						||
            usrfound=1
 | 
						||
        elif [ "$fstype" = "vfat" -a "$mntpt" = "/boot/efi" ]; then
 | 
						||
            efi_system_partition=1
 | 
						||
        fi
 | 
						||
        if [ "$mkfs" -eq 1 ]; then
 | 
						||
            fmt="NEW FILESYSTEM: "
 | 
						||
        fi
 | 
						||
        if [ -z "$TARGETFS" ]; then
 | 
						||
            TARGETFS="${fmt}$dev ($size) mounted on $mntpt as ${fstype}\n"
 | 
						||
        else
 | 
						||
            TARGETFS="${TARGETFS}${fmt}${dev} ($size) mounted on $mntpt as ${fstype}\n"
 | 
						||
        fi
 | 
						||
    done
 | 
						||
    if [ -z "$rootfound" ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}${RED}HATA:${RESET} \
 | 
						||
kökdizin (/) için bağlama noktası ayarlı değil." ${MSGBOXSIZE}
 | 
						||
        return 1
 | 
						||
    elif [ -n "$usrfound" ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}${RED}HATA:${RESET} \
 | 
						||
/usr bağlama noktası desteklenmiyor,siliniz." ${MSGBOXSIZE}
 | 
						||
        return 1
 | 
						||
    elif [ -n "$EFI_SYSTEM" -a -z "$efi_system_partition" ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} \
 | 
						||
The EFI System Partition has not yet been configured, please create it\n
 | 
						||
as FAT32, mountpoint /boot/efi and at least with 100MB of size." ${MSGBOXSIZE}
 | 
						||
    fi
 | 
						||
    FILESYSTEMS_DONE=1
 | 
						||
}
 | 
						||
 | 
						||
create_filesystems() {
 | 
						||
    local mnts dev mntpt fstype fspassno mkfs size rv uuid
 | 
						||
 | 
						||
    mnts=$(grep -E '^MOUNTPOINT.*' $CONF_FILE)
 | 
						||
    set -- ${mnts}
 | 
						||
    while [ $# -ne 0 ]; do
 | 
						||
        dev=$2; fstype=$3; mntpt="$5"; mkfs=$6
 | 
						||
        shift 6
 | 
						||
 | 
						||
        # swap partitions
 | 
						||
        if [ "$fstype" = "swap" ]; then
 | 
						||
            swapoff $dev >/dev/null 2>&1
 | 
						||
            if [ "$mkfs" -eq 1 ]; then
 | 
						||
                mkswap $dev >$LOG 2>&1
 | 
						||
                if [ $? -ne 0 ]; then
 | 
						||
                    DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} \
 | 
						||
failed to create swap on ${dev}!\ncheck $LOG for errors." ${MSGBOXSIZE}
 | 
						||
                    DIE 1
 | 
						||
                fi
 | 
						||
            fi
 | 
						||
            swapon $dev >$LOG 2>&1
 | 
						||
            if [ $? -ne 0 ]; then
 | 
						||
                DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} \
 | 
						||
failed to activate swap on $dev!\ncheck $LOG for errors." ${MSGBOXSIZE}
 | 
						||
                DIE 1
 | 
						||
            fi
 | 
						||
            # Add entry for target fstab
 | 
						||
            uuid=$(blkid -o value -s UUID "$dev")
 | 
						||
            echo "UUID=$uuid none swap sw 0 0" >>$TARGET_FSTAB
 | 
						||
            continue
 | 
						||
        fi
 | 
						||
 | 
						||
        if [ "$mkfs" -eq 1 ]; then
 | 
						||
            case "$fstype" in
 | 
						||
            btrfs) MKFS="mkfs.btrfs -f"; modprobe btrfs >$LOG 2>&1;;
 | 
						||
            ext2) MKFS="mke2fs -F"; modprobe ext2 >$LOG 2>&1;;
 | 
						||
            ext3) MKFS="mke2fs -F -j"; modprobe ext3 >$LOG 2>&1;;
 | 
						||
            ext4) MKFS="mke2fs -F -t ext4"; modprobe ext4 >$LOG 2>&1;;
 | 
						||
            f2fs) MKFS="mkfs.f2fs"; modprobe f2fs >$LOG 2>&1;;
 | 
						||
            vfat) MKFS="mkfs.vfat -F32"; modprobe vfat >$LOG 2>&1;;
 | 
						||
            xfs) MKFS="mkfs.xfs -f"; modprobe xfs >$LOG 2>&1;;
 | 
						||
            esac
 | 
						||
            DIALOG --infobox "Creating filesystem $fstype on $dev for $mntpt ..." 8 60
 | 
						||
            echo "Running $MKFS $dev..." >$LOG
 | 
						||
            $MKFS $dev >$LOG 2>&1; rv=$?
 | 
						||
            if [ $rv -ne 0 ]; then
 | 
						||
                DIALOG --msgbox "${BOLD}${RED}HATA:${RESET} \
 | 
						||
 $dev $fstype dosyasistemi oluşturma esnasında hata oluştu!\nayrıntı için $LOG dosyasına bakınız." ${MSGBOXSIZE}
 | 
						||
                DIE 1
 | 
						||
            fi
 | 
						||
        fi
 | 
						||
        # Mount rootfs the first one.
 | 
						||
        [ "$mntpt" != "/" ] && continue
 | 
						||
        mkdir -p $TARGETDIR
 | 
						||
        echo " $dev noktası $mntpt a bağlanıyor($fstype)..." >$LOG
 | 
						||
        mount -t $fstype $dev $TARGETDIR >$LOG 2>&1
 | 
						||
        if [ $? -ne 0 ]; then
 | 
						||
            DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} \
 | 
						||
 $dev bağlanması ${mntpt} esnasında hata oluştu! ayrıntı için $LOG dosyasına bakınız." ${MSGBOXSIZE}
 | 
						||
            DIE 1
 | 
						||
        fi
 | 
						||
        # Add entry to target fstab
 | 
						||
        uuid=$(blkid -o value -s UUID "$dev")
 | 
						||
        if [ "$fstype" = "f2fs" ]; then
 | 
						||
            fspassno=0
 | 
						||
        else
 | 
						||
            fspassno=1
 | 
						||
        fi
 | 
						||
        echo "UUID=$uuid $mntpt $fstype defaults 0 $fspassno" >>$TARGET_FSTAB
 | 
						||
    done
 | 
						||
 | 
						||
    # mount all filesystems in target rootfs
 | 
						||
    mnts=$(grep -E '^MOUNTPOINT.*' $CONF_FILE)
 | 
						||
    set -- ${mnts}
 | 
						||
    while [ $# -ne 0 ]; do
 | 
						||
        dev=$2; fstype=$3; mntpt="$5"
 | 
						||
        shift 6
 | 
						||
        [ "$mntpt" = "/" -o "$fstype" = "swap" ] && continue
 | 
						||
        mkdir -p ${TARGETDIR}${mntpt}
 | 
						||
        echo "Mounting $dev on $mntpt ($fstype)..." >$LOG
 | 
						||
        mount -t $fstype $dev ${TARGETDIR}${mntpt} >$LOG 2>&1
 | 
						||
        if [ $? -ne 0 ]; then
 | 
						||
            DIALOG --msgbox "${BOLD}${RED}HATA:${RESET} \
 | 
						||
failed to mount $dev on $mntpt! check $LOG for errors." ${MSGBOXSIZE}
 | 
						||
            DIE
 | 
						||
        fi
 | 
						||
        # Add entry to target fstab
 | 
						||
        uuid=$(blkid -o value -s UUID "$dev")
 | 
						||
        echo "UUID=$uuid $mntpt $fstype defaults 0 2" >>$TARGET_FSTAB
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
mount_filesystems() {
 | 
						||
    for f in sys proc dev; do
 | 
						||
        [ ! -d $TARGETDIR/$f ] && mkdir $TARGETDIR/$f
 | 
						||
        echo "Mounting $TARGETDIR/$f..." >$LOG
 | 
						||
        mount --bind /$f $TARGETDIR/$f >$LOG 2>&1
 | 
						||
    done
 | 
						||
}
 | 
						||
 | 
						||
umount_filesystems() {
 | 
						||
    local f
 | 
						||
 | 
						||
    for f in sys/fs/fuse/connections sys proc dev; do
 | 
						||
        echo "Unmounting $TARGETDIR/$f..." >$LOG
 | 
						||
        umount $TARGETDIR/$f >$LOG 2>&1
 | 
						||
    done
 | 
						||
    local mnts="$(grep -E '^MOUNTPOINT.*$' $CONF_FILE)"
 | 
						||
    set -- ${mnts}
 | 
						||
    while [ $# -ne 0 ]; do
 | 
						||
        local dev=$2; local fstype=$3; local mntpt=$5
 | 
						||
        shift 6
 | 
						||
        if [ "$fstype" = "swap" ]; then
 | 
						||
            echo "Disabling swap space on $dev..." >$LOG
 | 
						||
            swapoff $dev >$LOG 2>&1
 | 
						||
            continue
 | 
						||
        fi
 | 
						||
        if [ "$mntpt" != "/" ]; then
 | 
						||
            echo "Unmounting $TARGETDIR/$mntpt..." >$LOG
 | 
						||
            umount $TARGETDIR/$mntpt >$LOG 2>&1
 | 
						||
        fi
 | 
						||
    done
 | 
						||
    echo "Unmounting $TARGETDIR..." >$LOG
 | 
						||
    umount $TARGETDIR >$LOG 2>&1
 | 
						||
}
 | 
						||
 | 
						||
copy_rootfs() {
 | 
						||
    DIALOG --title "Ayrıntı için $LOG a bakınız" \
 | 
						||
        --infobox "Çalışan ortam hedef noktaya kopyalanıyor,lütfen bekleyiniz ..." 4 60
 | 
						||
    LANG=C cp -axvnu / $TARGETDIR >$LOG 2>&1
 | 
						||
    if [ $? -ne 0 ]; then
 | 
						||
        DIE 1
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
install_packages() {
 | 
						||
    local _grub= _syspkg=
 | 
						||
 | 
						||
    if [ -n "$EFI_SYSTEM" ]; then
 | 
						||
        _grub="grub-x86_64-efi"
 | 
						||
    else
 | 
						||
        _grub="grub"
 | 
						||
    fi
 | 
						||
 | 
						||
    _syspkg="base-system"
 | 
						||
 | 
						||
    #temel sistem paketleri kurulacak
 | 
						||
}
 | 
						||
 | 
						||
enable_dhcpd() {
 | 
						||
    echo "dhcp hedef kurulum noktasında ayarlanacak"
 | 
						||
}
 | 
						||
 | 
						||
menu_install() {
 | 
						||
    # Don't continue if filesystems are not ready.
 | 
						||
    validate_filesystems || return 1
 | 
						||
 | 
						||
	#şimdilik kapalı
 | 
						||
    ROOTPASSWORD_DONE=1 #"$(get_option ROOTPASSWORD)"
 | 
						||
    BOOTLOADER_DONE=1 #"$(get_option BOOTLOADER)"
 | 
						||
 | 
						||
    if [ -z "$FILESYSTEMS_DONE" ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}Gerekli dosya sistemi ayarlı değil, \
 | 
						||
	gerekli ayarlamayı yaptıktan sonra kuruluma başlayınız.${RESET}" ${MSGBOXSIZE}
 | 
						||
        return 1
 | 
						||
    elif [ -z "$ROOTPASSWORD_DONE" ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}Root şifresi ayarlı değil, \
 | 
						||
	gerekli ayarlamayı yaptıktan sonra kuruluma başlayınız.${RESET}" ${MSGBOXSIZE}
 | 
						||
        return 1
 | 
						||
    elif [ -z "$BOOTLOADER_DONE" ]; then
 | 
						||
        DIALOG --msgbox "${BOLD}Bootloader için disk ayarlı değil, \
 | 
						||
	gerekli ayarlamayı yaptıktan sonra kuruluma başlayınız.${RESET}" ${MSGBOXSIZE}
 | 
						||
        return 1
 | 
						||
    fi
 | 
						||
 | 
						||
    DIALOG --yesno "${BOLD}Şu işlemler uygulanacak:${RESET}\n\n
 | 
						||
	${BOLD}${TARGETFS}${RESET}\n
 | 
						||
	${BOLD}${RED}UYARI: YENİ DOSYA SİSTEMİ İÇİN HEDEF BÖLÜMDEKİ TÜM DATA SİLİNECEK.${RESET}\n\n
 | 
						||
	${BOLD}Devam etmek istiyor musunuz?${RESET}" 20 80 || return
 | 
						||
    unset TARGETFS
 | 
						||
 | 
						||
    # Create and mount filesystems
 | 
						||
    create_filesystems
 | 
						||
	copy_rootfs
 | 
						||
    rm -r -f $TARGETDIR/tmp/*
 | 
						||
	DIALOG --title "Ayrıntılar için $LOG kontrol ediniz." \
 | 
						||
		--infobox "Hedef için başlatıcı ayarı yapılıyor ..." 4 60
 | 
						||
	echo "Hedef için başlatıcı ayarı yapılıyor ..." >$LOG
 | 
						||
	# mount required fs
 | 
						||
	mount_filesystems
 | 
						||
	chroot $TARGETDIR dracut --no-hostonly --add-drivers "ahci" --force >>$LOG 2>&1
 | 
						||
        
 | 
						||
 | 
						||
    DIALOG --infobox "Kurulum ayarları uygulanıyor..." 4 60
 | 
						||
 | 
						||
    # copy target fstab.
 | 
						||
    install -Dm644 $TARGET_FSTAB $TARGETDIR/etc/fstab
 | 
						||
    # Mount /tmp as tmpfs.
 | 
						||
    echo "tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0" >> $TARGETDIR/etc/fstab
 | 
						||
 | 
						||
 | 
						||
    # set up keymap, locale, timezone, hostname and root passwd.-simdilik kapali
 | 
						||
    #set_keymap
 | 
						||
    #set_locale
 | 
						||
    #set_timezone
 | 
						||
    #set_hostname
 | 
						||
    #set_rootpassword
 | 
						||
    #set_useraccount
 | 
						||
 | 
						||
    
 | 
						||
 | 
						||
    # install bootloader.-simdilik kapali
 | 
						||
    #set_bootloader
 | 
						||
    
 | 
						||
    sync && sync && sync
 | 
						||
 | 
						||
    # unmount all filesystems.
 | 
						||
    umount_filesystems
 | 
						||
 | 
						||
    # installed successfully.
 | 
						||
    DIALOG --yesno "${BOLD}Milis İşletim Sistemi başarıyla kuruldu!${RESET}\n
 | 
						||
	Bilgisayar yeniden başlatılsın mı?" ${YESNOSIZE}
 | 
						||
    if [ $? -eq 0 ]; then
 | 
						||
        shutdown -r now
 | 
						||
    else
 | 
						||
        return
 | 
						||
    fi
 | 
						||
}
 | 
						||
 | 
						||
menu_source() {
 | 
						||
    local src=
 | 
						||
 | 
						||
    DIALOG --title " Select installation source " \
 | 
						||
        --menu "$MENULABEL" 8 70 0 \
 | 
						||
        "Local" "Packages from ISO image" \
 | 
						||
        "Network" "Packages from official remote reposity"
 | 
						||
    case "$(cat $ANSWER)" in
 | 
						||
        "Local") src="local";;
 | 
						||
        "Network") src="net";
 | 
						||
            if [ -z "$NETWORK_DONE" ]; then
 | 
						||
                menu_network;
 | 
						||
            fi;;
 | 
						||
        *) return 1;;
 | 
						||
    esac
 | 
						||
    SOURCE_DONE=1
 | 
						||
    set_option SOURCE $src
 | 
						||
}
 | 
						||
 | 
						||
menu() {
 | 
						||
    if [ -z "$DEFITEM" ]; then
 | 
						||
        DEFITEM="Keyboard"
 | 
						||
    fi
 | 
						||
 | 
						||
    DIALOG --default-item $DEFITEM \
 | 
						||
        --extra-button --extra-label "Ayarlar" \
 | 
						||
        --title " Milis İşletim Sistemi kurulumu menüsü " \
 | 
						||
        --menu "$MENULABEL" 10 70 0 \
 | 
						||
        "Dosyasistemi" "Dosya sistemlerini ayarlama,gerekli bağlamalar" \
 | 
						||
        "Kur" "Kayıt edilen ayarlarla kuruluma başlanması" \
 | 
						||
        "Çıkış" "Kurulumdan çıkış"
 | 
						||
 | 
						||
    if [ $? -eq 3 ]; then
 | 
						||
        # Show settings
 | 
						||
        cp $CONF_FILE /tmp/conf_hidden.$$;
 | 
						||
        sed -i "s/^ROOTPASSWORD.*/ROOTPASSWORD <-hidden->/" /tmp/conf_hidden.$$
 | 
						||
        DIALOG --title "Kurulum için ayarlar kayıt edildi." --textbox /tmp/conf_hidden.$$ 14 60
 | 
						||
        rm /tmp/conf_hidden.$$
 | 
						||
        return
 | 
						||
    fi
 | 
						||
 | 
						||
    case $(cat $ANSWER) in
 | 
						||
        "Dosyasistemi") menu_filesystems && [ -n "$FILESYSTEMS_DONE" ] && DEFITEM="Kur";;
 | 
						||
        "Kur") menu_install;;
 | 
						||
        "Çıkış") DIE;;
 | 
						||
        *) DIALOG --yesno "Kurulumu iptal et?" ${YESNOSIZE} && DIE
 | 
						||
    esac
 | 
						||
}
 | 
						||
 | 
						||
if [ ! -x /bin/dialog ]; then
 | 
						||
    echo "ERROR: missing dialog command, exiting..."
 | 
						||
    exit 1
 | 
						||
fi
 | 
						||
#
 | 
						||
# main()
 | 
						||
#
 | 
						||
DIALOG --title "${BOLD}${RED} Milis İşletim Sistemi Hakkında ... ${RESET}" --msgbox "\n
 | 
						||
Milis işletim sistemi kurulumuna hoşgeldiniz. Milis sıfırdan kaynak kodlardan 
 | 
						||
oluşturulan yerli bağımsız bir işletim sistemidir.Kendine özgü mps isimli paket yöneticisine sahiptir.\
 | 
						||
Mps ile hem derleme talimatları kullanılarak paket üretilebilir hem de direk ikili paketlerin kurulumu sağlanır.
 | 
						||
irtibat için ${BOLD}#milisarge on irc.freenode.org${RESET}.\n\n
 | 
						||
${BOLD}milisarge@gmail.com${RESET}\n\n" 16 80
 | 
						||
 | 
						||
while true; do
 | 
						||
    menu
 | 
						||
done
 | 
						||
 | 
						||
exit 0
 | 
						||
# vim: set ts=4 sw=4 et:
 |