1#!/bin/bash 2 3# 4# This file is part of util-linux. 5# 6# This file is free software; you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation; either version 2 of the License, or 9# (at your option) any later version. 10# 11# This file is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15# 16 17TS_TOPDIR="${0%/*}/../.." 18TS_DESC="MBR - sort" 19 20. $TS_TOPDIR/functions.sh 21ts_init "$*" 22 23ts_check_test_command "$TS_CMD_FDISK" 24 25# cmd to changes system id to 0x1 26FDISK_CMD_WRITE_CLOSE="w\nq\n" 27FDISK_CMD_CREATE_DOSLABEL="o\n" #create dos label 28 29FDISK_CMD_CREATE_1PRIMARY="n\np\n1\n4096\n6143\n" 30FDISK_CMD_CREATE_2PRIMARY="n\np\n2\n2048\n4095\n" 31FDISK_CMD_CREATE_3PRIMARY="n\np\n3\n6144\n8191\n" 32FDISK_CMD_CREATE_EXTENDED="n\ne\n\n\n" 33 34FDISK_CMD_CREATE_1LOGICAL="n\n14336\n16383\n" 35FDISK_CMD_CREATE_2LOGICAL="n\n22528\n24575\n" 36FDISK_CMD_CREATE_3LOGICAL="n\n18432\n20479\n" 37FDISK_CMD_CREATE_4LOGICAL="n\n10240\n12287\n" 38 39FDISK_CMD_EXPERT_SORT="x\nf\nr\n" 40 41function print_layout { 42 echo -ne "\n---layout----------" >> $TS_OUTPUT 43 $TS_CMD_FDISK -l ${TEST_IMAGE_NAME} >> $TS_OUTPUT 44 echo -ne "-------------------\n\n" >> $TS_OUTPUT 45} 46 47#set -x 48 49ts_log "Initialize empty image" 50TEST_IMAGE_NAME=$(ts_image_init 20) # 20 MiB 51 52ts_log "Create new DOS partition table" 53echo -e "${FDISK_CMD_CREATE_DOSLABEL}${FDISK_CMD_WRITE_CLOSE}" \ 54 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null 55 56print_layout 57 58ts_log "Create primary partitions" 59echo -e "${FDISK_CMD_CREATE_1PRIMARY}${FDISK_CMD_CREATE_2PRIMARY}${FDISK_CMD_CREATE_3PRIMARY}${FDISK_CMD_CREATE_EXTENDED}${FDISK_CMD_WRITE_CLOSE}" \ 60 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null 61 62print_layout 63 64 65ts_log "Create logical partitions" 66echo -e "${FDISK_CMD_CREATE_1LOGICAL}${FDISK_CMD_CREATE_2LOGICAL}${FDISK_CMD_CREATE_3LOGICAL}${FDISK_CMD_CREATE_4LOGICAL}${FDISK_CMD_WRITE_CLOSE}" \ 67 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null 68 69print_layout 70 71 72ts_log "Fix order." 73echo -e "${FDISK_CMD_EXPERT_SORT}${FDISK_CMD_WRITE_CLOSE}" \ 74 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null 75 76print_layout 77 78ts_fdisk_clean ${TEST_IMAGE_NAME} 79ts_finalize 80