Two police vehicles were also involved in the pileup.
Snowy conditions and drivers' speed led to the pileup, police said, which began at about 9 a.m. Heavy snow was falling at the time.
Authorities said the pileup began when drivers did not slow down as they approached what was a minor two-car crash. That initial crash quickly blossomed into a pileup between White Lake Drive and Russell Road.
The Muskegon County Sheriff's Department said a county patrol car was struck while responding to the first crash. Muskegon County Undersheriff Dan Stout said a deputy was taken to an area hospital with non-life-threatening injuries. The deputy was in his vehicle, which was stopped on the side of U.S. 31, when it was struck.
A state police SUV was also struck by a sliding semi-truck in the pileup. The trooper inside the SUV was not injured.
Southbound U.S. 31 was closed at White Lake Drive for several hours after the crashes.