From e855595b88b46a6b4f9c92199e820d4a5e14756a Mon Sep 17 00:00:00 2001 From: milisman Date: Sun, 1 May 2016 02:25:33 +0000 Subject: [PATCH] milis-kur --- bin/milis-kur | 998 +------------------------------------------------- 1 file changed, 11 insertions(+), 987 deletions(-) diff --git a/bin/milis-kur b/bin/milis-kur index a31836d46..ff82eebf4 100755 --- a/bin/milis-kur +++ b/bin/milis-kur @@ -1,996 +1,20 @@ -#!/bin/sh -#- -# Copyright (c) 2012-2015 Juan Romero Pardines . -# 2012 Dave Elusive . -# 2016 milisarge . -# 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 - +yardim() { + cat <<_EOF +Milis Linux Kurulumu - # install bootloader.-simdilik kapali - #set_bootloader - - sync && sync && sync +1-hedef disk bolumunu formatla ( mkfs.ext4 /dev/sdax ) - # unmount all filesystems. - umount_filesystems +2-bolumu /mnt altına bagla ( mount /dev/sdax /mnt ) - # 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 -} +3-mevcut dosya sistemini hedefe kopyala ( cp -axvnu / /mnt ) -menu_source() { - local src= +4-initramfs ( baslatici) oluştur ( chroot /mnt dracut --no-hostonly --add-drivers "ahci" -f /boot/initramfs ) - 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 -} +5-gerekli grub ayarlarını yap. -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..." +_EOF 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: +yardim