installer 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #!/bin/sh
  2. #set -x
  3. rootsize=1024
  4. usbrootsize=512
  5. cfgsize=16
  6. create_bootcfg() {
  7. cat << FOO > /mnt/boot/boot.cfg
  8. default 0
  9. timeout 2
  10. showmenu 1
  11. title OpenADK
  12. kernel (wd0,0)/boot/kernel
  13. args root=/dev/sda1
  14. title USB
  15. kernel (usb0,0)/boot/kernel-usb
  16. args root=/dev/sdc1
  17. FOO
  18. }
  19. create_fstab() {
  20. cat << FOO > /mnt/etc/fstab
  21. /dev/sda2 /home ext4 defaults 0 0
  22. /dev/sda3 none swap sw 0 0
  23. FOO
  24. }
  25. create_usb_fstab() {
  26. cat << FOO > /mnt/etc/fstab
  27. /dev/sdc2 /home ext4 defaults 0 0
  28. FOO
  29. }
  30. create_home() {
  31. mkdir -p /mnt/home
  32. mkdir -p /tmp/home/lemote
  33. chown 1000:1000 /tmp/home/lemote
  34. echo "lemote:x:1000:1000:Linux User,,,:/home/lemote:/bin/mksh" >> /mnt/etc/passwd
  35. echo "lemote:.m3Jtyyc5L4W6:15426:0:99999:7:::" >> /mnt/etc/shadow
  36. echo "setxkbmap -option terminate:ctrl_alt_bksp" >> /tmp/home/lemote/.xsession
  37. echo fluxbox >> /tmp/home/lemote/.xsession
  38. }
  39. usb_install() {
  40. size=$(parted -s /dev/sdc unit mb print|awk '/Disk/ {print $3}'|sed -e "s#MB##")
  41. homesize=$(($size-$usbrootsize-$cfgsize))
  42. mkdir /tmp/home
  43. parted -s /dev/sdc mklabel msdos
  44. parted -s /dev/sdc mkpart primary ext2 0 ${usbrootsize}M 2>&1 >/dev/null
  45. parted -s /dev/sdc mkpart primary ext2 ${usbrootsize}M ${homesize}M
  46. parted -s /dev/sdc -- mkpart primary ext2 ${homesize}M -0
  47. sfdisk --change-id /dev/sdc 3 88 2>&1 >/dev/null
  48. echo "Creating filesystem on /home"
  49. mke2fs -q -j /dev/sdc2
  50. mount -t ext4 /dev/sdc2 /tmp/home
  51. echo "Copying system to disk"
  52. dd if=/dev/sdc of=/tmp/home/lemote.tar.gz bs=16384 skip=1024 count=8000 2>/dev/null
  53. echo "Creating filesystem on /"
  54. mke2fs -q -j /dev/sdc1
  55. mount -t ext4 /dev/sdc1 /mnt
  56. echo "Installing system to USB disk ..."
  57. tar xzf /tmp/home/lemote.tar.gz -C /mnt
  58. test -x /mnt/usr/bin/sudo && chmod u+s /mnt/usr/bin/sudo
  59. test -x /mnt/usr/bin/Xorg && chmod u+s /mnt/usr/bin/Xorg
  60. create_home
  61. create_bootcfg
  62. create_usb_fstab
  63. umount /mnt
  64. umount /tmp/home
  65. }
  66. disk_install() {
  67. size=$(parted -s /dev/sda unit mb print|awk '/Disk/ {print $3}'|sed -e "s#MB##")
  68. swap=1024
  69. homesize=$(($size-$rootsize-$cfgsize-$swap))
  70. swapsize=$(($homesize+$swap))
  71. mkdir /tmp/home
  72. parted -s /dev/sda mklabel msdos
  73. parted -s /dev/sda mkpart primary ext2 0 ${rootsize}M 2>&1 >/dev/null
  74. parted -s /dev/sda mkpart primary ext2 ${rootsize}M ${homesize}M
  75. parted -s /dev/sda mkpart primary ext2 ${homesize}M ${swapsize}M
  76. parted -s /dev/sda -- mkpart primary ext2 ${swapsize}M -0
  77. sfdisk --change-id /dev/sda 3 82 2>&1 >/dev/null
  78. sfdisk --change-id /dev/sda 4 88 2>&1 >/dev/null
  79. sleep 2
  80. echo "Creating filesystem on /home"
  81. mke2fs -q -j /dev/sda2
  82. mkswap /dev/sda3
  83. mount -t ext4 /dev/sda2 /tmp/home
  84. echo "Copying system to disk"
  85. dd if=/dev/sdc of=/tmp/home/lemote.tar.gz bs=16384 skip=1024 count=8000 2>/dev/null
  86. mke2fs -q -j /dev/sda1
  87. mount -t ext4 /dev/sda1 /mnt
  88. echo "Installing system to hard disk ..."
  89. tar xzf /tmp/home/lemote.tar.gz -C /mnt
  90. test -x /mnt/usr/bin/sudo && chmod u+s /mnt/usr/bin/sudo
  91. test -x /mnt/usr/bin/Xorg && chmod u+s /mnt/usr/bin/Xorg
  92. create_home
  93. create_bootcfg
  94. create_fstab
  95. umount /mnt
  96. umount /tmp/home
  97. }
  98. . /etc/functions.sh
  99. echo 0 > /proc/sys/kernel/printk
  100. load_modules /etc/modules
  101. for f in /etc/modules.d/*; do
  102. [[ -e $f ]] && load_modules /etc/modules.d/*
  103. break
  104. done
  105. echo " ___ _ ____ _ __ "
  106. echo " / _ \ _ __ ___ _ __ / \ | _ \| |/ / "
  107. echo "| | | | '_ \ / _ \ '_ \ / _ \ | | | | ' / "
  108. echo "| |_| | |_) | __/ | | |/ ___ \| |_| | . \ "
  109. echo " \___/| .__/ \___|_| |_/_/ \_\____/|_|\_\ "
  110. echo " |_| "
  111. echo ""
  112. # settle down, after module load
  113. sleep 2
  114. echo "Should I install OpenADK to disk (d) or usb disk (u) or do nothing (any key)"
  115. read answer
  116. if [ "$answer" = "d" ];then
  117. disk_install
  118. fi
  119. if [ "$answer" = "u" ];then
  120. usb_install
  121. fi
  122. echo "Should I reboot now (y/n)"
  123. read answer
  124. if [ "$answer" = "y" ];then
  125. /bin/busybox reboot -f
  126. else
  127. exit
  128. fi