]>
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 | ||
424b66c5 | 40 | # ignore architectures where MBR is not a default |
0d474d29 JC |
41 | ARCH=$(uname -m) |
42 | case $ARCH in | |
43 | *sparc* ) | |
424b66c5 | 44 | ts_skip "unsupported" |
0d474d29 JC |
45 | ;; |
46 | *) | |
0d474d29 JC |
47 | ;; |
48 | esac | |
49 | ||
675c1ffa | 50 | function print_layout { |
3df4adac | 51 | echo -ne "\n---layout----------\n" >> $TS_OUTPUT |
e1fe1815 | 52 | $TS_CMD_FDISK -l ${TEST_IMAGE_NAME} >> $TS_OUTPUT |
675c1ffa | 53 | echo -ne "-------------------\n\n" >> $TS_OUTPUT |
777c1593 KZ |
54 | |
55 | ts_fdisk_clean ${TEST_IMAGE_NAME} | |
675c1ffa KZ |
56 | } |
57 | ||
2f791546 | 58 | #set -x |
675c1ffa | 59 | |
777c1593 | 60 | ts_init_subtest "empty-pt" |
675c1ffa KZ |
61 | ts_log "Initialize empty image" |
62 | TEST_IMAGE_NAME=$(ts_image_init 20) # 20 MiB | |
63 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
64 | ||
65 | # need to run init twice, to change system ID after new label, otherwise system | |
66 | # ID will be random and will screw up md5's | |
67 | ts_log "Create new DOS partition table" | |
68 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_DOSLABEL}${FDISK_CMD_INIT}${FDISK_CMD_WRITE_CLOSE}" \ | |
69 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
70 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 71 | print_layout |
777c1593 | 72 | ts_finalize_subtest |
675c1ffa | 73 | |
777c1593 KZ |
74 | |
75 | ts_init_subtest "1st-primary" | |
675c1ffa | 76 | ts_log "Create 1st primary partition" |
e1fe1815 | 77 | echo -e "${FDISK_CMD_CREATE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
78 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
79 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 80 | print_layout |
777c1593 | 81 | ts_finalize_subtest |
675c1ffa | 82 | |
777c1593 KZ |
83 | |
84 | ts_init_subtest "1st-active" | |
675c1ffa | 85 | ts_log "Set primary partition active" |
e1fe1815 | 86 | echo -e "${FDISK_CMD_SET_ACTIVE}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
87 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
88 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 89 | print_layout |
777c1593 KZ |
90 | ts_finalize_subtest |
91 | ||
675c1ffa | 92 | |
777c1593 | 93 | ts_init_subtest "1st-primary-recreate" |
675c1ffa | 94 | ts_log "Re-create 1st primary partition" |
e1fe1815 | 95 | echo -e "d\n${FDISK_CMD_CREATE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
96 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
97 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 98 | print_layout |
777c1593 KZ |
99 | ts_finalize_subtest |
100 | ||
675c1ffa | 101 | |
777c1593 | 102 | ts_init_subtest "2nd-primary" |
675c1ffa | 103 | ts_log "Create 2nd primary partition" |
e1fe1815 | 104 | echo -e "${FDISK_CMD_CREATE_2PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
105 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
106 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 107 | print_layout |
777c1593 KZ |
108 | ts_finalize_subtest |
109 | ||
675c1ffa | 110 | |
777c1593 | 111 | ts_init_subtest "extended" |
675c1ffa | 112 | ts_log "Create extended partition" |
e1fe1815 | 113 | echo -e "${FDISK_CMD_CREATE_EXTENDED}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
114 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
115 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 116 | print_layout |
777c1593 KZ |
117 | ts_finalize_subtest |
118 | ||
675c1ffa | 119 | |
777c1593 | 120 | ts_init_subtest "logical" |
675c1ffa | 121 | ts_log "Create logical partitions" |
e1fe1815 | 122 | echo -e "${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
123 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
124 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 125 | print_layout |
777c1593 | 126 | ts_finalize_subtest |
675c1ffa | 127 | |
777c1593 KZ |
128 | |
129 | ts_init_subtest "logical-delete" | |
675c1ffa | 130 | ts_log "Delete logical partitions" |
e1fe1815 | 131 | echo -e "${FDISK_CMD_DELETE_LOGICALS}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
132 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
133 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 134 | print_layout |
777c1593 | 135 | ts_finalize_subtest |
675c1ffa | 136 | |
e1fe1815 | 137 | |
777c1593 | 138 | ts_init_subtest "logical-recreate" |
675c1ffa | 139 | ts_log "Create another logical partition" |
e1fe1815 | 140 | echo -e "${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
141 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
142 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 143 | print_layout |
777c1593 KZ |
144 | ts_finalize_subtest |
145 | ||
675c1ffa | 146 | |
777c1593 | 147 | ts_init_subtest "1st-primary-delete" |
675c1ffa | 148 | ts_log "Delete primary partition" |
e1fe1815 | 149 | echo -e "${FDISK_CMD_DELETE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
150 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
151 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 152 | print_layout |
777c1593 KZ |
153 | ts_finalize_subtest |
154 | ||
675c1ffa | 155 | |
777c1593 | 156 | ts_init_subtest "1nd-primary-delete" |
675c1ffa | 157 | ts_log "Delete primary partition" |
e1fe1815 | 158 | echo -e "${FDISK_CMD_DELETE_2PRIMARY}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
159 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
160 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 161 | print_layout |
777c1593 | 162 | ts_finalize_subtest |
675c1ffa | 163 | |
777c1593 KZ |
164 | |
165 | ts_init_subtest "extended-delete" | |
675c1ffa | 166 | ts_log "Delete extended partition" |
e1fe1815 | 167 | echo -e "${FDISK_CMD_DELETE_EXTENDED}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
168 | | $TS_CMD_FDISK -c=dos -u=cylinders ${TEST_IMAGE_NAME} &> /dev/null |
169 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
675c1ffa | 170 | print_layout |
777c1593 | 171 | ts_finalize_subtest |
675c1ffa | 172 | |
777c1593 KZ |
173 | |
174 | ts_init_subtest "first-sector-at-end" | |
ca614ef8 KZ |
175 | ts_log "Create new DOS partition table (again)" |
176 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_DOSLABEL}${FDISK_CMD_INIT}${FDISK_CMD_WRITE_CLOSE}" \ | |
177 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
ca614ef8 KZ |
178 | ts_log "Create 1st primary at the end of device" |
179 | echo -e "n\np\n1\n20000\n\n${FDISK_CMD_WRITE_CLOSE}" | \ | |
180 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
ca614ef8 KZ |
181 | print_layout |
182 | ||
183 | ts_log "Create 2nd primary at the begin of device" | |
184 | echo -e "n\np\n2\n\n\n${FDISK_CMD_WRITE_CLOSE}" | \ | |
185 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} >> $TS_OUTPUT | |
ca614ef8 | 186 | print_layout |
777c1593 | 187 | ts_finalize_subtest |
ca614ef8 | 188 | |
e1fe1815 | 189 | |
675c1ffa | 190 | ts_finalize |