晋武帝即位后,为防止争夺帝位的宫廷政变发生,便极力培植皇族在地方上的势力,继承了两汉的封国制,大封同姓王,希望靠着自家的力量来维护朝廷对全国的统治。而晋武帝为维护司马氏江山的这一系列手段,终因缺乏对诸王限制的必要法度以及后来统治集团内部矛盾的发展,宗室诸侯王不但没有能够捍卫帝国的利益,反而将皇权势力分割,以致出现了八王之乱。
西晋经贾后专政和八王之乱的浩劫,社会经济受到严重破坏,人民大量伤亡,西晋的统治机能名存实亡,处于瘫痪状态。八王之间的混战,使得各地水利失修,吏治混乱。而战乱又往往伴随着天灾,这一时期,灾荒连年,中原与黄河地区各地人口便开始大量流亡,向南方迁移。《晋书·李特载记》中记载,这段时期关中人口有十余万流入汉川,河东、平阳、弘农、上党诸郡人民流入颍川、汝南、南阳、河南的有数万家。《晋书·杜弢传》中也记载了类似情况,益州流民流入荆、湘的也有数万家。
时人刘琨曾上书陈述:“自涉州疆,目睹困乏,流民四散,十不存二,携老扶幼,不绝于路。”以上这些所述就是当时的一大严重社会问题——“流民南迁”。
流民的大量南迁,在给南方带去北方的生产经验与先进文化的同时,也面临着一个十分现实的“吃住”问题。当时的南方经济相对北方落后,在北人南迁之初,没有足够的能力负担几十万人口的“吃住”,所以当地居民排挤流民,流民的生活处境十分尴尬。这样南渡的北人与当地居民的摩擦无法避免了。当时的巴蜀流民在荆、湘为当地百姓排挤,没有了活路,最终在李特的率领下起而暴动。
当时西北地区发生了一场大饥荒,十几万老百姓吃不上饭,饿得连地上的草都拔下来吃光了。西晋王朝的行政机构已经瘫痪,当地官员面对灾患自顾不暇,对百姓则不管不问。十几万人实在没法子活了,只好离开家乡逃到四川一带讨生活。
在逃难的人中有一个氐族人名叫李特,他和自己的兄弟们也跟着流民一起逃荒。李特为人善良,一路上,自己本来就吃不饱,还把粮食分给其他人吃。有的人身体弱,一路上又饿又冷,病倒了,李特更是把他们当成自己的兄弟一样照顾。流民们为李特的行为所感动,都说:“要是没有李特的话,我们早就死啦!”日子久了,流民们都把李特当成了大哥,什么事情都愿意听他的。
可李特个人的力量毕竟有限,还是有很多人死在了路上。好不容易到了四川,大家想:该松口气了吧?没曾想治理四川的罗尚想割据一方,为了维护当地的秩序,他把城门紧闭,毫不在乎流民的死活,并且设法驱逐流民。
流民们被断了生路,听到罗尚要驱逐他们的消息,人人都发愁叫苦。
这时李特对流民们说:“大家先别愁,咱们回是回不去了,走也不能走,还是想想眼前的,先修个寨子,这么多人总得有个地方住啊!”
流民们听了都觉得有道理,大家就一齐动手,很快就把寨子建好了,约两万人有了自己的住处。没用当地官府一分钱,就解决了流民的吃住问题。李特建起了流民大营,罗尚感到恐惧,觉得威胁到了他的统治利益,就要调兵把流民都赶走,准备下令军队去抢劫流民的财物。
李特得到消息后,知道事到如今,已经没有别的办法,只有铤而走险了!于是,李特下令,让流民们准备好武器,严阵以待。流民们哪有什么像样的武器,无非是些简单的刀枪和棍棒。
过了几天,在一个漆黑的夜晚,罗尚带着三万人,偷偷摸摸地来到李特的寨子前,还没等他下令抢劫杀人,流民们就已经冲杀出来。流民们已经没有活路,虽然所使用的武器简单,但人人都奋勇当先,反正不打也是死,都豁出去了!而官兵本来就心虚,结果一交手就被击败,四处逃窜了,只有两个倒霉的军官没跑掉,被流民用棒子打死了。
流民们杀了官兵后,知道官兵肯定不会罢休,于是干脆反了!大家推举李特为大将军领导他们。流民组成的军队在李特带领下,纪律严明,很快就攻下了两座城池。他占领城池以后开仓放粮,救济当地的贫苦百姓。
李特的地位因此得到了确立。后来李特战死,他的儿子李雄在四川建立了成汉政权。李特领导的这次流民暴动发生在公元301年。
李特暴动是流民暴动的开始,接着暴动就不断发生。主要的暴动,有王弥在青、徐等地的暴动;张昌在江、汉间的暴动;王如在豫、荆的暴动;杜弢在荆、湘的暴动。在暴动的流民队伍中,也有当地百姓参加。在流民和各地民众起来反抗晋的统治的同时,以匈奴人为主的内迁各族的反晋活动也在酝酿。
游牧民族很早就已经开始内迁,在内迁的各民族中,以北方的匈奴人为最多。早在三国建安年间,曹操分匈奴为五部,立部中贵者为帅,选汉人为司马,对匈奴进行监督。曹魏末年,改匈奴帅为都尉。匈奴五部,左部都尉领有万余落,居太原故兹氏县;右部都尉六千余落,居祁县;南部都尉三千余落,居蒲子县;北部都尉四千余落,居新兴县;中部都尉六千余落,居太陵县。西晋武帝时期,塞外匈奴地区发生水患,匈奴人为躲水灾,开始大量内迁,先有两万余落徙居于河西故宜阳城下。此后平阳、西河、太原、新兴、上党、乐平诸郡到处都可见匈奴人身影。除了匈奴人进行了大规模的内迁外,另外还有鲜卑、羯、氐和羌四个少数民族,历史上称这五个少数民族的内迁为“五胡内迁”。
内迁后的游牧民族多被汉化,他们与汉人杂居,往往受汉族官吏和地方权贵的欺辱。汉人地主常以匈奴人为田客,多者达数千人,将匈奴人作为奴婢买卖,更有甚者,则公开掠卖并州胡人。匈奴右贤王刘宣曾愤恨地说:“自汉亡以来,魏晋代兴。我单于虽有虚号,无复尺土之业。自诸王侯,降同编户……晋为无道,奴隶御我。”匈奴人所受汉人压迫最深,所居汉地数量最大。因此,在五胡中,匈奴人最先起兵反晋。
公元304年,匈奴贵族刘渊起兵反晋,即汉王位于左国城,自称为汉王,表明他是接续汉朝的帝统,将与西晋一争天下。当时,王浚、司马腾讨成都王颖。颖以刘渊为北单于、参丞相军事,借匈奴人抵抗晋军。于是刘渊趁机起兵,只十日间,就得众五万人。他的军队在河北没有遇到有力的抵抗,很快就占领了并州一带地区。
刘渊起兵后不久,其他内迁的少数民族也都纷纷起兵。刘渊以外,在西晋末年另一支重要的起义少数民族武装由羯人石勒所率领。石勒是上党羯人,其父祖都是羯人部落中的小头目。惠帝末年,并州荒歉,并州刺史东嬴公司马腾掠取胡人,卖到山东做奴隶,以换取军粮。石勒当时二十余岁,也被卖到茌平师懽家为奴。后来,被师懽放免为田客。刘渊起兵后,石勒是与牧人魏郡汲桑共同起兵的,最初的基本部卒是牧人,他们牧人数百骑投奔了赵魏的公师藩。不久,公师藩为濮阳太守苟晞所杀,石勒和汲桑就亡伏宛中。后来,石勒通过劫掠郡县系囚、招纳山泽亡命之徒等方法,将自己的队伍逐渐壮大了起来。
可以看出,无论是刘渊的起兵还是石勒的起事,其最初的性质都是被压迫者反抗统治阶级的一种阶级斗争,是被降为田客、奴隶的已经汉化了的内迁的游牧民族对晋统治者的反抗。但随着后来事态的发展,内迁民族的本民族意识开始觉醒,取得胜利的内迁民族开始对汉族人民采取一系列的报复手段,民族斗争的色彩也就浓厚起来了。
怀帝永嘉三年(309年),刘渊派其子刘聪两次进攻洛阳。第二年,刘渊死,刘聪继位。此时的洛阳周围地区或遭破坏,或为刘聪、石勒所占领,洛阳城内饥困日甚。实际操纵西晋政权的东海王司马越自知洛阳难守,就以出讨石勒为名,率领剩余军队和满朝文武公卿离开了洛阳,东屯于项。公元311年三月,司马越病死。石勒听说后,立即率骑兵对失去主帅的司马越军进行追杀,于苦县宁平城大败晋兵。《资治通鉴》中说,石勒对司马越军,“从骑围而射之”,最终司马越军“将士十余万人相践如山,无一人得免者”。同年五月,刘聪攻陷洛阳,晋王公百官及百姓被杀者多达三万多人。晋怀帝被掳到平阳为奴。
晋怀帝被掳后,西晋遗老遗少们又立司马邺为愍帝于长安。此时经连年战乱,“长安城中,户不盈百,墙宇颓毁,蒿棘成林,朝廷无车马章服,唯桑版署号而已”。就是在这种情况下,晋人与刘聪军又经过了五年的苦战,公元316年,刘聪遣刘曜攻长安,愍帝再也无力坚守,最后出降。怀、愍两帝受尽刘聪侮辱后,为其所杀。公元317年,晋愍帝被杀,宣告了西晋的灭亡。