303年(太安二年),平氏(今河南桐柏)县小吏张昌在安陆(今湖北安陆)率众起义反晋。
西晋政府为征讨益州李特流民起义,颁“壬午诏书”,令荆州刺史调发荆州壮丁武勇速去益州。荆州丁壮不愿远走他乡,辗转作战,所以朝廷诏令催遣极严,若壮丁在沿途一地停留5日以上,当地地方官即遭降职。于是荆益各地驱逐武勇,人民怨声载道。
303年,曾为平氏县吏的张昌在距安陆80里的石岩山聚流民及不愿远征的丁壮起兵。旬月间兵及3万,并占领江夏,拥立山都(今湖北谷城东南)吏丘沈为天子,丘沈易其名为刘尼,伪称汉室之后。张昌也改名为李辰,自为相国。
起义军头着绛色头巾,上插羽毛,作战勇敢,锐不可挡,大败官军,杀新野王司马歆。南破武昌、下长沙、湘东(今湖南街阳附近);东下弋阳(今河南潢川县西);北攻宛(今河南南阳),下襄阳;张昌所部石冰东下。张昌终得以攻占荆(今湖北西部及中部)、江(今江西、湖北东部及闽浙北部)、徐(今山东南部、江苏北部、安徽东北部)、扬(今安徽推水以南、江苏南部、浙江及江西各一部)、豫(今河南东部及安徽西北部)等5州。
西晋荆州刺史刘弘集结大军,由其部将陶侃攻张昌,大败义军,先后斩首数万。同时豫州刺史刘乔占江夏,杀张昌拥立之皇帝刘尼。
304年,张昌兵败,被俘而死。其部将石冰为陈敏败后被部下杀害。张昌起义失败。