]>
Commit | Line | Data |
---|---|---|
675c1ffa KZ |
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 | ||
e130ce53 | 17 | TS_TOPDIR="${0%/*}/../.." |
675c1ffa KZ |
18 | TS_DESC="MBR - non-dos mode" |
19 | ||
20 | . $TS_TOPDIR/functions.sh | |
21 | ts_init "$*" | |
22 | ||
2f791546 | 23 | ts_check_test_command "$TS_CMD_FDISK" |
c3f323cb | 24 | ts_check_test_command "$TS_HELPER_MD5" |
2f791546 | 25 | |
675c1ffa KZ |
26 | # cmd to changes system id to 0x1 |
27 | FDISK_CMD_INIT="x\ni\n0x1\nr\n" | |
28 | FDISK_CMD_WRITE_CLOSE="w\nq\n" | |
29 | FDISK_CMD_CREATE_DOSLABEL="o\n" #create dos label | |
30 | FDISK_CMD_CREATE_1PRIMARY="n\np\n\n\n+3M\n" # create primary partition of size 3MiB | |
31 | FDISK_CMD_CREATE_2PRIMARY="n\np\n\n\n+2M\n" # create primary partition of size 2MiB | |
32 | FDISK_CMD_SET_ACTIVE="a\n1\n" # set first partition active | |
2f791546 | 33 | FDISK_CMD_CREATE_EXTENDED="n\ne\n\n\n\n" # create extended partition |
675c1ffa | 34 | FDISK_CMD_CREATE_LOGICAL="n\nl\n\n+2M\n" # create next logical partition of size 10 sectors |
1aefdc35 | 35 | FDISK_CMD_DELETE_LOGICALS="d\n6\nd\n5\nd\n6\n" # delete middle, head, tail, last partitions |
675c1ffa KZ |
36 | FDISK_CMD_DELETE_1PRIMARY="d\n1\n" # delete first primary |
37 | FDISK_CMD_DELETE_2PRIMARY="d\n2\n" # delete first primary | |
38 | FDISK_CMD_DELETE_EXTENDED="d\n3\n" # delete second primary | |
39 | ||
0d474d29 JC |
40 | # Sparc uses SUN disk labels by default and thus has a different output |
41 | ARCH=$(uname -m) | |
42 | case $ARCH in | |
43 | *sparc* ) | |
44 | ARCH_EXT=".sparc" | |
45 | ;; | |
46 | *) | |
47 | ARCH_EXT="" | |
48 | ;; | |
49 | esac | |
50 | ||
51 | TS_EXPECTED+="${ARCH_EXT}" | |
52 | ||
675c1ffa | 53 | function print_layout { |
3df4adac | 54 | echo -ne "\n---layout----------\n" >> $TS_OUTPUT |
e1fe1815 | 55 | $TS_CMD_FDISK -l ${TEST_IMAGE_NAME} >> $TS_OUTPUT |
675c1ffa | 56 | echo -ne "-------------------\n\n" >> $TS_OUTPUT |
777c1593 KZ |
57 | |
58 | ts_fdisk_clean ${TEST_IMAGE_NAME} | |
675c1ffa KZ |
59 | } |
60 | ||
2f791546 | 61 | #set -x |
675c1ffa | 62 | |
777c1593 | 63 | ts_init_subtest "empty-pt" |
675c1ffa KZ |
64 | ts_log "Initialize empty image" |
65 | TEST_IMAGE_NAME=$(ts_image_init 20) # 20 MiB | |
66 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
67 | ||
68 | # need to run init twice, to change system ID after new label, otherwise system | |
69 | # ID will be random and will screw up md5's | |
70 | ts_log "Create new DOS partition table" | |
71 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_DOSLABEL}${FDISK_CMD_INIT}${FDISK_CMD_WRITE_CLOSE}" \ | |
72 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
73 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 74 | print_layout |
777c1593 | 75 | ts_finalize_subtest |
675c1ffa | 76 | |
777c1593 KZ |
77 | |
78 | ts_init_subtest "1st-primary" | |
675c1ffa | 79 | ts_log "Create 1st primary partition" |
e1fe1815 | 80 | echo -e "${FDISK_CMD_CREATE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
81 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
82 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 83 | print_layout |
777c1593 | 84 | ts_finalize_subtest |
675c1ffa | 85 | |
777c1593 KZ |
86 | |
87 | ts_init_subtest "1st-active" | |
675c1ffa | 88 | ts_log "Set primary partition active" |
e1fe1815 | 89 | echo -e "${FDISK_CMD_SET_ACTIVE}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
90 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
91 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 92 | print_layout |
777c1593 KZ |
93 | ts_finalize_subtest |
94 | ||
675c1ffa | 95 | |
777c1593 | 96 | ts_init_subtest "1st-primary-recreate" |
675c1ffa | 97 | ts_log "Re-create 1st primary partition" |
e1fe1815 | 98 | echo -e "d\n${FDISK_CMD_CREATE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
99 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
100 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 101 | print_layout |
777c1593 KZ |
102 | ts_finalize_subtest |
103 | ||
675c1ffa | 104 | |
777c1593 | 105 | ts_init_subtest "2nd-primary" |
675c1ffa | 106 | ts_log "Create 2nd primary partition" |
e1fe1815 | 107 | echo -e "${FDISK_CMD_CREATE_2PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
108 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
109 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 110 | print_layout |
777c1593 KZ |
111 | ts_finalize_subtest |
112 | ||
675c1ffa | 113 | |
777c1593 | 114 | ts_init_subtest "extended" |
675c1ffa | 115 | ts_log "Create extended partition" |
e1fe1815 | 116 | echo -e "${FDISK_CMD_CREATE_EXTENDED}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
117 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
118 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 119 | print_layout |
777c1593 KZ |
120 | ts_finalize_subtest |
121 | ||
675c1ffa | 122 | |
777c1593 | 123 | ts_init_subtest "logical" |
675c1ffa | 124 | ts_log "Create logical partitions" |
e1fe1815 | 125 | echo -e "${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
126 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
127 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 128 | print_layout |
777c1593 | 129 | ts_finalize_subtest |
675c1ffa | 130 | |
777c1593 KZ |
131 | |
132 | ts_init_subtest "logical-delete" | |
675c1ffa | 133 | ts_log "Delete logical partitions" |
e1fe1815 | 134 | echo -e "${FDISK_CMD_DELETE_LOGICALS}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
135 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
136 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 137 | print_layout |
777c1593 | 138 | ts_finalize_subtest |
675c1ffa | 139 | |
e1fe1815 | 140 | |
777c1593 | 141 | ts_init_subtest "logical-recreate" |
675c1ffa | 142 | ts_log "Create another logical partition" |
e1fe1815 | 143 | echo -e "${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
144 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
145 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 146 | print_layout |
777c1593 KZ |
147 | ts_finalize_subtest |
148 | ||
675c1ffa | 149 | |
777c1593 | 150 | ts_init_subtest "1st-primary-delete" |
675c1ffa | 151 | ts_log "Delete primary partition" |
e1fe1815 | 152 | echo -e "${FDISK_CMD_DELETE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
153 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
154 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 155 | print_layout |
777c1593 KZ |
156 | ts_finalize_subtest |
157 | ||
675c1ffa | 158 | |
777c1593 | 159 | ts_init_subtest "1nd-primary-delete" |
675c1ffa | 160 | ts_log "Delete primary partition" |
e1fe1815 | 161 | echo -e "${FDISK_CMD_DELETE_2PRIMARY}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
162 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
163 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 164 | print_layout |
777c1593 | 165 | ts_finalize_subtest |
675c1ffa | 166 | |
777c1593 KZ |
167 | |
168 | ts_init_subtest "extended-delete" | |
675c1ffa | 169 | ts_log "Delete extended partition" |
e1fe1815 | 170 | echo -e "${FDISK_CMD_DELETE_EXTENDED}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
171 | | $TS_CMD_FDISK -c=dos -u=cylinders ${TEST_IMAGE_NAME} &> /dev/null |
172 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 173 | print_layout |
777c1593 | 174 | ts_finalize_subtest |
675c1ffa | 175 | |
777c1593 KZ |
176 | |
177 | ts_init_subtest "first-sector-at-end" | |
ca614ef8 KZ |
178 | ts_log "Create new DOS partition table (again)" |
179 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_DOSLABEL}${FDISK_CMD_INIT}${FDISK_CMD_WRITE_CLOSE}" \ | |
180 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
ca614ef8 KZ |
181 | ts_log "Create 1st primary at the end of device" |
182 | echo -e "n\np\n1\n20000\n\n${FDISK_CMD_WRITE_CLOSE}" | \ | |
183 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
ca614ef8 KZ |
184 | print_layout |
185 | ||
186 | ts_log "Create 2nd primary at the begin of device" | |
187 | echo -e "n\np\n2\n\n\n${FDISK_CMD_WRITE_CLOSE}" | \ | |
188 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} >> $TS_OUTPUT | |
ca614ef8 | 189 | print_layout |
777c1593 | 190 | ts_finalize_subtest |
ca614ef8 | 191 | |
e1fe1815 | 192 | |
675c1ffa | 193 | ts_finalize |