太康元年(280年),西晋灭亡东吴,统一中国。不久,晋王朝内部矛盾激化,宗室诸王争权夺位,战祸连年,天灾不断,疾疫流行,赋敛如故,大量被迫沦为流民,不断爆发反晋起义。元康二年,匈奴人郝散起兵攻上党(今山西潞城东北);两年后,其弟度元联合冯翊、北地等郡的马兰羌、卢水胡起兵反晋,秦(治今甘肃甘谷东)、雍(治今西安西北)二州氐、羌数十万民众纷起响应,共推氐帅齐万年为帝。先后攻打天水、略阳、始平、武都、阳平诸郡,晋军“诸将覆败相继”。后晋廷遣积弩将军孟观率京师宿卫军前往镇压,起义失败,齐万年被俘。从此,遍及各地的流民大起义此起彼伏。
流民起义永宁元年(301年)十月,略阳?(巴氐)人李特、李雄领导秦、雍六郡流民在益州(治今成都)起义。时关中干旱,连年饥荒,六郡汉、氐、羌、密等各族民众10余万人经汉川流入巴蜀地区就食。当地官府逼迫其返乡,激起流民起义,屡败晋军,攻占广汉,进围成都(今属四川)。李特与蜀人约法三章,赈贷贫人,得到益州民众的支持。后李特战死,其弟李流和其子李雄继续领统义军,于晋太安二年(303年)闰十二月,逐走晋益州刺史罗尚,攻下成都。翌年,李雄称成都王,后称帝,建成国。至成玉恒四年(338年)四月,李骧(李特弟)之子李寿即位,改国号为汉。秦、雍六郡流民起义,是西晋末年流民起义中规模最大的一次。李雄建立的成汉政权,共存在44年之久,直至成汉嘉宁二年(347年),为东晋都督荆、司等六州诸军事桓温率军消灭。
流民起义太安二年(303)五月,晋廷急征荆州壮勇赴益州,遭到荆州民众的强烈反抗。曾任县吏的义阳(今河南信阳西北)蛮民首领张昌,在安陆(今湖北云梦)石岩山聚众起义,荆地区的流民和逃避戍役的丁壮纷纷参加。张昌立山都县(今湖北谷城东南)吏丘沈为天子,自为相国。趁晋廷诸王争夺朝权之机,分兵四出攻城略地。南破武昌(今湖北鄂州)、长沙、湘东(郡治酃县,今湖南衡阳市)、零陵;东攻弋阳(今河南潢川西);北克宛(今河南南阳市)、襄阳,杀西晋都督荆州诸军事新野王司马歆。部将石冰和封云率领东路义军,攻占江(治今南昌)、扬(治今南京)二州。其势力迅速扩大到荆、江、徐(治今江苏徐州)、扬、豫(治今河南淮阳)五州的大部地区。同年七月,西晋荆州刺史刘弘调集大军围攻张昌,起义军被晋将陶侃率部击败。次年八月,张昌被俘杀。荆州流民起义遂被镇压。
永嘉四年九月,雍州部分民众流移至宛县一带就食、晋廷逼令流民归还故里,遭到流民强烈反抗。京兆人王如在宛乘势发动起义,南安人庞定、冯翊人严嶷、京兆人侯脱等各率众响应,聚至四五万人,于汉、沔及襄、阳一带,屡败晋军。王如自称大将军,领司、雍二州牧。王如乘汉镇东大将军石勒率部进至宛县,借机与其联结消灭异己,最后他也被石勒击败,永嘉六年投降晋扬州刺史王敦,被杀。
西晋永嘉五年元月,巴蜀流民数万家为避战乱,流亡到荆、湘地区。湘州刺史荀眺欲尽诛流民,四、五万家流民愤而皆反,共推蜀人杜弢为主。杜弢自称梁、益二州牧,领湘州刺史,率众攻占长沙,生擒荀眺。攻克零陵(今属湖南)、桂阳(今湖南郴州),又东击武昌(今湖北鄂州)、袭沔阳(今湖北沔阳西南),占据豫章(今南昌),屡败晋军。建兴三年(315年),晋琅玡王司马睿遣征南将军王敦、荆州刺史陶侃集结大军,围攻杜弢,义军将士死伤甚众,部将王真降晋。杜弢突围逃遁,死于途中。
荆襄地区北有秦岭,南有大巴山,东有熊耳山,中有武当山、荆山,跨连陕西、河南、湖北三省,谷阻山深,人烟稀少,为封建统治的薄弱环节。该地资源丰富,且可逃避赋役,永乐年间(1403~1424)渐有流民进入。宣德至成化年间,流民集结者逾一百五十万。他们千百为群,开垦荒地,伐木架棚,流徙不定,故称棚民。官府视之为“盗贼渊薮”,欲加制裁。
成化元年三月,流民首领刘通(号刘千斤)联合石龙(号石和尚)、刘长子等,在房县大木厂立黄旗聚众起义,称汉王,国号汉,年号德胜,攻略襄、邓,屡败官军。成化元年,明廷派工部尚书白圭为提督湖广军务、抚宁伯朱永为总兵官,会合湖广总兵李震、河南巡抚王恕入山进讨。次年闰三月,刘通兵败被擒,死于京师。十月,刘长子、石龙被俘。起义失败,白圭在流民中推行强制附籍与发还原籍的政策,导致成化六年刘通余部李原(号李胡子)与小王洪、王彪为首的流民第二次起义。李原称太平王,攻掠南漳、内乡、渭南一带,流民归附者近百万。
右都御史项忠受命为总督河南、湖广、荆襄军务,挫败起义军,俘李原、小王洪等。项忠勒令流民选一丁,戍湖广边卫,余归籍给田。在官府强行驱迫下,流民不前即杀,戍者舟行多疫死。朝廷为防事态扩大,于成化十二年派左都御史原杰抚治荆襄流民,设置郧阳府与湖广行都司,并由都御史吴道宏抚治郧阳、襄阳、荆州、南阳、西安、汉中六府。流民附籍后,垦辟老林,从事农作,开发药材、竹木、铁、炭等资源,荆襄山区逐渐民户稠密、商旅不绝。
流民起义在北方中原爆发的多起民众起义中石勒和王弥领导的山东、河北起义影响最大。永兴二年(305年)七月,石勒同马牧帅汲桑率数百骑参加公师藩在赵(今晋冀豫部分地区)、魏(今冀鲁豫部分地区)的反晋起义。不久,公师藩兵败被杀。永嘉元年三月,石勒和汲桑再度起义。五月,攻占邺城(今河北临漳西南),杀晋新蔡王司马腾。八月,在东武阳(今山东朝城西)为晋兖州刺史苟唏部所败,汲桑被杀,石勒往投汉王刘渊。光熙元年(306年)三月,东莱郡(治今山东掖县)大族王弥参加怰县令刘伯根率万人反晋起义。后刘伯根战死,王弥继统其众,转战于今河北、山东、安徽、河南等地,有众数万。永嘉二年五月,兵临洛阳(今洛阳东北),使晋廷“京邑大震,宫城门昼闭”。后被晋司徒王衍率大军击败,王弥率余部投奔刘渊。
在北方中原爆发的多起民众起义中石勒和王弥领导的山东、河北起义影响最大。永兴二年(305年)七月,石勒同马牧帅汲桑率数百骑参加公师藩在赵(今晋冀豫部分地区)、魏(今冀鲁豫部分地区)的反晋起义。不久,公师藩兵败被杀。永嘉元年三月,石勒和汲桑再度起义。五月,攻占邺城(今河北临漳西南),杀晋新蔡王司马腾。八月,在东武阳(今山东朝城西)为晋兖州刺史苟唏部所败,汲桑被杀,石勒往投汉王刘渊。光熙元年(306年)三月,东莱郡(治今山东掖县)大族王弥参加怰县令刘伯根率万人反晋起义。后刘伯根战死,王弥继统其众,转战于今河北、山东、安徽、河南等地,有众数万。永嘉二年五月,兵临洛阳(今洛阳东北),使晋廷“京邑大震,宫城门昼闭”。后被晋司徒王衍率大军击败,王弥率余部投奔刘渊。
各地流民起义虽然没有走上联合的道路,但各支起义队伍顽强奋战,沉重地打击了西晋的腐朽统治,加速了其灭亡过程。